pandiag.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # cybergavin - March 10th, 2020
  2. # This script obtains diagnostic data for Palo Alto Networks Support to troubleshoot an existing issue, should it recur.
  3. # ATTENTION: The PAN CLI commands were provided by PAN Support for execution via ttl (Tera Term) and have been ported to a shell script.
  4. # To be tested for at least a week with monitoring of resource utilization and checks for any adverse impact, before deployment on Production.
  5. # Set up the following crontab for housekeeping:
  6. # 0 * * * * find <dir> -type f -name "pandiag_2020*.txt" -mmin +120 | xargs -i gzip {}
  7. # * * * * 0 find <dir> -type f -name "pandiag_2020*.txt.gz" -mtime +7 | xargs -i rm -f {}
  8. ###########################################################################################################################################################
  9. #
  10. # User-defined Variables
  11. #
  12. ro_user=pandiag # Read-only User with SSH key for SSH access to firewall
  13. active_firewall=XX.XX.XX.XX # Active firewall IP/FQDN
  14. mon_freq=5 # Monitoring frequency in seconds
  15. #
  16. # Determine Script Location and define directories
  17. #
  18. if [ -n "`dirname $0 | grep '^/'`" ]; then
  19. SCRIPT_LOCATION=`dirname $0`
  20. elif [ -n "`dirname $0 | grep '^..'`" ]; then
  21. cd `dirname $0`
  22. SCRIPT_LOCATION=$PWD
  23. cd - > /dev/null
  24. else
  25. SCRIPT_LOCATION=`echo ${PWD}/\`dirname $0\` | sed 's#\/\.$##g'`
  26. fi
  27. SCRIPT_NAME=`basename $0`
  28. #
  29. # Main
  30. #
  31. while [ true ]
  32. do
  33. tdate=`date '+%Y%m%d%H'`
  34. datafile=${SCRIPT_LOCATION}/${SCRIPT_NAME%%.*}_${tdate}.txt
  35. echo "===== `date` =====" >> $datafile
  36. ssh ${ro_user}@${active_firewall}<<EOF >> $datafile
  37. set cli pager off
  38. set cli scripting-mode on
  39. show counter global filter delta yes
  40. show running resource-monitor ingress-backlogs
  41. show running resource-monitor second last 10
  42. exit
  43. EOF
  44. sleep $mon_freq
  45. done