Advertisement
Guest User

Untitled

a guest
Jun 28th, 2021
713
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.32 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # OpenDNS Stats Fetcher
  4. # Brian Hartvigsen <brian.hartvigsen@opendns.com>
  5. # Richard Crowley <richard@opendns.com>
  6. # JvdZ - 2018 oktober - small changes made due error "login failed. check username and password."
  7. #
  8.  
  9. CSVURL="https://dashboard.opendns.com"
  10. LOGINURL="https://login.opendns.com/?source=dashboard"
  11.  
  12. usage() {
  13.     echo "Usage: $0 <username> <network_id> <YYYY-MM-DD> [<YYYY-MM-DD>]" >&2
  14.     exit 1
  15. }
  16.  
  17. date_check() {
  18.     case "$1" in
  19.         [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])
  20.             ;;
  21.         *)
  22.             echo "Error: dates must be in the YYYY-MM-DD form" >&2
  23.             exit 2
  24.             ;;
  25.     esac
  26. }
  27.  
  28. USERNAME=$1
  29. if [ -z "$USERNAME" ] ; then usage ; fi
  30. NETWORK_ID="$2"
  31. if [ -z "$NETWORK_ID" ] ; then usage ; fi
  32. date_check "$3"
  33. if [ -z "$4" ] ; then
  34.     DATE="$3"
  35. else
  36.     date_check "$4"
  37.     DATE="$3to$4"
  38. fi
  39.  
  40. echo -n "Password for $USERNAME: " >&2
  41. stty -echo
  42. read PASSWORD
  43. stty echo
  44. echo "" >&2
  45.  
  46. PASSWORD=`echo -n "$PASSWORD" | od -A n -t x1 | tr -d '\n' | sed 's/ *$//;s/[ ]\{1,\}/%/g'`
  47. USERNAME=`echo -n "$USERNAME" | od -A n -t x1 | tr -d '\n' | sed 's/ *$//;s/[ ]\{1,\}/%/g'`
  48.  
  49. COOKIEJAR=`mktemp /tmp/opendns-fetchstats-XXXXXX`
  50.  
  51. # Get the signin page's form token
  52. FORMTOKEN=`curl --silent --insecure --cookie-jar "$COOKIEJAR" "$LOGINURL" | grep -m 1 formtoken | sed 's/^.*name="formtoken" value="\([0-9a-f]*\)".*$/\1/' `
  53.  
  54. # Sign into OpenDNS
  55. SIGNIN=`curl --silent --insecure --cookie "$COOKIEJAR" --cookie-jar "$COOKIEJAR" --data "username=$USERNAME" --data "password=$PASSWORD" --data "return_to=$CSVURL" --data "formtoken=$FORMTOKEN"  "$LOGINURL" | grep "firstName" `
  56.  
  57.  
  58. if [ "$SIGNIN" == "" ]; then
  59.  echo "Login failed.  Check username and password." >&2
  60.  exit 2
  61. fi
  62.  
  63. # Fetch pages of Top Domains
  64. GO="yes"
  65. PAGE=1
  66. while [ "yes" == "$GO" ] ; do
  67.     CSV=`curl --silent --insecure \
  68.         --cookie "$COOKIEJAR" \
  69.         "$CSVURL/stats/$NETWORK_ID/topdomains/$DATE/page$PAGE.csv" \
  70.     `
  71.     if [ "$PAGE" == "1" ]; then
  72.         if [ "$CSV" == "" ]; then
  73.             echo "You can not access $NETWORK_ID" >&2
  74.             exit 2
  75.         fi
  76.         HEADING=`echo "$CSV" | head -n 1`
  77.         if [[ "$HEADING" == *DOCTYPE* ]]; then
  78.            echo "Error retrieving data.  Date range may be outside of available data." >&2
  79.         exit 2
  80.         fi
  81.     else
  82.         CSV=`echo "$CSV" | tail -n +2`
  83.     fi
  84.  
  85.     if [ -z "$CSV" ] ; then GO="no"
  86.     else echo "$CSV" ; fi
  87.     PAGE=$(($PAGE + 1))
  88. done
  89.  
  90. rm -f "$COOKIEJAR"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement