Added "Info" panel with basic network diagnostics

origin
KatolaZ 9 years ago
parent ebd8c26588
commit aa34a48fcf

@ -19,7 +19,7 @@
# #
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# #
# (c) KatolaZ (katolaz@freaknet.org) -- 2016/12/26 # Copyleft (c) KatolaZ (katolaz@freaknet.org) -- (2016, 2017)
# #
# #
@ -31,24 +31,80 @@
VERSION=0.2 VERSION=0.2
TOPSTR="setnet-0.1 [user: $(id -run)]" TOPSTR="setnet-${VERSION} [user: $(id -run)]"
DIALOG="dialog --backtitle \"${TOPSTR}\" " DIALOG="dialog --backtitle \"${TOPSTR}\" "
###############################
## ##
## Internal config variables ##
## ##
###############################
##
## Required dependencies. If any of those commands is missing,
## the script will exit
##
HARD_DEPS="ip dhclient dialog netstat"
##
## Suggested dependencies. The script will issue a warning if any of
## those commands is missing
##
SOFT_DEPS="wpa_cli wpa_supplicant"
#################################
#####################################
## ##
## HEIGHT/WIDTH of various dialogs ##
## ##
#####################################
##
## Regular windows
##
WINDOW_WIDTH=75 WINDOW_WIDTH=75
WINDOW_HEIGHT=20 WINDOW_HEIGHT=20
##
## Infoboxes
##
INFO_WIDTH=40 INFO_WIDTH=40
INFO_HEIGHT=10 INFO_HEIGHT=10
##
## Forms
##
FORM_WIDTH=60 FORM_WIDTH=60
FORM_HEIGHT=12 FORM_HEIGHT=12
##
## Large windows
##
LARGE_WIDTH=80
LARGE_HEIGHT=20
#################################
################################
## ##
## Supported network families ##
## ##
################################
NET_FAMILIES="inet inet6" NET_FAMILIES="inet inet6"
#################################
## ##
## Load setnetrc ## Load the configuration file "setnetrc"
## ##
##function ##function
@ -97,6 +153,10 @@ load_setnetrc(){
} }
##
## handler called upon exit/signal (NONE HUP INT TRAP TERM QUIT)
##
##function ##function
cleanup(){ cleanup(){
rm -f ${TMPFILE} rm -f ${TMPFILE}
@ -134,6 +194,7 @@ log(){
## - busybox ## - busybox
## - dash ## - dash
## - ksh ## - ksh
## - mksh
## - posh ## - posh
## - sh ## - sh
## - yash ## - yash
@ -147,7 +208,7 @@ check_shell(){
## ##
CUR_SH=$(ps -p $$ -o comm=) CUR_SH=$(ps -p $$ -o comm=)
case ${CUR_SH} in case ${CUR_SH} in
ash|bash|busybox|dash|ksh|posh|sh|yash) ash|bash|busybox|dash|ksh|mksh|posh|sh|yash)
log "check_shell" "The current shell (${CUR_SH}) is supported" log "check_shell" "The current shell (${CUR_SH}) is supported"
return return
;; ;;
@ -193,6 +254,22 @@ check_deps(){
done done
} }
##
## Generic function fo unimplemented features. It just pops up a
## message-box and returns
##
##function
unimplemented(){
LABEL=$1
eval "${DIALOG} --msgbox 'Sorry! '$LABEL' not implemented, yet!' \
${INFO_HEIGHT} ${INFO_WIDTH}" 2>${TMPFILE}
}
########################################## ##########################################
##function ##function
@ -863,8 +940,7 @@ config_wifi(){
wifi_load_file ${DEVNAME} wifi_load_file ${DEVNAME}
;; ;;
"New") "New")
eval "${DIALOG} --msgbox 'Sorry!Not yet implemented!' \ unimplemented "New"
${INFO_HEIGHT} ${INFO_WIDTH}" 2>${TMPFILE}
;; ;;
esac esac
done done
@ -1030,7 +1106,7 @@ show_copyright(){
== setnet.sh 0.1 == == setnet.sh 0.1 ==
(c) KatolaZ (katolaz@freaknet.org) -- 2016 (c) KatolaZ (katolaz@freaknet.org) -- 2016, 2017
EOF EOF
eval "${DIALOG} --clear --cr-wrap --textbox ${TMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" eval "${DIALOG} --clear --cr-wrap --textbox ${TMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}"
@ -1060,7 +1136,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
---------------------------------------------------------------------- ----------------------------------------------------------------------
(c) KatolaZ <katolaz@freaknet.org> -- 2016 (c) KatolaZ <katolaz@freaknet.org> -- 2016, 2017
---------------------------------------------------------------------- ----------------------------------------------------------------------
@ -1078,7 +1154,7 @@ about_menu(){
eval "${DIALOG} --cancel-label 'Up' --menu 'setnet ${VERSION} -- About' \ eval "${DIALOG} --cancel-label 'Up' --menu 'setnet ${VERSION} -- About' \
${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \ ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \
'Info' 'General information' \ 'Info' 'General information' \
'Copyright' 'Copyright information' \ 'Copyleft' 'Copyleft information' \
'License' 'How to distribute this program' " \ 'License' 'How to distribute this program' " \
2> ${TMPFILE} 2> ${TMPFILE}
if [ $? -eq 1 ];then if [ $? -eq 1 ];then
@ -1090,7 +1166,7 @@ about_menu(){
"Info") "Info")
show_info show_info
;; ;;
"Copyright") "Copyleft")
show_copyright show_copyright
;; ;;
"License") "License")
@ -1100,6 +1176,189 @@ about_menu(){
done done
} }
##function
netdiag_DNS(){
NAMESERVERS=$(grep '^nameserver' /etc/resolv.conf)
MSG_STR="Configured name servers in /etc/resolv.conf ==\n\n${NAMESERVERS}"
eval "${DIALOG} --clear --title 'DNS servers' --msgbox '${MSG_STR}' "\
${WINDOW_HEIGHT} ${WINDOW_WIDTH}
}
##function
netdiag_routes(){
ROUTES=$(netstat -rn > ${TMPFILE} )
eval "${DIALOG} --clear --no-collapse --title 'Routing table (netstat -rn) [arrows to scroll]'" \
"--tab-correct --tab-len 4 --textbox ${TMPFILE} "\
${LARGE_HEIGHT} ${LARGE_WIDTH}
}
##function
netdiag_ARP(){
ARP=$(cat /proc/net/arp >${TMPFILE})
eval "${DIALOG} --clear --no-collapse --title 'ARP table (/proc/net/arp) [arrows to scroll]'" \
"--tab-correct --tab-len 4 --textbox ${TMPFILE} "\
${LARGE_HEIGHT} ${LARGE_WIDTH}
}
##function
netdiag_connections(){
SERV=$(netstat -tnp | sed -r -e 's/$/\n/g' > ${TMPFILE})
eval "${DIALOG} --clear --no-collapse "\
" --title 'Active network connections (netstat -tnp) [arrows to scroll]'" \
"--tab-correct --tab-len 4 --textbox ${TMPFILE} "\
${LARGE_HEIGHT} ${LARGE_WIDTH}
}
##function
netdiag_services(){
SERV=$(netstat -ltnp | sed -r -e 's/$/\n/g' > ${TMPFILE})
eval "${DIALOG} --clear --no-collapse "\
" --title 'Active network services (netstat -ltnp) [arrows to scroll]'" \
"--tab-correct --tab-len 4 --textbox ${TMPFILE} "\
${LARGE_HEIGHT} ${LARGE_WIDTH}
}
##function
netdiag_ping(){
eval "${DIALOG} --insecure --inputbox 'Host or IP to ping:' \
${INFO_HEIGHT} ${INFO_WIDTH}" 2> ${TMPFILE}
if [ $? -ne 0 ]; then
eval "${DIALOG} --clear --msgbox 'Ping Aborted' \
${INFO_HEIGHT} ${INFO_WIDTH}"
return
else
PINGIP=$(cat ${TMPFILE})
ping -c 5 ${PINGIP} > ${TMPFILE} &
PINGPID=$!
eval "${DIALOG} --clear --title 'Ping ${PINGIP}'"\
"--tailbox ${TMPFILE} " \
${LARGE_HEIGHT} ${LARGE_WIDTH}
if [ $? -ne 0 ];then
kill -9 ${PINGPID}
fi
fi
}
##function
netdiag_traceroute(){
eval "${DIALOG} --insecure --inputbox 'Host or IP to trace:' \
${INFO_HEIGHT} ${INFO_WIDTH}" 2> ${TMPFILE}
if [ $? -ne 0 ]; then
eval "${DIALOG} --clear --msgbox 'Traceroute Aborted' \
${INFO_HEIGHT} ${INFO_WIDTH}"
return
else
TRACEIP=$(cat ${TMPFILE})
traceroute ${TRACEIP} > ${TMPFILE} &
TRCPID=$!
eval "${DIALOG} --clear --title 'Traceroute ${TRACEIP}'"\
"--tailbox ${TMPFILE} " \
${LARGE_HEIGHT} ${LARGE_WIDTH}
if [ $? -ne 0 ];then
kill -9 ${TRCPID}
fi
fi
}
##function
netdiag_query(){
eval "${DIALOG} --insecure --inputbox 'Hostname or IP to query:' \
${INFO_HEIGHT} ${INFO_WIDTH}" 2> ${TMPFILE}
if [ $? -ne 0 ]; then
eval "${DIALOG} --clear --msgbox 'DNS query aborted' \
${INFO_HEIGHT} ${INFO_WIDTH}"
return
else
QUERYIP=$(cat ${TMPFILE})
host ${QUERYIP} > ${TMPFILE} &
QUERYPID=$!
eval "${DIALOG} --clear --title 'host ${QUERYIP}'"\
"--tailbox ${TMPFILE} " \
${LARGE_HEIGHT} ${LARGE_WIDTH}
if [ $? -ne 0 ];then
kill -9 ${QUERYPID}
fi
fi
}
##
## Main menu for network diagnostics
##
##function
netdiag_menu(){
while true; do
eval "${DIALOG} --cancel-label 'Up' --menu 'Network diagnostics' \
${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 \
'ARP' 'Show ARP table' \
'Connections' 'List active network connections' \
'DNS' 'List DNS servers' \
'Ping' 'Ping a host' \
'Query' 'DNS Query' \
'Routes' 'Show routing table' \
'Services' 'List active network daemons' \
'Traceroute' 'Show the route to a host' " \
2> ${TMPFILE}
if [ $? -eq 1 ];then
return;
fi
ACTION=$(cat ${TMPFILE})
case ${ACTION} in
"ARP")
netdiag_ARP
;;
"Connections")
netdiag_connections
;;
"DNS")
netdiag_DNS
;;
"Ping")
netdiag_ping
;;
"Query")
netdiag_query
;;
"Routes")
netdiag_routes
;;
"Services")
netdiag_services
;;
"Traceroute")
netdiag_traceroute
;;
esac
done
}
##function ##function
show_toplevel(){ show_toplevel(){
@ -1108,7 +1367,8 @@ show_toplevel(){
eval "${DIALOG} --clear --cancel-label 'Quit' --menu 'Main Menu' \ eval "${DIALOG} --clear --cancel-label 'Quit' --menu 'Main Menu' \
${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \ ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \
'Setup' 'Setup interfaces' \ 'Setup' 'Setup interfaces' \
'About' 'Info & Copyright'" 2> ${TMPFILE} 'Info' 'Network diagnostics' \
'About' 'License & Copyleft'" 2> ${TMPFILE}
return $? return $?
} }
@ -1132,7 +1392,7 @@ show_version(){
##local ##local
SCRIPTNAME=$1 SCRIPTNAME=$1
echo "${SCRIPTNAME} -- version ${VERSION}" echo "${SCRIPTNAME} -- version ${VERSION}"
echo "Copyright (C) Vincenzo \"KatolaZ\" Nicosia (katolaz@freaknet.org) -- 2016" echo "Copyleft (C) Vincenzo \"KatolaZ\" Nicosia (katolaz@freaknet.org) -- 2016, 2017"
echo "This is free software. You can use and redistribute it under the " echo "This is free software. You can use and redistribute it under the "
echo "terms of the GNU General Public Licence version 3 or (at your option)" echo "terms of the GNU General Public Licence version 3 or (at your option)"
echo "any later version." echo "any later version."
@ -1149,7 +1409,7 @@ show_disclaimer(){
== setnet.sh 0.1 == == setnet.sh 0.1 ==
(c) KatolaZ (katolaz@freaknet.org) -- 2016 (c) KatolaZ (katolaz@freaknet.org) -- 2016, 2017
-+- This is the alpha release of setnet.sh -+- -+- This is the alpha release of setnet.sh -+-
@ -1177,7 +1437,7 @@ initialise(){
TMPFILE=$( (tempfile) 2>/dev/null) || TMPFILE=/tmp/setnet_$$ TMPFILE=$( (tempfile) 2>/dev/null) || TMPFILE=/tmp/setnet_$$
WPA_PIDFILE=$( (tempfile) 2>/dev/null) || WPA_PIDFILE=/tmp/setnet_wpapid_$$ WPA_PIDFILE=$( (tempfile) 2>/dev/null) || WPA_PIDFILE=/tmp/setnet_wpapid_$$
trap cleanup 0 NONE HUP INT TRAP TERM trap cleanup 0 NONE HUP INT TRAP TERM QUIT
if [ -z ${TRUNCATE_LOG} ] || \ if [ -z ${TRUNCATE_LOG} ] || \
[ ${TRUNCATE_LOG} = "yes" ] || \ [ ${TRUNCATE_LOG} = "yes" ] || \
@ -1216,6 +1476,9 @@ main(){
"Setup") "Setup")
dev_config_menu dev_config_menu
;; ;;
"Info")
netdiag_menu
;;
"About") "About")
about_menu about_menu
;; ;;

@ -20,16 +20,3 @@ LOGFILE=/var/log/setnet.log
## ##
TRUNCATE_LOG="yes" TRUNCATE_LOG="yes"
##
## Required dependencies. If any of those commands is missing,
## the script will exit
##
HARD_DEPS="ip dhclient dialog"
##
## Suggested dependencies. The script will issue a warning if any of
## those commands is missing
##
SOFT_DEPS="wpa_cli wpa_supplicant"

Loading…
Cancel
Save