File: wifi-status

package info (click to toggle)
byobu 5.133-1
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 2,872 kB
  • sloc: sh: 4,445; python: 477; makefile: 60; perl: 26; xml: 22
file content (52 lines) | stat: -rwxr-xr-x 2,107 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/sh
#
#    wifi-status - monitor a wireless network connection
#
#    Copyright (C) 2003-2014 Dustin Kirkland <kirkland@ubuntu.com>
#
#    Authors:
#        Dustin Kirkland <kirkland@ubuntu.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

trap "pkill -f -9 wifi-status >/dev/null 2>&1; exit 0" EXIT HUP INT QUIT TERM

if [ -z "$1" ]; then
	dev=$(iw dev|grep Interface|awk '{print $2}')
else
	dev="$1"
fi

router=$(ip route show|head -n 1|awk '{print $3}')

if [ -z "$TMUX" ]; then
	watch -n1 "iw $dev info; ip addr show $dev; ip route; echo; (journalctl -b --no-pager -q | grep -i $dev | tail -n 10 | sort -r); echo; ping -I $dev -c 1 8.8.8.8"
else
	# Note that the speedometer item will silently fail, if the speedometer command is not found;  I don't want byobu to depend on speedometer, but it can suggest it
	tmux new-window -n wifi-status "watch -c iw $dev info \| ccze -A" \; \
		split-window -t wifi-status -v "watch -c ip addr show $dev \| ccze -A" \; \
		split-window -t wifi-status -v "watch -c ip route \| ccze -A" \; \
		split-window -t wifi-status -h "ping -I $dev $router" \; \
		split-window -t wifi-status -v "watch -c journalctl -b --no-pager -q \| grep -i $dev \| tail -n 10 \| sort -r \| ccze -A" \; \
		split-window -t wifi-status -h "ping -I $dev 8.8.8.8" \; \
		split-window -t wifi-status -v "speedometer -t $dev -r $dev" \; \
		select-layout -t wifi-status tiled
fi

while true; do
	if [ $(tmux list-panes -t wifi-status | wc -l) -lt 5 ]; then
		tmux kill-window -t wifi-status
		exit 0
	fi
	sleep 1
done