Guest User

Untitled

a guest
May 28th, 2018
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 17.08 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # Copyright (c) 2012
  4. #
  5. # Authors: Wild Man, Krytarik
  6. # Helpers: chili555
  7. #
  8. # This script gathers the infos necessary for troubleshooting a wireless
  9. # connection and saves them in a text file, wrapping it in an archive if it
  10. # exceeds the 19.5 kB size limit for ".txt" attachments on the Ubuntu Forums.
  11. #
  12. ##############################################################################
  13. #
  14. # This program is free software: you can redistribute it and/or modify
  15. # it under the terms of the GNU General Public License as published by
  16. # the Free Software Foundation, either version 3 of the License, or
  17. # (at your option) any later version.
  18. #
  19. # This program is distributed in the hope that it will be useful,
  20. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  22. # GNU General Public License for more details.
  23. #
  24. # You should have received a copy of the GNU General Public License
  25. # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  26. #
  27.  
  28. SCRIPTDATE="2018-01-10 21:04 +0100"
  29. FILEBASE="wireless-info"
  30. OUTPUTDIR="$PWD"
  31. OUTPUTDIRFB="/tmp"
  32.  
  33. MODMATCHES="(air|ar5|at7|ath[^3]?|b43|bcma|brcm|carl|ipw|iwl|ndis|r(818|8192[eu]|871|92su)|8(188|189|192|723|812)[acde][esu]|rt[23567]|rtl|ssb|wl|(cfg|mac)80211)"
  34. LSMODMATCHES="(wmi|(dell|ideapad)[-_]laptop)"
  35. IFACEMATCHES="(wlan[0-9]|eth[0-9])"
  36. DMESGMATCHES="(firmware|[nN]etwork)"
  37. NMPROFMATCHES="\(\[connection\]\|id=\|type=\|permissions=\|autoconnect=\|\[802-11-wireless\]\|\[wifi\]\|ssid=\|bssid=\|mac-address\(-blacklist\)\?=\|mtu=\|\[802-1x\]\|[[:graph:]]*ca-certs\?=\|\[ipv[46]\]\|method=\)"
  38.  
  39. DMESGEXCL="apparmor|(cfg|mac)80211"
  40. MODINFOEXCL="alias"
  41. MODPROBEXCL="(alsa-base|blacklist-(firewire|framebuffer|modem|oss|watchdog)|fglrx|nvidia|fbdev|bumblebee)"
  42. PMUTILSEXCL="/etc/pm/(power.d/(95hdparm-apm|intel-audio-powersave|sata_alpm)|sleep.d/(10_grub-common|10_unattended-upgrades.*|novatel_3g.*))"
  43.  
  44. NETMGRNAMES=("NetworkManager" "Wicd" "ConnMan")
  45. NETMGRPATHS=("/usr/sbin/NetworkManager" "/usr/sbin/wicd" "/usr/sbin/connmand")
  46. DEC2BI=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
  47. DEC2HEX=($(printf "%02x " {0..255}))
  48.  
  49. export LANG="en_US.UTF-8"
  50. export LANGUAGE="en_US:en"
  51. export LC_ALL="en_US.UTF-8"
  52.  
  53. if [ -t 0 ]; then
  54.     DIALOGAPP="terminal"
  55.     DIALOGBREAK=" "
  56.     TERMOUT="yes"
  57. elif [ -x /usr/bin/zenity ]; then
  58.     DIALOGAPP="zenity"
  59.     DIALOGBREAK="\n"
  60. elif [ -x /usr/bin/kdialog ]; then
  61.     DIALOGAPP="kdialog"
  62.     DIALOGBREAK="\n"
  63. else
  64.     exit 1
  65. fi
  66.  
  67. if [ -t 0 ]; then
  68.     SUDO="sudo"
  69. elif [ -x /usr/bin/pkexec ]; then
  70.     SUDO="pkexec"
  71. elif [ -x /usr/bin/gksudo ]; then
  72.     SUDO="gksudo"
  73.     GKSUDO="yes"
  74. elif [ -x /usr/bin/kdesudo ]; then
  75.     SUDO="kdesudo"
  76.     KDESUDO="yes"
  77.     KDESUDOCMT=" needs administrative privileges. Please enter your password."
  78. fi
  79.  
  80. dialog_info () {
  81.     case $DIALOGAPP in
  82.     terminal)
  83.         printf "%b\n" "$1"
  84.         ;;
  85.     zenity)
  86.         zenity --info --text="$1"
  87.         ;;
  88.     kdialog)
  89.         kdialog --msgbox "$1"
  90.         ;;
  91.     esac
  92. }
  93.  
  94. dialog_error () {
  95.     case $DIALOGAPP in
  96.     terminal)
  97.         printf "%b\n" "$1" >&2
  98.         ;;
  99.     zenity)
  100.         zenity --error --text="$1"
  101.         ;;
  102.     kdialog)
  103.         kdialog --error "$1"
  104.         ;;
  105.     esac
  106. }
  107.  
  108. dialog_question () {
  109.     case $DIALOGAPP in
  110.     terminal)
  111.         local INPUT
  112.         read -r -p "$1 [Y/n]: " INPUT
  113.         echo "${INPUT,,}"
  114.         ;;
  115.     zenity)
  116.         zenity --question --text="$1" || echo "no"
  117.         ;;
  118.     kdialog)
  119.         kdialog --yesno "$1" || echo "no"
  120.         ;;
  121.     esac
  122. }
  123.  
  124. ip6-mac () {
  125.     for MAC in "$@"; do
  126.     OCT1BI=${DEC2BI[0x${MAC:0:2}]}
  127.     OCT1BI7=$((${OCT1BI:6:1} - 1))
  128.     OCT1BIM="${OCT1BI:0:6}${OCT1BI7#-}${OCT1BI:7}"
  129.     IP6S+=${IP6S:+$'\n'}"${DEC2HEX[2#$OCT1BIM]}${MAC:3:2}:${MAC:6:2}ff:fe${MAC:9:2}:${MAC:12:2}${MAC:15:2}"
  130.     done
  131.     sed 's/\(^\|:\)0\+\([[:alnum:]]\)/\1\2/g;s/^\([0:]\+\)/\\(::\\|\1\\)/' <<< "$IP6S"
  132. }
  133.  
  134. exec 3>&1 4>&2
  135. exec 1> "$OUTPUTDIR/$FILEBASE.txt" || {
  136.     dialog_error "${TERMOUT+\n}Cannot write output file in \"$OUTPUTDIR\",${DIALOGBREAK}trying in \"$OUTPUTDIRFB\" instead.${TERMOUT+\n}"
  137.     OUTPUTDIR="$OUTPUTDIRFB"
  138.     exec 1> "$OUTPUTDIR/$FILEBASE.txt" || {
  139.     dialog_error "${TERMOUT+\n}Cannot write output file in \"$OUTPUTDIR\" either, aborting.${TERMOUT+\n}"
  140.     exit 1
  141.     }
  142. }
  143. exec 2>&1
  144.  
  145. printf "\n########## wireless info START ##########\n\n"
  146. REPORTDATE=$(date +"%d %b %Y %H:%M %Z %z")
  147. SCRIPTDATE=$(date -u -d "$SCRIPTDATE" +"%d %b %Y %H:%M %Z %z")
  148. LASTBOOTDT=$(last -FRn 1 reboot | sed -n 's/.*system boot[ ]\+\(.\+\) - .*/\1/p')
  149. LASTBOOTDT=$(date -d "$LASTBOOTDT" +"%d %b %Y %H:%M %Z %z")
  150. printf "Report from: %s\n\n" "$REPORTDATE"
  151. printf "Booted last: %s\n\n" "$LASTBOOTDT"
  152. printf "Script from: %s\n" "$SCRIPTDATE"
  153.  
  154. printf "\n##### release ###########################\n\n"
  155. lsb_release -idrc
  156.  
  157. printf "\n##### kernel ############################\n\n"
  158. uname -srvmpio
  159. echo
  160. sed 's/root=[^ ]*//;s/[ ]\+/, /g;s/^BOOT_IMAGE=[^ ]*/Parameters:/' /proc/cmdline
  161.  
  162. printf "\n##### desktop ###########################\n\n"
  163. if [ -n "$DESKTOP_SESSION" ]; then
  164.     DESKTOP="$DESKTOP_SESSION"
  165. else
  166.     DESKTOP=$(sed -n 's/^Session=\(.\+\)$/\1/p' "$HOME/.dmrc")
  167.     DESKDMRC=" (from ~/.dmrc)"
  168. fi
  169. if [ -n "$DESKTOP" ]; then
  170.     if [ -f "/usr/share/xsessions/$DESKTOP.desktop" ]; then
  171.     DESKTOP=$(sed -n 's/^Name=\(.\+\)$/\1/p' "/usr/share/xsessions/$DESKTOP.desktop")
  172.     fi
  173.     echo "${DESKTOP/ Session/}${DESKDMRC}"
  174. else
  175.     printf "\nCould not be determined.\n"
  176. fi
  177.  
  178. printf "\n##### lspci #############################\n\n"
  179. lspci -nnk | grep -iA 2 '^[^[:space:]].*net' | sed '/^--$/d; /^[^[:space:]]/ i\\'
  180.  
  181. printf "\n##### lsusb #############################\n\n"
  182. lsusb
  183.  
  184. printf "\n##### PCMCIA card info ##################\n\n"
  185. if [ -x /sbin/pccardctl ]; then
  186.     pccardctl info
  187. else
  188.     echo "'pccardctl' is not installed (package \"pcmciautils\")."
  189. fi
  190.  
  191. printf "\n##### rfkill ############################\n\n"
  192. rfkill list all
  193.  
  194. printf "\n##### lsmod #############################\n\n"
  195. LSMOD=$(lsmod | egrep "(^|[[:punct:] ])($MODMATCHES|$LSMODMATCHES)[^[:punct:] ]*([[:punct:] ]|$)")
  196. echo "$LSMOD"
  197.  
  198. printf "\n##### interfaces ########################\n\n"
  199. for IFACESFILE in $(find /etc/network/interfaces{,.d} -type f 2> /dev/null | sort); do
  200.     IFACESFLCNT=$(sed '/^#/d;s/^wpa-psk [[:graph:]]\+/wpa-psk <WPA key removed>/' $IFACESFILE)
  201.     if [ -n "$IFACESFLCNT" ]; then
  202.     printf "[%s]\n%s\n\n" "$IFACESFILE" "$IFACESFLCNT"
  203.     fi
  204. done
  205.  
  206. printf "\n##### ifconfig ##########################\n\n"
  207. if [ -x /sbin/ifconfig ]; then
  208.     IFCONFIG=$(ifconfig -a)
  209. else
  210.     IFCONFIG=$(ip address show)
  211. fi
  212. echo "$IFCONFIG"
  213. IFCONFIG=$(sed -n '1h; 1!H; ${g;s/\n /\\ /g;p}' <<< "$IFCONFIG")
  214. IFACESETH=($(sed -n 's/^\([^ ]\+\)[ ]\+Link encap:Ethernet.*/\1/p; s#^[0-9]\+: \([^ :]\+\):.* link/ether.*#\1#p' <<< "$IFCONFIG"))
  215. if (( ${#IFACESETH[@]} > 0 )); then
  216.     IFETHMATCHES=${IFACESETH[@]}
  217.     IFACEMATCHES="($IFACEMATCHES|(${IFETHMATCHES// /|}))"
  218. fi
  219.  
  220. printf "\n##### iwconfig ##########################\n\n"
  221. iwconfig
  222.  
  223. printf "\n##### route #############################\n\n"
  224. if [ -x /sbin/route ]; then
  225.     route -n
  226. else
  227.     ip route show
  228. fi
  229.  
  230. printf "\n##### resolv.conf #######################\n\n"
  231. grep -v '^#' /etc/resolv.conf
  232.  
  233. printf "\n##### network managers ##################\n\n"
  234. printf "Installed:\n\n"
  235. for NETMGRNR in "${!NETMGRPATHS[@]}"; do
  236.     if [ -f "${NETMGRPATHS[$NETMGRNR]}" ]; then
  237.     NETMGRINST+=("${NETMGRNAMES[$NETMGRNR]}")
  238.     fi
  239. done
  240. printf "\t%s\n" "${NETMGRINST[@]:-None found.}"
  241. NETMGRMATCHES=${NETMGRPATHS[@]/#*\//|}
  242. NETMGRMATCHES=${NETMGRMATCHES// |/|}
  243. NETMGRMATCHES="(${NETMGRMATCHES#|})"
  244. printf "\nRunning:\n\n"
  245. ps -ef | egrep "( |/)$NETMGRMATCHES($| )" || printf "\tNone found.\n"
  246.  
  247. printf "\n##### NetworkManager info ###############\n\n"
  248. if [ -x /usr/bin/nm-tool ]; then
  249.     nm-tool
  250. elif [ -x /usr/bin/nmcli ]; then
  251.     nmcli -f all device show | sed '/^GENERAL.DEVICE:[ ]\+lo$/,/^$/d; /^AP\[[0-9]\+\]\./d'
  252.     echo
  253.     nmcli -f SSID,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,ACTIVE,IN-USE device wifi list
  254. else
  255.     echo "NetworkManager is not installed (package \"network-manager\")."
  256. fi
  257.  
  258. printf "\n##### NetworkManager.state ##############\n\n"
  259. cat -s /var/lib/NetworkManager/NetworkManager.state
  260.  
  261. printf "\n##### NetworkManager.conf ###############\n\n"
  262. grep -v '^#' /etc/NetworkManager/NetworkManager.conf
  263. if [ -f /etc/NetworkManager/nm-system-settings.conf ]; then
  264.     printf "\nnm-system-settings.conf (used up to Ubuntu 10.04):\n\n"
  265.     grep -v '^#' /etc/NetworkManager/nm-system-settings.conf
  266. fi
  267.  
  268. printf "\n##### NetworkManager profiles ###########\n\n"
  269. if [ -d /etc/NetworkManager/system-connections ]; then
  270.     if [ -n "$SUDO" ]; then
  271.     trap "" 2 3
  272.     NMPROFILES=$(find /etc/NetworkManager/system-connections -maxdepth 1 -type f -exec $SUDO${GKSUDO+ -D grep --}${KDESUDO+ -d --comment "<b>grep</b>$KDESUDOCMT" --} grep -vH '^$' {} +) && SUDOSUCCESS="yes" || SUDOSUCCESS="no"
  273.     trap 2 3
  274.     if [ "$SUDOSUCCESS" = "yes" ]; then
  275.         ORIGIFS="$IFS"
  276.         IFS=$'\n'
  277.         for NMWLPRFFILE in $(sed -n 's/^\(.\+\):type=\(802-11-wireless\|wifi\).*$/\1/p' <<< "$NMPROFILES"); do
  278.         NMWLPRFFLPERMS=$(stat -c "%a %U" "$NMWLPRFFILE")
  279.         NMWLPROFILE=($(sed -n "s;^$NMWLPRFFILE:\($NMPROFMATCHES.*\)$;\1 |;p" <<< "$NMPROFILES"))
  280.         NMWLPROFSOUT+="[[$NMWLPRFFILE]] ($NMWLPRFFLPERMS)"$'\n'"${NMWLPROFILE[@]}"$'\n\n'
  281.         done
  282.         IFS="$ORIGIFS"
  283.         sed 's# | \[#\n\[#g;s#\] |#\]#g;s/ |$//' <<< "$NMWLPROFSOUT" | sed '/^\[[^]]*\]$/d'
  284.     else
  285.         printf "\nAcquisition of admin privileges failed.\n"
  286.     fi
  287.     else
  288.     echo "No way to acquire admin privileges found."
  289.     fi
  290. else
  291.     echo "No NetworkManager profiles found."
  292. fi
  293.  
  294. printf "\n##### Netplan config ####################\n\n"
  295. for NPLANFILE in $(find /{lib,etc,run}/netplan -name "*.yaml" 2> /dev/null | sort); do
  296.     NPLANFLCNT=$(egrep -v '^(#|$)' $NPLANFILE)
  297.     if [ -n "$NPLANFLCNT" ]; then
  298.     printf "[%s]\n%s\n\n" "$NPLANFILE" "$NPLANFLCNT"
  299.     fi
  300. done
  301.  
  302. printf "\n##### iw reg get ########################\n\n"
  303. if [ -x /sbin/iw ]; then
  304.     if IWREGGET=$(iw reg get 2>&1) && [ -f /etc/timezone ]; then
  305.     REGION=$(cat /etc/timezone)
  306.     printf "Region: %s (based on set time zone)\n\n" "$REGION"
  307.     fi
  308.     echo "$IWREGGET"
  309. else
  310.     echo "'iw' is not installed (package \"iw\")."
  311. fi
  312.  
  313. printf "\n##### iwlist channels ###################\n\n"
  314. if [ -x /sbin/iwlist ]; then
  315.     iwlist chan
  316. else
  317.     echo "'iwlist' is not installed (package \"wireless-tools\")."
  318. fi
  319.  
  320. printf "\n##### iwlist scan #######################\n\n"
  321. if [ -x /sbin/iwlist ]; then
  322.     if [ -n "$SUDO" ]; then
  323.     trap "" 2 3
  324.     IWLISTSCAN=$($SUDO${KDESUDO+ -d} iwlist scan) && SUDOSUCCESS="yes" || SUDOSUCCESS="no"
  325.     trap 2 3
  326.     if [ "$SUDOSUCCESS" = "yes" ]; then
  327.         if [[ $IWLISTSCAN = *Frequency:* ]]; then
  328.         printf "Channel occupancy:\n\n"
  329.         grep '^[ ]*Frequency:' <<< "$IWLISTSCAN" | sort | uniq -c | sed 's/^[ ]\+\([ ][0-9]\+\)[ ]\+/     \1   APs on   /'
  330.         echo
  331.         fi
  332.         grep -v '^[ ]*IE: Unknown:' <<< "$IWLISTSCAN"
  333.     else
  334.         printf "\nAcquisition of admin privileges failed.\n"
  335.     fi
  336.     else
  337.     echo "No way to acquire admin privileges found."
  338.     fi
  339. else
  340.     echo "'iwlist' is not installed (package \"wireless-tools\")."
  341. fi
  342.  
  343. printf "\n##### module infos ######################\n\n"
  344. MODULES=$(egrep -o "^$MODMATCHES[^ ]*" <<< "$LSMOD")
  345. for MODULE in $MODULES; do
  346.     MODINFO=$(modinfo $MODULE | egrep -v "^$MODINFOEXCL:")
  347.     printf "[%s]\n%s\n\n" "$MODULE" "$MODINFO"
  348. done
  349.  
  350. printf "\n##### module parameters #################\n\n"
  351. for MODULE in $MODULES; do
  352.     if [ -d /sys/module/$MODULE/parameters ]; then
  353.     MODPARAMS=$(grep -H '^[[:graph:]]' /sys/module/$MODULE/parameters/* | sed 's#^.*/##;s/:/: /')
  354.     printf "[%s]\n%s\n\n" "$MODULE" "$MODPARAMS"
  355.     fi
  356. done
  357.  
  358. printf "\n##### /etc/modules ######################\n\n"
  359. grep -v '^#' /etc/modules
  360.  
  361. printf "\n##### modprobe options ##################\n\n"
  362. for MODPROBEFILE in $(find /etc/modprobe.{conf,d} -name "*.conf" -regextype posix-egrep -not -regex ".*$MODPROBEXCL.*" 2> /dev/null | sort); do
  363.     MODPROBEOPTS=$(egrep -v '^(#|$)' $MODPROBEFILE)
  364.     if [ -n "$MODPROBEOPTS" ]; then
  365.     printf "[%s]\n%s\n\n" "$MODPROBEFILE" "$MODPROBEOPTS"
  366.     fi
  367. done
  368.  
  369. printf "\n##### rc.local ##########################\n\n"
  370. grep -v '^#' /etc/rc.local
  371.  
  372. printf "\n##### pm-utils ##########################\n\n"
  373. for PMUTILSFILE in $(find /etc/pm/*.d \( -type f -o -type l \) -regextype posix-egrep -not -regex "$PMUTILSEXCL" | sort); do
  374.     PMUTFLCONT=$(egrep -v '^(#|$)' $PMUTILSFILE)
  375.     if [ -n "$PMUTFLCONT" ]; then
  376.     PMUTFLPERMS=$(stat -c "%a %U" $PMUTILSFILE)
  377.     printf "[%s] (%s)\n%s\n\n" "$PMUTILSFILE" "$PMUTFLPERMS" "$PMUTFLCONT"
  378.     fi
  379. done
  380.  
  381. printf "\n##### udev rules ########################\n\n"
  382. for UDEVRLFILE in $(find /etc/udev/rules.d -name "*net*.rules" | sort); do
  383.     UDEVRULES=$(grep -B1 '^[^#]' $UDEVRLFILE | egrep -v '^(--)?$')
  384.     if [ -n "$UDEVRULES" ]; then
  385.     printf "[%s]\n%s\n\n" "$UDEVRLFILE" "$UDEVRULES"
  386.     fi
  387. done
  388.  
  389. printf "\n##### dmesg #############################\n\n"
  390. dmesg | tail -n 100 | egrep "[[:punct:] ]($MODMATCHES|$IFACEMATCHES|$DMESGMATCHES)[^[:punct:] ]*[[:punct:] ]" | egrep -v "$DMESGEXCL" | uniq -cf 2 | sed 's/^[ ]\+1[ ]\+//;s/^[ ]\+\([0-9]\+\)[ ]\+\(.\+\)$/\2 (repeated \1 times)/'
  391.  
  392. printf "\n########## wireless info END ############\n\n"
  393.  
  394. exec 2>&4 4>&-
  395. exec 1>&3 3>&-
  396.  
  397. ##### MAC address masking #####
  398.  
  399. RESULTS=$(cat -s "$OUTPUTDIR/$FILEBASE.txt")$'\n'
  400.  
  401. ORIGIFS="$IFS"
  402. IFS=$'\n'
  403.  
  404. IFACESIDS=($(sed -n "/\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}/ {/\(00:\)\{5\}00/! {s/^\([^ ]\+\)[ ]\+.*HWaddr.*/'\1'/p; s/^[0-9]\+: \([^ :]\+\):.*/'\1'/p}}" <<< "$IFCONFIG"))
  405. IFACESMACS=($(sed -n '/\(00:\)\{5\}00/! s#.*\(HWaddr\|link/[^ ]\+\) \(\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}\).*#\2#p' <<< "$IFCONFIG"))
  406. IFACESIP6S=($(ip6-mac "${IFACESMACS[@]}"))
  407.  
  408. WLAPSIWLIDS=($(sed -n "/^[ ]*Cell [0-9]\+/,/^[ ]*ESSID:/ {/^[ ]*Cell [0-9]\+/h; /^[ ]*ESSID:/ {H;g;s/^[ ]*Cell 0\?\([0-9]\+\).*ESSID:\"\(.*\)\"$/'\2' [AC\1]/p}}" <<< "$IWLISTSCAN"))
  409. WLAPSIWLMACS=($(sed -n 's/^[ ]*Cell [0-9]\+.*Address: \([^ ]\+\)/\1/p' <<< "$IWLISTSCAN"))
  410. WLAPSIWLIP6S=($(ip6-mac "${WLAPSIWLMACS[@]}"))
  411.  
  412. WLAPSNMRAW=$(sed -n '/^##### NetworkManager info #####/,/^##### / {/^[ ]*Wireless Access Points/,/^$/ {/Wireless Access Points/d;s/^[ ]\+\*\?//;s/:[ ]\+/\t/;p}; /^SSID[ ]\+BSSID[ ]\+/,/^$/ {/^SSID[ ]\{2,\}BSSID[ ]\{2,\}/d;s/[ ]\{2,\}/\t/;p}}' <<< "$RESULTS")
  413. WLAPSNMIDS=($(awk -F '\t' '{print "'\''" $1 "'\''"}' <<< "$WLAPSNMRAW"))
  414. WLAPSNMMACS=($(grep -o '\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}' <<< "$WLAPSNMRAW"))
  415. WLAPSNMIP6S=($(ip6-mac "${WLAPSNMMACS[@]}"))
  416.  
  417. IFS="$ORIGIFS"
  418.  
  419. for IFACENR in "${!IFACESMACS[@]}"; do
  420.     MACMASKSED+="s;${IFACESMACS[$IFACENR]};<MAC ${IFACESIDS[$IFACENR]} [IF$(($IFACENR + 1))]>;I;"
  421.     MACMASKSED+=" /${IFACESIP6S[$IFACENR]}/ s;${IFACESIP6S[$IFACENR]/#\\(::/\(};<IP6 ${IFACESIDS[$IFACENR]} [IF$(($IFACENR + 1))]>;I;"
  422.     IFACEMACC=${IFACESMACS[$IFACENR]//:/}
  423.     if [[ ${IFACESIDS[$IFACENR],,} =~ ${IFACEMACC,,} ]]; then
  424.     MACMASKSED+="s;\(${IFACESIDS[$IFACENR]:1:3}\)$IFACEMACC;\1<IF from MAC [IF$(($IFACENR + 1))]>;Ig;"
  425.     fi
  426. done
  427.  
  428. for WLAPIWLNR in "${!WLAPSIWLMACS[@]}"; do
  429.     MACMASKSED+="s;${WLAPSIWLMACS[$WLAPIWLNR]};<MAC ${WLAPSIWLIDS[$WLAPIWLNR]}>;I;"
  430.     MACMASKSED+=" /${WLAPSIWLIP6S[$WLAPIWLNR]}/ s;${WLAPSIWLIP6S[$WLAPIWLNR]/#\\(::/\(};<IP6 ${WLAPSIWLIDS[$WLAPIWLNR]}>;I;"
  431. done
  432.  
  433. for WLAPNMNR in "${!WLAPSNMMACS[@]}"; do
  434.     MACMASKSED+="s;${WLAPSNMMACS[$WLAPNMNR]};<MAC ${WLAPSNMIDS[$WLAPNMNR]} [AN$(($WLAPNMNR + 1))]>;I;"
  435.     MACMASKSED+=" /${WLAPSNMIP6S[$WLAPNMNR]}/ s;${WLAPSNMIP6S[$WLAPNMNR]/#\\(::/\(};<IP6 ${WLAPSNMIDS[$WLAPNMNR]} [AN$(($WLAPNMNR + 1))]>;I;"
  436. done
  437.  
  438. sed "$MACMASKSED /\([[:alnum:]]\{2\}:\)\{6,\}/! s/\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}/<MAC address>/" <<< "$RESULTS" > "$OUTPUTDIR/$FILEBASE.txt"
  439.  
  440. ##### The End #####
  441.  
  442. dialog_info "${TERMOUT+\n}Results saved in \"$OUTPUTDIR/$FILEBASE.txt\".${TERMOUT+\n}"
  443.  
  444. if (( $(stat -c %s "$OUTPUTDIR/$FILEBASE.txt") > 19968 )); then
  445.     tar -czf "$OUTPUTDIR/$FILEBASE.tar.gz" -C "$OUTPUTDIR" "$FILEBASE.txt" && \
  446.     dialog_info "Results also archived in \"$OUTPUTDIR/$FILEBASE.tar.gz\",${DIALOGBREAK}as they exceed the 19.5 kB size limit for \".txt\" attachments${DIALOGBREAK}on the Ubuntu Forums.${TERMOUT+\n}" || \
  447.     dialog_error "Results exceed the 19.5 kB size limit for \".txt\" attachments${DIALOGBREAK}on the Ubuntu Forums, but archive could not be created.${TERMOUT+\n}"
  448. fi
  449.  
  450. if [ -x /usr/bin/pastebinit ] && ping -nc 3 -w 6 -i 0.2 paste.ubuntu.com > /dev/null 2>&1; then
  451.     PASTEBIN=$(dialog_question "Do you also want to post them${DIALOGBREAK}to your default 'pastebinit' provider?")
  452.     if [[ ! $PASTEBIN =~ ^no?$ ]]; then
  453.     PASTERESULT=$(pastebinit -i "$OUTPUTDIR/$FILEBASE.txt" -f text 2>&1) && PASTESUCCESS="yes"
  454.     if [ "$PASTESUCCESS" = "yes" ]; then
  455.         dialog_info "${TERMOUT+\n}Pastebin successful:\n\n${PASTERESULT}${TERMOUT+\n}"
  456.     else
  457.         if [ -n "$PASTERESULT" ]; then
  458.         dialog_error "${TERMOUT+\n}Pastebin failed, error message is:\n\n${PASTERESULT}${TERMOUT+\n}"
  459.         else
  460.         dialog_error "${TERMOUT+\n}Pastebin failed, no error message given.${TERMOUT+\n}"
  461.         fi
  462.     fi
  463.     else
  464.     echo
  465.     fi
  466. fi
Add Comment
Please, Sign In to add comment