/
ipinfo
executable file
·195 lines (174 loc) · 4.96 KB
/
ipinfo
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#!/bin/bash
# AUTHOR: Vovchik
# PURPOSE: GUI to show IP config info
# DATE: 14 May 2009
#120201 BK: internationalized.
#120323 replace 'xmessage' with 'yaf-splash'.
#130216 mavrothal: < > mess up gtkdialog.
#131126 zigbert: gui (gtkdialog) improvements.
export TEXTDOMAIN=ipinfo
export OUTPUT_CHARSET=UTF-8
# --------------
# functions
# --------------
[ -f $HOME/.ipinfo ] && . $HOME/.ipinfo || CB0=false
#---------------
get_ip()
#---------------
{
# external ip
if [ "$CB0" = "true" ];then
var0='unresolved'
# see http://unix.stackexchange.com/questions/22615/how-can-i-get-my-external-ip-address-in-a-shell-script
var0=$(busybox nslookup myip.opendns.com resolver1.opendns.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1)
# rough test for valid ip
busybox ipcalc -bs $var0 || var0='unresolved'
else
var0="autocheck disabled"
fi
var0="$(gettext '<b>External IP</b> (via opendns.com):') ""<b>$var0</b>"
}
export -f get_ip
#---------------
info_func()
#---------------
{
# external ip info
$DEFAULTBROWSER https://major.io/icanhazip-com-faq/ &
}
export -f info_func
# --------------
get_data()
# --------------
{
nl='
'
# tab 1 - interfaces
var01=`echo $(gettext 'Hostname:') "$HOSTNAME"`
var02="`ifconfig | tr '>' ')' | tr '<' '('`" #130216 mavrothal: < > mess up gtkdialog.
# tab 3 - routing
var03="`route -n | sed -e 's%Kernel IP routing table%%'`"
# tab 2
var04="DNS:"
var05=`cat /etc/resolv.conf`
# tab 4 - collect wireless data
wifi="`iwgetid -a | gawk '{print $1}'`"
# echo "mywifi: ""$wifi"
spaces=" "
if [ -n "$wifi" ]; then
var06=`iwgetid -a 2>&1`
var07=`iwgetid -c 2>&1`
var08=`iwgetid -f 2>&1`
var09=`iwgetid -m 2>&1`
var10=`iwlist encryption 2>&1 | grep -v "no encryption"`
var11=`iwlist rate 2>&1 | grep Current`
# concatenate wireless data for display
var12="$var06""$nl""$var07""$nl""$var08""$nl""$var09""$nl""$var10""$nl""$var11""$nl"
var12="`echo "$var12" | tr '>' ')' | tr '<' '(' | sed '/^$/d'`" #130216 mavrothal: < > mess up gtkdialog.
else
var12="<b>$(gettext 'No wireless extensions detected.')</b>"
fi
# tab 5 - collect connection data
var13="`netstat -tan`"
}
# --------------
show_data()
# --------------
{
echo "$var01"
echo
echo "$var02"
echo
echo "$var03"
echo
echo "$var04"
echo "$var05"
echo
echo "$var12"
echo "$var13"
}
# --------------
make_gui()
# --------------
{
XML0='<vbox margin="8" space-expand="true" space-fill="true">
<vbox space-expand="false">
<hbox space-expand="true">
<checkbox>
<label>'$(gettext 'Show external IP (query DNS servers at opendns.com) ')'</label>
<variable>CB0</variable>
<default>'$CB0'</default>
</checkbox>
</hbox>
</vbox>
<vbox space-expand="true" space-fill="true">
<vbox scrollable="true">
<hbox>
<text use-markup="true" wrap="false" space-expand="false" space-fill="false">
<label>"<tt>'
XML1='<vbox margin="8">
<vbox space-expand="true" space-fill="true">
<vbox scrollable="true" shadow-type="0">
<hbox>
<text use-markup="true" wrap="false" space-expand="false" space-fill="false">
<label>"<tt>'
XML2=' </tt>"</label>
</text>
<text space-expand="true" space-fill="true"><label>""</label></text>
</hbox>
<text space-expand="true" space-fill="true"><label>""</label></text>
</vbox>
</vbox>
</vbox>'
export IP_Info='
<window title="IP Info - '$(gettext 'Network information')'" icon-name="gtk-network" resizable="false">
<vbox space-expand="true" space-fill="true" height-request="400" width-request="550">
<notebook labels="'$(gettext 'Interfaces')'|'$(gettext 'DNS')'|'$(gettext 'Routing')'|'$(gettext 'Wireless')'|'$(gettext 'Statistics')'">
'$XML0'<b>'${var01}'</b>'${nl}${var0}${nl}${nl}${var02}''$XML2'
'$XML1'<b>'${var04}${nl}'</b>'${nl}${var05}''$XML2'
'$XML1'<b>'$(gettext 'Kernel IP routing table')'</b>'${nl}${var03}${nl}${nl}''$XML2'
'$XML1'<b>'$(gettext 'Wireless configuration:')${nl}'</b>'${nl}${var12}''$XML2'
'$XML1'<b>'$(gettext 'Network statistics:')'</b>'${nl}${nl}${var13}''$XML2'
</notebook>
<hbox space-expand="false" space-fill="false">
<button space-expand="false" space-fill="false">
<label>'$(gettext "Ok")'</label>
'"`/usr/lib/gtkdialog/xml_button-icon ok`"'
<action>exit:OK</action>
</button>
</hbox>
</vbox>
</window>'
#echo $IP_Info > /root/data.xml
}
#
# --------------
display_gui()
# --------------
{
eval `gtkdialog -pc IP_Info`
}
# --------------
# end functions
# --------------
# --------------
# main
# --------------
#xmessage -buttons "" -center -bg orange "$(gettext 'Please wait, probing...')" &
/usr/lib/gtkdialog/box_splash -close never -text "$(gettext 'Please wait, probing...')" &
XPID=$!
get_ip
get_data
show_data
make_gui
kill $XPID
if [ -n "$DISPLAY" -o -n "$WAYLAND_DISPLAY" ] ; then
display_gui
else
show_data
fi
echo "CB0=$CB0" > $HOME/.ipinfo
exit 0
# --------------
# end main
# --------------