Guest User

Untitled

a guest
Nov 8th, 2020 (edited)
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.51 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-10-22 05:34 +0200"
  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|sdio|SDIO)"
  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##### secure boot #######################\n\n"
  195. if [ -x /usr/bin/mokutil ]; then
  196. mokutil --sb-state
  197. else
  198. echo "'mokutil' is not installed (package \"mokutil\")."
  199. fi
  200.  
  201. printf "\n##### lsmod #############################\n\n"
  202. LSMOD=$(lsmod | egrep "(^|[[:punct:] ])($MODMATCHES|$LSMODMATCHES)[^[:punct:] ]*([[:punct:] ]|$)")
  203. echo "$LSMOD"
  204.  
  205. printf "\n##### interfaces ########################\n\n"
  206. for IFACESFILE in $(find /etc/network/interfaces{,.d} -type f 2> /dev/null | sort); do
  207. IFACESFLCNT=$(sed '/^#/d;s/^wpa-psk [[:graph:]]\+/wpa-psk <WPA key removed>/' $IFACESFILE)
  208. if [ -n "$IFACESFLCNT" ]; then
  209. printf "[%s]\n%s\n\n" "$IFACESFILE" "$IFACESFLCNT"
  210. fi
  211. done
  212.  
  213. printf "\n##### ifconfig ##########################\n\n"
  214. if [ -x /bin/ip ]; then
  215. IFCONFIG=$(ip address show)
  216. elif [ -x /sbin/ifconfig ]; then
  217. IFCONFIG=$(ifconfig -a)
  218. else
  219. echo "'ip' is not installed (package \"iproute2\")."
  220. fi
  221. echo "$IFCONFIG"
  222. IFCONFIG=$(sed -n '1h; 1!H; ${g;s/\n /\\ /g;p}' <<< "$IFCONFIG")
  223. IFACESETH=($(sed -n 's#^[0-9]\+: \([^ :]\+\):.* link/ether.*#\1#p; s/^\([^ :]\+\):\?.* \(Link encap:Ethernet\|ether\).*/\1/p' <<< "$IFCONFIG"))
  224. if (( ${#IFACESETH[@]} > 0 )); then
  225. IFETHMATCHES=${IFACESETH[@]}
  226. IFACEMATCHES="($IFACEMATCHES|(${IFETHMATCHES// /|}))"
  227. fi
  228.  
  229. printf "\n##### iwconfig ##########################\n\n"
  230. iwconfig
  231.  
  232. printf "\n##### route #############################\n\n"
  233. if [ -x /bin/ip ]; then
  234. ip route show
  235. elif [ -x /sbin/route ]; then
  236. route -n
  237. else
  238. echo "'ip' is not installed (package \"iproute2\")."
  239. fi
  240.  
  241. printf "\n##### resolv.conf #######################\n\n"
  242. stat -c "[%a %U %N]" /etc/resolv.conf
  243. grep -v '^#' /etc/resolv.conf
  244.  
  245. printf "\n##### network managers ##################\n\n"
  246. printf "Installed:\n\n"
  247. for NETMGRNR in "${!NETMGRPATHS[@]}"; do
  248. if [ -f "${NETMGRPATHS[$NETMGRNR]}" ]; then
  249. NETMGRINST+=("${NETMGRNAMES[$NETMGRNR]}")
  250. fi
  251. done
  252. printf "\t%s\n" "${NETMGRINST[@]:-None found.}"
  253. NETMGRMATCHES=${NETMGRPATHS[@]/#*\//|}
  254. NETMGRMATCHES=${NETMGRMATCHES// |/|}
  255. NETMGRMATCHES="(${NETMGRMATCHES#|})"
  256. printf "\nRunning:\n\n"
  257. ps -ef | egrep "( |/)$NETMGRMATCHES($| )" || printf "\tNone found.\n"
  258.  
  259. printf "\n##### NetworkManager info ###############\n\n"
  260. if [ -x /usr/bin/nm-tool ]; then
  261. nm-tool
  262. elif [ -x /usr/bin/nmcli ]; then
  263. nmcli -f all device show | sed '/^GENERAL.DEVICE:[ ]\+lo$/,/^$/d; /^AP\[[0-9]\+\]\./d'
  264. echo
  265. nmcli -f SSID,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,ACTIVE,IN-USE device wifi list
  266. else
  267. echo "NetworkManager is not installed (package \"network-manager\")."
  268. fi
  269.  
  270. printf "\n##### NetworkManager.state ##############\n\n"
  271. cat -s /var/lib/NetworkManager/NetworkManager.state
  272.  
  273. printf "\n##### NetworkManager config #############\n\n"
  274. for NMCONFFILE in $(find /{etc,usr/lib}/NetworkManager/{NetworkManager.conf,conf.d} -name "*.conf" 2> /dev/null | sort); do
  275. NMCONFCNT=$(egrep -v '^(#|$)' $NMCONFFILE)
  276. if [ -n "$NMCONFCNT" ]; then
  277. printf "[[%s]]\n%s\n\n" "$NMCONFFILE" "$NMCONFCNT"
  278. fi
  279. done
  280.  
  281. printf "\n##### NetworkManager profiles ###########\n\n"
  282. if [ -d /etc/NetworkManager/system-connections ]; then
  283. if [ -n "$SUDO" ]; then
  284. trap "" 2 3
  285. 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"
  286. trap 2 3
  287. if [ "$SUDOSUCCESS" = "yes" ]; then
  288. ORIGIFS="$IFS"
  289. IFS=$'\n'
  290. for NMWLPRFFILE in $(sed -n 's/^\(.\+\):type=\(802-11-wireless\|wifi\).*$/\1/p' <<< "$NMPROFILES"); do
  291. NMWLPRFFLPERMS=$(stat -c "%a %U" "$NMWLPRFFILE")
  292. NMWLPROFILE=($(sed -n "s;^$NMWLPRFFILE:\($NMPROFMATCHES.*\)$;\1 |;p" <<< "$NMPROFILES"))
  293. NMWLPROFSOUT+="[[$NMWLPRFFILE]] ($NMWLPRFFLPERMS)"$'\n'"${NMWLPROFILE[@]}"$'\n\n'
  294. done
  295. IFS="$ORIGIFS"
  296. sed 's# | \[#\n\[#g;s#\] |#\]#g;s/ |$//' <<< "$NMWLPROFSOUT" | sed '/^\[[^]]*\]$/d'
  297. else
  298. printf "\nAcquisition of admin privileges failed.\n"
  299. fi
  300. else
  301. echo "No way to acquire admin privileges found."
  302. fi
  303. else
  304. echo "No NetworkManager profiles found."
  305. fi
  306.  
  307. printf "\n##### Netplan config ####################\n\n"
  308. for NPLANFILE in $(find /{lib,etc,run}/netplan -name "*.yaml" 2> /dev/null | sort); do
  309. NPLANFLCNT=$(egrep -v '^(#|$)' $NPLANFILE)
  310. if [ -n "$NPLANFLCNT" ]; then
  311. printf "[%s]\n%s\n\n" "$NPLANFILE" "$NPLANFLCNT"
  312. fi
  313. done
  314.  
  315. printf "\n##### iw reg get ########################\n\n"
  316. if [ -x /sbin/iw ]; then
  317. if IWREGGET=$(iw reg get 2>&1) && [ -f /etc/timezone ]; then
  318. REGION=$(cat /etc/timezone)
  319. printf "Region: %s (based on set time zone)\n\n" "$REGION"
  320. fi
  321. echo "$IWREGGET"
  322. else
  323. echo "'iw' is not installed (package \"iw\")."
  324. fi
  325.  
  326. printf "\n##### iwlist channels ###################\n\n"
  327. if [ -x /sbin/iwlist ]; then
  328. iwlist chan
  329. else
  330. echo "'iwlist' is not installed (package \"wireless-tools\")."
  331. fi
  332.  
  333. printf "\n##### iwlist scan #######################\n\n"
  334. if [ -x /sbin/iwlist ]; then
  335. if [ -n "$SUDO" ]; then
  336. trap "" 2 3
  337. IWLISTSCAN=$($SUDO${KDESUDO+ -d} iwlist scan) && SUDOSUCCESS="yes" || SUDOSUCCESS="no"
  338. trap 2 3
  339. if [ "$SUDOSUCCESS" = "yes" ]; then
  340. if [[ $IWLISTSCAN = *Frequency:* ]]; then
  341. printf "Channel occupancy:\n\n"
  342. grep '^[ ]*Frequency:' <<< "$IWLISTSCAN" | sort | uniq -c | sed 's/^[ ]\+\([ ][0-9]\+\)[ ]\+/ \1 APs on /'
  343. echo
  344. fi
  345. grep -v '^[ ]*IE: Unknown:' <<< "$IWLISTSCAN"
  346. else
  347. printf "\nAcquisition of admin privileges failed.\n"
  348. fi
  349. else
  350. echo "No way to acquire admin privileges found."
  351. fi
  352. else
  353. echo "'iwlist' is not installed (package \"wireless-tools\")."
  354. fi
  355.  
  356. printf "\n##### module infos ######################\n\n"
  357. MODULES=$(egrep -o "^$MODMATCHES[^ ]*" <<< "$LSMOD")
  358. for MODULE in $MODULES; do
  359. MODINFO=$(modinfo $MODULE | egrep -v "^$MODINFOEXCL:")
  360. printf "[%s]\n%s\n\n" "$MODULE" "$MODINFO"
  361. done
  362.  
  363. printf "\n##### module parameters #################\n\n"
  364. for MODULE in $MODULES; do
  365. if [ -d /sys/module/$MODULE/parameters ]; then
  366. MODPARAMS=$(grep -H '^[[:graph:]]' /sys/module/$MODULE/parameters/* | sed 's#^.*/##;s/:/: /')
  367. printf "[%s]\n%s\n\n" "$MODULE" "$MODPARAMS"
  368. fi
  369. done
  370.  
  371. printf "\n##### /etc/modules ######################\n\n"
  372. grep -v '^#' /etc/modules
  373.  
  374. printf "\n##### modprobe options ##################\n\n"
  375. for MODPROBEFILE in $(find /etc/modprobe.{conf,d} -name "*.conf" -regextype posix-egrep -not -regex ".*$MODPROBEXCL.*" 2> /dev/null | sort); do
  376. MODPROBEOPTS=$(egrep -v '^(#|$)' $MODPROBEFILE)
  377. if [ -n "$MODPROBEOPTS" ]; then
  378. printf "[%s]\n%s\n\n" "$MODPROBEFILE" "$MODPROBEOPTS"
  379. fi
  380. done
  381.  
  382. printf "\n##### rc.local ##########################\n\n"
  383. grep -v '^#' /etc/rc.local
  384.  
  385. printf "\n##### pm-utils ##########################\n\n"
  386. for PMUTILSFILE in $(find /etc/pm/*.d \( -type f -o -type l \) -regextype posix-egrep -not -regex "$PMUTILSEXCL" | sort); do
  387. PMUTFLCONT=$(egrep -v '^(#|$)' $PMUTILSFILE)
  388. if [ -n "$PMUTFLCONT" ]; then
  389. PMUTFLPERMS=$(stat -c "%a %U" $PMUTILSFILE)
  390. printf "[%s] (%s)\n%s\n\n" "$PMUTILSFILE" "$PMUTFLPERMS" "$PMUTFLCONT"
  391. fi
  392. done
  393.  
  394. printf "\n##### udev rules ########################\n\n"
  395. for UDEVRLFILE in $(find /etc/udev/rules.d -name "*net*.rules" | sort); do
  396. UDEVRULES=$(grep -B1 '^[^#]' $UDEVRLFILE | egrep -v '^(--)?$')
  397. if [ -n "$UDEVRULES" ]; then
  398. printf "[%s]\n%s\n\n" "$UDEVRLFILE" "$UDEVRULES"
  399. fi
  400. done
  401.  
  402. printf "\n##### dmesg #############################\n\n"
  403. 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)/'
  404.  
  405. printf "\n########## wireless info END ############\n\n"
  406.  
  407. exec 2>&4 4>&-
  408. exec 1>&3 3>&-
  409.  
  410. ##### MAC address masking #####
  411.  
  412. RESULTS=$(cat -s "$OUTPUTDIR/$FILEBASE.txt")$'\n'
  413.  
  414. ORIGIFS="$IFS"
  415. IFS=$'\n'
  416.  
  417. IFACESIDS=($(sed -n "/\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}/ {/\(00:\)\{5\}00/! {s/^[0-9]\+: \([^ :]\+\):.*/'\1'/p; s/^\([^ :]\+\):\? .*/'\1'/p}}" <<< "$IFCONFIG"))
  418. IFACESMACS=($(sed -n '/\(00:\)\{5\}00/! s#.*\(HWaddr\|link/[^ ]\+\|ether\) \(\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}\).*#\2#p' <<< "$IFCONFIG"))
  419. IFACESIP6S=($(ip6-mac "${IFACESMACS[@]}"))
  420.  
  421. 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"))
  422. WLAPSIWLMACS=($(sed -n 's/^[ ]*Cell [0-9]\+.*Address: \([^ ]\+\)/\1/p' <<< "$IWLISTSCAN"))
  423. WLAPSIWLIP6S=($(ip6-mac "${WLAPSIWLMACS[@]}"))
  424.  
  425. 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")
  426. WLAPSNMIDS=($(awk -F '\t' '{print "'\''" $1 "'\''"}' <<< "$WLAPSNMRAW"))
  427. WLAPSNMMACS=($(grep -o '\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}' <<< "$WLAPSNMRAW"))
  428. WLAPSNMIP6S=($(ip6-mac "${WLAPSNMMACS[@]}"))
  429.  
  430. IFS="$ORIGIFS"
  431.  
  432. for IFACENR in "${!IFACESMACS[@]}"; do
  433. MACMASKSED+="s;${IFACESMACS[$IFACENR]};<MAC ${IFACESIDS[$IFACENR]} [IF$(($IFACENR + 1))]>;I;"
  434. MACMASKSED+=" /${IFACESIP6S[$IFACENR]}/ s;${IFACESIP6S[$IFACENR]/#\\(::/\(};<IP6 ${IFACESIDS[$IFACENR]} [IF$(($IFACENR + 1))]>;I;"
  435. IFACEMACC=${IFACESMACS[$IFACENR]//:/}
  436. if [[ ${IFACESIDS[$IFACENR],,} =~ ${IFACEMACC,,} ]]; then
  437. MACMASKSED+="s;\(${IFACESIDS[$IFACENR]:1:3}\)$IFACEMACC;\1<IF from MAC [IF$(($IFACENR + 1))]>;Ig;"
  438. fi
  439. done
  440.  
  441. for WLAPIWLNR in "${!WLAPSIWLMACS[@]}"; do
  442. MACMASKSED+="s;${WLAPSIWLMACS[$WLAPIWLNR]};<MAC ${WLAPSIWLIDS[$WLAPIWLNR]}>;I;"
  443. MACMASKSED+=" /${WLAPSIWLIP6S[$WLAPIWLNR]}/ s;${WLAPSIWLIP6S[$WLAPIWLNR]/#\\(::/\(};<IP6 ${WLAPSIWLIDS[$WLAPIWLNR]}>;I;"
  444. done
  445.  
  446. for WLAPNMNR in "${!WLAPSNMMACS[@]}"; do
  447. MACMASKSED+="s;${WLAPSNMMACS[$WLAPNMNR]};<MAC ${WLAPSNMIDS[$WLAPNMNR]} [AN$(($WLAPNMNR + 1))]>;I;"
  448. MACMASKSED+=" /${WLAPSNMIP6S[$WLAPNMNR]}/ s;${WLAPSNMIP6S[$WLAPNMNR]/#\\(::/\(};<IP6 ${WLAPSNMIDS[$WLAPNMNR]} [AN$(($WLAPNMNR + 1))]>;I;"
  449. done
  450.  
  451. sed "$MACMASKSED /\([[:alnum:]]\{2\}:\)\{6,\}/! s/\([[:alnum:]]\{2\}:\)\{5\}[[:alnum:]]\{2\}/<MAC address>/g" <<< "$RESULTS" > "$OUTPUTDIR/$FILEBASE.txt"
  452.  
  453. ##### The End #####
  454.  
  455. dialog_info "${TERMOUT+\n}Results saved in \"$OUTPUTDIR/$FILEBASE.txt\".${TERMOUT+\n}"
  456.  
  457. if (( $(stat -c %s "$OUTPUTDIR/$FILEBASE.txt") > 19968 )); then
  458. tar -czf "$OUTPUTDIR/$FILEBASE.tar.gz" -C "$OUTPUTDIR" "$FILEBASE.txt" && \
  459. 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}" || \
  460. 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}"
  461. fi
  462.  
  463. if [ -x /usr/bin/pastebinit ] && ping -nc 3 -w 6 -i 0.2 paste.ubuntu.com > /dev/null 2>&1; then
  464. PASTEBIN=$(dialog_question "Do you also want to post them${DIALOGBREAK}to your default 'pastebinit' provider?")
  465. if [[ ! $PASTEBIN =~ ^no?$ ]]; then
  466. PASTERESULT=$(pastebinit -i "$OUTPUTDIR/$FILEBASE.txt" -f text 2>&1) && PASTESUCCESS="yes"
  467. if [ "$PASTESUCCESS" = "yes" ]; then
  468. dialog_info "${TERMOUT+\n}Pastebin successful:\n\n${PASTERESULT}${TERMOUT+\n}"
  469. else
  470. if [ -n "$PASTERESULT" ]; then
  471. dialog_error "${TERMOUT+\n}Pastebin failed, error message is:\n\n${PASTERESULT}${TERMOUT+\n}"
  472. else
  473. dialog_error "${TERMOUT+\n}Pastebin failed, no error message given.${TERMOUT+\n}"
  474. fi
  475. fi
  476. else
  477. echo
  478. fi
  479. fi
Add Comment
Please, Sign In to add comment