mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-26 14:27:14 +00:00 
			
		
		
		
	This patch updates the autosupport script to collect all information available to the Asterisk CLI command "digium_phones". It also makes minor improvements in options handling. (closes issue AST-1163) Reported by: Trey Blancher patches: 390347_autosupport.diff uploaded by tblancher (License 5821) 390348_autosupport.diff uploaded by tblancher (License 5821) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			630 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			630 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Autosupport Version 2.1.0
 | |
| # Collect support information
 | |
| #
 | |
| # Copyright (C) 2005-2013, Digium, Inc.
 | |
| #
 | |
| # Written by John Bigelow (support@digium.com)
 | |
| #            Charles Moye (cmoye@digium.com)
 | |
| #            Trey Blancher (trey@digium.com)
 | |
| #
 | |
| # Distributed under the terms of the GNU General Public
 | |
| # License
 | |
| #
 | |
| # usage:
 | |
| # autosupport [prefix]
 | |
| # ARGUMENTS:
 | |
| # prefix - Prefix to tarball. (Referenced as $1)
 | |
| #      Example: autosupport <Your Digium Technical Support Ticket number>
 | |
| 
 | |
| # Ensure the PATH variable includes '/usr/sbin' and '/sbin'
 | |
| PATH=/usr/sbin:/sbin:${PATH}
 | |
| 
 | |
| DATE_STAMP=$(date +%F)
 | |
| OUTPUT_FILE=digiuminfo.txt
 | |
| TARBALL_OUTPUT_FILE="digium-info_${DATE_STAMP}.tar"
 | |
| VAR_LIB_LIST_FILE="list-of-varlibasterisk.txt"
 | |
| FILE_PREFIX=
 | |
| FOLDER_PREFIX="${HOME}/"
 | |
| files="n";
 | |
| NONINTERACTIVE=0
 | |
| 
 | |
| 
 | |
| # If a prefix is specified on command-line, add it.
 | |
| if (set -u; : $1) 2> /dev/null
 | |
| then
 | |
|   if [ $1 = "-h" ] || [ $1 = "--help" ]; then
 | |
|     echo
 | |
|     echo "Digium autosupport script"
 | |
|     echo "Copyright (C) 2005-2013, Digium, Inc."
 | |
|     echo "Licensed under the terms of the GNU General Public License"
 | |
|     echo
 | |
|     echo "usage: autosupport [prefix]"
 | |
|     echo "Valid Options:"
 | |
|     echo "   [prefix]			Prefix to apply to output files"
 | |
|     echo "				May be your existing Digium Technical Support Ticket ID"
 | |
|     echo "   -n, --non-interactive	Run without requiring user input"
 | |
|     echo "   -h, --help			Show help about options"
 | |
|     echo
 | |
|     echo "Example:"
 | |
|     echo "    autosupport XXXXXXXX"
 | |
|     echo "Generates:"
 | |
|     echo "    XXXXXXXX_${OUTPUT_FILE}"
 | |
|     echo "    XXXXXXXX_${TARBALL_OUTPUT_FILE}"
 | |
|     echo
 | |
|     exit
 | |
|   elif [ $1 = "-n" ] || [ $1 = "--non-interactive" ]; then
 | |
|     FILE_PREFIX=
 | |
|     NONINTERACTIVE=1
 | |
|   else
 | |
|     FILE_PREFIX="${FILE_PREFIX}${1}_";
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| MYUID=$(id -u);
 | |
| 
 | |
| if [ $MYUID -ne  0 ]; then
 | |
|   echo "You must be root to run this."
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| SUPPORTED_MODULES="wcb4xxp wct4xxp wctc4xxp wctdm wctdm24xxp wcte11xp wcte12xp"
 | |
| RELATED_MODULES="$SUPPORTED_MODULES dahdi_dummy dahdi_transcode dahdi_vpmadt032_loader zaptel ztdummy zttranscode";
 | |
| 
 | |
| OUTPUT_FILE="${FILE_PREFIX}${OUTPUT_FILE}"
 | |
| TARBALL_OUTPUT_FILE="${FILE_PREFIX}${TARBALL_OUTPUT_FILE}"
 | |
| VAR_LIB_LIST_FILE="${FILE_PREFIX}${VAR_LIB_LIST_FILE}"
 | |
| 
 | |
| OUTPUT="${FOLDER_PREFIX}${OUTPUT_FILE}"
 | |
| TARBALL_OUTPUT="${FOLDER_PREFIX}${TARBALL_OUTPUT_FILE}"
 | |
| VAR_LIB_LIST="${FOLDER_PREFIX}${VAR_LIB_LIST_FILE}"
 | |
| 
 | |
| # Done with setup, now start gathering information.
 | |
| 
 | |
| # function not implemented yet
 | |
| determine_paths()
 | |
| {
 | |
|   ASTERISK_PROCESS=$(ps -o cmd -C asterisk | grep asterisk 2> /dev/null)
 | |
| echo "detected process: $ASTERISK_PROCESS";
 | |
|   # split on whitespace? or use sed/awk to parse
 | |
|   # get first arg which will be path to Asterisk binary - add this to PATH
 | |
|   # look for a '-C' if that is present, get the arg after it, and make the tarball collect that directory
 | |
|   ## in addition to /etc/asterisk/ or instead of it?
 | |
| }
 | |
| 
 | |
| collect_digiuminfo()
 | |
| {
 | |
| # Delete existing OUTPUT
 | |
| [ -f $OUTPUT ] && rm -rf $OUTPUT
 | |
| 
 | |
| # Sanity Checks
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "Sanity" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| md5sum $0 >> $OUTPUT;
 | |
| grep "Autosupport Version" $0 | head -n1 >> $OUTPUT
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "Working";
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "UPTIME : uptime" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| uptime >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "MEMORY : free" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| free >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "KERNEL VERSION : uname -a" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| uname -a >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "VERSION INFO : cat /proc/version" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| cat /proc/version >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "CMDLINE INFO : cat /proc/cmdline" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| cat /proc/cmdline >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| # Check for loaded Zaptel/DAHDI modules
 | |
| for module in dahdi zaptel; do
 | |
|   if [ -d /sys/module/$module ]; then
 | |
|     echo "------------------" >> $OUTPUT
 | |
|     echo "$module version:" >> $OUTPUT
 | |
|     echo "------------------" >> $OUTPUT
 | |
|     echo "/sys/module/$module/version: " >> $OUTPUT
 | |
|     cat /sys/module/$module/version 2> /dev/null >> $OUTPUT
 | |
|     echo "" >> $OUTPUT;
 | |
|     echo -n "."
 | |
|   fi
 | |
| done
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "DAHDI TOOLS : dahdi_cfg --help" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| dahdi_cfg --help 2>&1 | grep "Version" >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "DAHDI HARDWARE : dahdi_hardware" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| dahdi_hardware >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "ASTERISK INFO : asterisk -V" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "asterisk -V:" >> $OUTPUT;
 | |
| asterisk -V >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| # Add check to see if asterisk is running.
 | |
| if [ -e /var/run/asterisk.ctl ] || [ -e /var/run/asterisk/asterisk.ctl ]; then
 | |
|   for command in "show version" "core show version" "pri show version" "dahdi show version" "transcoder show" \
 | |
|       "core show uptime" "pri show spans" "misdn show stacks" "zap show channels" "dahdi show status" "dahdi show channels" \
 | |
|       "dahdi show channel 1" "core show channels" "skype show version" "skype show licenses" "skype show users" \
 | |
|       "skype show hostid" "show g729" "g729 show version" "g729 show licenses" "g729 show hostid" "fax show version" \
 | |
|       "fax show licenses" "fax show hostid" "fax show stats" "digium_phones show version" "digium_phones show alerts" \
 | |
| 			"digium_phones show applications" "digium_phones show firmwares" "digium_phones show lines" "digium_phones show networks" \
 | |
| 			"digium_phones show phones" "digium_phones show sessions" "digium_phones show settings" "digium_phones show translations" ;
 | |
| 	do
 | |
|     echo "asterisk -rx \"$command\"" >> $OUTPUT;
 | |
|     asterisk -rx "$command" >> $OUTPUT;
 | |
|     echo >> $OUTPUT;
 | |
|     echo -n "."
 | |
|   done
 | |
|   echo >> $OUTPUT;
 | |
| fi
 | |
| 
 | |
| 
 | |
| for type in alerts applications firmwares lines networks phones translations; 
 | |
| do 
 | |
| 	echo "------------------" >> $OUTPUT; 
 | |
| 	echo "DIGIUM PHONE: $type " >> $OUTPUT; 
 | |
| 	echo "------------------" >> $OUTPUT; 
 | |
| 	TEMP=$(asterisk -rx "digium_phones show $type"); 
 | |
| 	if [ "$type" = "lines" ];
 | |
| 	then
 | |
| 		NUM=$(echo $TEMP | tail -n 1 | awk -F' ' '{print $(NF-4)}');
 | |
| 		if [ $NUM -gt 0 ];
 | |
| 		then
 | |
| 			for l in $(echo $TEMP | sed 's/^--- [[:alpha:]]\+ --- //; 
 | |
| 				s/Lines \(Un-\)\?Mapped to Phones --- //g; 
 | |
| 				s/ Internal//g; 
 | |
| 				s/---- [a-zA-Z0-9 ]\+ ----$//;
 | |
| 				s/--- //g');
 | |
| 			do
 | |
| 				asterisk -rx "digium_phones show line $l" >> $OUTPUT;                                                                      
 | |
| 				echo "--------" >> $OUTPUT;                                                                                                                         
 | |
| 				echo >> $OUTPUT; 
 | |
| 			done
 | |
| 		else
 | |
| 			echo "No configurations of type $type..." >> $OUTPUT;
 | |
| 			echo >> $OUTPUT;
 | |
| 		fi;
 | |
| 	elif [ "$type" = "firmwares" ];
 | |
| 	then
 | |
| 		for f in $(echo $TEMP | sed 's/--- Configured Firmware Options --- //');
 | |
| 		do
 | |
| 			asterisk -rx "digium_phones show firmware $f" >> $OUTPUT;
 | |
| 			echo "--------" >> $OUTPUT;                                                                                                                         
 | |
| 			echo >> $OUTPUT; 
 | |
| 		done
 | |
| 	elif [ "$type" = "translations" ];
 | |
| 	then
 | |
| 		for t in $(echo $TEMP | sed 's/--- Translation tables ---//');
 | |
| 		do
 | |
| 			asterisk -rx "digium_phones show translation $t" 
 | |
| 		done
 | |
| 	else
 | |
| 		NUM=$(echo $TEMP | tail -n 1 | awk -F' ' '{print $(NF-3)}'); 
 | |
| 		if [ $NUM -gt 0 ]; 
 | |
| 		then   
 | |
| 			for t in $(echo $TEMP | sed 's/^--- [[:alpha:]]\+ --- //; 
 | |
| 																	 s/---- [a-zA-Z0-9 ]\+ ----$//
 | |
| 																	 s/---- Digium Phones ---- //'); 
 | |
| 			do 
 | |
| 				asterisk -rx "digium_phones show $(echo $type | sed 's/s\b//') $t" >> $OUTPUT; 
 | |
| 				echo "--------" >> $OUTPUT; 
 | |
| 				echo >> $OUTPUT; 
 | |
| 			done; 
 | |
| 		else 
 | |
| 			echo "No configurations of type $type..." >> $OUTPUT;
 | |
| 			echo >> $OUTPUT;
 | |
| 		fi;
 | |
| 	fi;
 | |
| done;
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "OTHER INFO : cat /etc/*{issue,release,version}*" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| for file in $(ls /etc/*issue* /etc/*release* /etc/*version* \
 | |
|   /etc/*motd* /etc/asterisknow-version /dev/zap/ /dev/dahdi/ \
 | |
|   2> /dev/null); do
 | |
|   if [ -f $file ]; then
 | |
|     echo "$file:" >> $OUTPUT;
 | |
|     cat $file >> $OUTPUT;
 | |
|     echo >> $OUTPUT;
 | |
|     echo -n "."
 | |
|   fi
 | |
| done
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "TOP : top -bn1" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| top -bn1 >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "RUNNING PROCESSES : ps aux" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| ps aux >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "INTERRUPTS : cat /proc/interrupts" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| cat /proc/interrupts >> $OUTPUT;
 | |
| echo -n "."
 | |
| sleep 2;
 | |
| echo "---------- sleep(2) ----------" >> $OUTPUT;
 | |
| cat /proc/interrupts >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "DAHDI SCAN : dahdi_scan" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| dahdi_scan >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "----------------------------" >> $OUTPUT;
 | |
| echo "CAT OF DAHDI/ZAPTEL CHANNELS : cat /proc/dahdi/" >> $OUTPUT;
 | |
| echo "----------------------------" >> $OUTPUT;
 | |
| for tech in dahdi zaptel zap; do
 | |
|   if [ -d /proc/$tech/ ]; then
 | |
|     for file in $(ls /proc/$tech/ 2> /dev/null); do
 | |
|       echo "----------------------------" >> $OUTPUT;
 | |
|       echo "/proc/$tech/$file:" >> $OUTPUT;
 | |
|       cat /proc/$tech/$file >> $OUTPUT;
 | |
|       echo >> $OUTPUT;
 | |
|       echo -n "."
 | |
|     done
 | |
|   fi
 | |
| done
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "DMESG OUTPUT : dmesg" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| dmesg >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "LOADED MODULES : lsmod" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| lsmod >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| # Grab the parameters for each module
 | |
| for mod in $SUPPORTED_MODULES; do
 | |
|   if [ -d /sys/module/$mod ]; then
 | |
|     echo "------------------" >> $OUTPUT
 | |
|     echo "$mod parameters" >> $OUTPUT
 | |
|     echo "------------------" >> $OUTPUT
 | |
|     echo "/sys/module/$mod/parameters:" >> $OUTPUT
 | |
|     for param in $(ls /sys/module/$mod/parameters/ /sys/module/$mod/ 2> /dev/null); do
 | |
|       if [ -f /sys/module/$mod/parameters/$param ]; then
 | |
|         echo -n "$param:  " >> $OUTPUT
 | |
|         cat /sys/module/$mod/parameters/$param 2> /dev/null >> $OUTPUT
 | |
|       elif [ -f /sys/module/$mod/$param ]; then
 | |
|         # Handle Zaptel doing it differently
 | |
|         echo -n "$param:  " >> $OUTPUT
 | |
|         cat /sys/module/$mod/$param 2> /dev/null >> $OUTPUT
 | |
|       fi
 | |
|       echo -n "."
 | |
|     done
 | |
|     echo >> $OUTPUT
 | |
|   fi
 | |
| done
 | |
| 
 | |
| echo "------------------------" >> $OUTPUT;
 | |
| echo "DAHDI/ZAPTEL MODULE INFO : modinfo" >> $OUTPUT;
 | |
| echo "------------------------" >> $OUTPUT;
 | |
| for file in $(ls /lib/modules/$(uname -r)/dahdi/*.ko \
 | |
|   /lib/modules/$(uname -r)/dahdi/*/*.ko\
 | |
|   /lib/modules/$(uname -r)/extra/*.ko \
 | |
|   /lib/modules/$(uname -r)/extra/*/*.ko \
 | |
|   /lib/modules/$(uname -r)/misc/*.ko \
 | |
|   /lib/modules/$(uname -r)/misc/*/*.ko 2> /dev/null); do
 | |
|   if [ -f $file ]; then
 | |
|     echo "------------------------" >> $OUTPUT;
 | |
|     modinfo $file >> $OUTPUT;
 | |
|     echo >> $OUTPUT;
 | |
|     echo -n "."
 | |
|   fi
 | |
| done
 | |
| echo "------------------------" >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "PCI LIST : lspci -vvvb" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| lspci -vvvb >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "PCI LIST(no lookup) : lspci -vvvbn" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| lspci -vvvbn >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "CPU INFO : cat /proc/cpuinfo" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| cat /proc/cpuinfo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "----------------------" >> $OUTPUT;
 | |
| echo "VPM FIRMWARE INSTALLED : ls -la /lib/firmware" >> $OUTPUT;
 | |
| echo "----------------------" >> $OUTPUT;
 | |
| $(ls -la /lib/firmware 2> /dev/null >> $OUTPUT);
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "NETWORK INFO : route -n; iptables -L; ifconfig -a" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| route -n 2> /dev/null >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| iptables -L 2> /dev/null >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| ifconfig -a 2> /dev/null >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "DMIDECODE : dmidecode" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| dmidecode >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| echo -n "."
 | |
| 
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "KERNEL CONFIG : cat /path/.config" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| for file in /lib/modules/$(uname -r)/build/.config /usr/src/linux/.config; do
 | |
|   if [ -f $file ]; then
 | |
|     echo "------------------" >> $OUTPUT;
 | |
|     echo "$file:" >> $OUTPUT;
 | |
|     cat $file >> $OUTPUT;
 | |
|     echo >> $OUTPUT;
 | |
|     echo -n "."
 | |
|   fi
 | |
| done
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| FIRMWARE_DIR=`grep firmware_package_directory /etc/asterisk/res_digium_phone.conf|sed 's/;.*$//;'|grep firmware|sed 's/firmware_package_directory=//;'`;
 | |
| if [ `echo $FIRMWARE_DIR|egrep -v '^$'|wc -l` -eq "0" ]
 | |
| then
 | |
|   FIRMWARE_DIR="/var/www/firmware_package_directory"
 | |
| fi
 | |
| echo "------------------" >> $OUTPUT;
 | |
| echo "FIRMWARE LISTING: ls -al $FIRMWARE_DIR" >> $OUTPUT;
 | |
| echo "------------------" >> $OUTPUT;
 | |
| ls -al $FIRMWARE_DIR >> $OUTPUT;
 | |
| echo >> $OUTPUT;
 | |
| 
 | |
| FIRMWARE_URLS=`grep file_url_prefix /etc/asterisk/res_digium_phone.conf|sed 's/;.*$//;'|grep file|sed 's/file_url_prefix=//;'`;
 | |
| for FIRMWARE_URL in $FIRMWARE_URLS; do
 | |
|   echo "------------------" >> $OUTPUT;
 | |
|   echo "REMOTE FIRMWARE LISTING: wget $FIRMWARE_URL" >> $OUTPUT;
 | |
|   echo "------------------" >> $OUTPUT;
 | |
|   wget "$FIRMWARE_URL" -O- 2>/dev/null >> $OUTPUT;
 | |
|   echo >> $OUTPUT;
 | |
| done
 | |
| 
 | |
| echo "done!"
 | |
| }
 | |
| 
 | |
| collect_var_lib_list()
 | |
| {
 | |
|   # Delete existing VAR_LIB_LIST
 | |
|   [ -f $VAR_LIB_LIST ] && rm -rf $VAR_LIB_LIST
 | |
|   DIR_LISTING="/var/lib/asterisk/"
 | |
|   if [ -d /var/lib/digium ]; then
 | |
|     DIR_LISTING="/var/lib/digium/ ${DIR_LISTING}"
 | |
|   fi
 | |
|   if [ -d /usr/lib/asterisk/modules/ ]; then
 | |
|     DIR_LISTING="/usr/lib/asterisk/modules/ ${DIR_LISTING}"
 | |
|   fi
 | |
|   echo "ls -1aAR $DIR_LISTING > $VAR_LIB_LIST"
 | |
|   $(ls -1aR ${DIR_LISTING} | sed -e '/^\.\.*$/d' > $VAR_LIB_LIST);
 | |
| }
 | |
| 
 | |
| collect_config_backup()
 | |
| {
 | |
|   collect_var_lib_list
 | |
|   # Include the /etc/asterisk directory, modprobe.conf, and the modprobe.d directory
 | |
|   TAR_FILES="/etc/asterisk/ /etc/modprobe.*"
 | |
| 
 | |
|   # Check if any Asterisk licenses are installed
 | |
|   # G.729, Fax, ABE, Cepstral, Skype, etc.
 | |
|   if [ -d /var/lib/asterisk/licenses/ ]; then
 | |
|     TAR_FILES="$TAR_FILES /var/lib/asterisk/licenses/*"
 | |
|   fi
 | |
| 
 | |
|   # Check if any Digium licenses are installed
 | |
|   # HPEC
 | |
|   if [ -d /var/lib/digium/licenses/ ]; then
 | |
|     TAR_FILES="$TAR_FILES /var/lib/digium/licenses/*"
 | |
|   fi
 | |
| 
 | |
|   # Check if DAHDI is installed
 | |
|   if [ -d /etc/dahdi ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/dahdi*"
 | |
|   fi
 | |
| 
 | |
|   # Check for Zaptel Module configuration
 | |
|   if [ -f /etc/sysconfig/zaptel ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/sysconfig/zaptel*"
 | |
|   fi
 | |
| 
 | |
|   # Check for Zaptel Module configuration (alternate location)
 | |
|   if [ -f /etc/default/zaptel ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/default/zaptel*"
 | |
|   fi
 | |
| 
 | |
|   # Grab the dahdi/zaptel init scripts, in case they have been modified
 | |
|   for driver in dahdi zaptel; do
 | |
|     if [ -f /etc/init.d/$driver ]; then
 | |
|       TAR_FILES="$TAR_FILES /etc/init.d/$driver"
 | |
|     fi
 | |
|   done
 | |
| 
 | |
|   # Check for zaptel.conf
 | |
|   if [ -f /etc/zaptel.conf ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/zaptel*"
 | |
|   fi
 | |
| 
 | |
|   # Check for fxotune.conf
 | |
|   if [ -f /etc/fxotune.conf ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/fxotune.conf*"
 | |
|   fi
 | |
| 
 | |
|   # Check for misdn-init.conf
 | |
|   if [ -f /etc/misdn-init.conf ]; then
 | |
|     TAR_FILES="$TAR_FILES /etc/misdn-init.conf*"
 | |
|   fi
 | |
| 
 | |
|   # Check for digiuminfo.txt
 | |
|   if [ -f $HOME/$OUTPUT_FILE ]; then
 | |
|     TAR_FILES="$TAR_FILES $OUTPUT_FILE"
 | |
|   fi
 | |
| 
 | |
|   # Check for asterisk listing
 | |
|   if [ -f $VAR_LIB_LIST ]; then
 | |
|     TAR_FILES="$TAR_FILES $VAR_LIB_LIST_FILE"
 | |
|   fi
 | |
| 
 | |
|   # Collect System Log Files
 | |
|   if [ -f /var/log/dmesg ]; then
 | |
|     TAR_FILES="$TAR_FILES /var/log/dmesg"
 | |
|   fi
 | |
|   if [ -f /var/log/messages ]; then
 | |
|     TAR_FILES="$TAR_FILES /var/log/messages"
 | |
|   fi
 | |
| 
 | |
|   [ -f $TARBALL_OUTPUT ] && rm -rf $TARBALL_OUTPUT
 | |
|   [ -f $TARBALL_OUTPUT.gz ] && rm -rf $TARBALL_OUTPUT.gz
 | |
| 
 | |
|   echo "tarring: tar -chvf ${TARBALL_OUTPUT} $TAR_FILES"
 | |
|   cd $HOME && tar -chvf $TARBALL_OUTPUT $TAR_FILES
 | |
|   echo "gzipping $TARBALL_OUTPUT"
 | |
|   gzip $TARBALL_OUTPUT
 | |
| }
 | |
| 
 | |
| collect()
 | |
| {
 | |
|   echo "This may take up to half a minute to run. Please be patient."
 | |
|   collect_digiuminfo;
 | |
|   collect_config_backup;
 | |
| 
 | |
|   # ensure the output was written
 | |
|   if [ -f $TARBALL_OUTPUT.gz ]; then
 | |
|     clear;
 | |
|     echo;
 | |
|     echo;
 | |
|     echo "Tarball has been stored to:"
 | |
|     echo "$TARBALL_OUTPUT.gz"
 | |
|     echo "Please send this file to an email case you already"
 | |
|     echo "have open with Digium Tech Support."
 | |
|   else
 | |
|     echo;
 | |
|     echo;
 | |
|     echo "An error has occurred in capturing information."
 | |
|     echo "$TARBALL_OUTPUT.gz was not found."
 | |
|     echo;
 | |
|     echo "Please investigate your system, and send the output"
 | |
|     echo "above to your Digium Technical Support Ticket."
 | |
|   fi
 | |
| }
 | |
| 
 | |
| clear;
 | |
| 
 | |
| if [ $NONINTERACTIVE -eq 1 ]; then
 | |
|   collect;
 | |
| else
 | |
|   echo
 | |
|   echo "This script will try to collect the following pieces of"
 | |
|   echo "information from your system."
 | |
|   echo
 | |
|   echo "1. Information about your system such as:"
 | |
|   echo "pci listing, dmesg, running processes, and kernel version"
 | |
|   echo
 | |
|   echo "2. A backup of elements of your configuration such as:"
 | |
|   echo "asterisk config files, license files, loaded dahdi/zaptel module"
 | |
|   echo "parameters, and other asterisk/dahdi/zaptel related files."
 | |
|   echo
 | |
|   echo "Collect this information [y/n] ? "
 | |
|   read files;
 | |
| 
 | |
|   if [ "$files" = "y" ] || [ "$files" = "yes" ]; then
 | |
|     collect;
 | |
|   else
 | |
|     clear;
 | |
|     echo;
 | |
|     echo "User selected not to continue."
 | |
|   fi
 | |
| fi
 | |
| exit
 |