#!/bin/bash # Filename: grml-network # Purpose: simple frontend to varous connection tools # Authors: (c) Klaus Knopper Mar 2004, (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. # Latest change: Fre Apr 20 00:36:37 CEST 2007 [mika] ################################################################################ PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin" export PATH if [ $UID != 0 ] ; then echo Error: become root before starting $0 >& 2 exit 100 fi # XDIALOG_HIGH_DIALOG_COMPAT=1 # export XDIALOG_HIGH_DIALOG_COMPAT CHECK="" [ "$1" = "check" ] && CHECK="yes" TMP=$(mktemp) bailout(){ rm -f "$TMP" exit $1 } DIALOG="dialog" # [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog" trap bailout 1 2 3 15 # LANGUAGE etc. [ -r /etc/default/locale ] && . /etc/default/locale gauge(){ rm -f "$TMP.done" status=0 while [ ! -e "$TMP.done" ]; do echo "$status" status="`expr \( 100 - $status \) / 4 + $status`" sleep 1 done | $DIALOG --title "$0" --gauge "$1" 8 75 0 } # Stop status bar killgauge(){ touch "$TMP.done" ; wait ; rm -f "$TMP.done" } # Provider specific setup - menu provider () { MENUINTERNET=$($DIALOG --stdout --clear --title "$PN" --menu \ "This script is a submenu of grml-network to set up an internet connection" 14 65 7 \ "TUG" "Connect via vpnc to TU Graz" \ "VCGraz" "Connect via pptp to VC-Graz" \ "Inode" "Connect via pptp to Inode" \ "Students" "Connect via pptp to Inode-Students" \ "Exit" "Exit this program") retval=$? case $retval in (0) if [ $MENUINTERNET == TUG ] ; then exec grml-vpnc-tugraz fi if [ $MENUINTERNET == VCGraz ] ; then exec grml-pptp-vcgraz fi if [ $MENUINTERNET == Inode ] ; then exec grml-pptp-inode fi if [ $MENUINTERNET == Students ] ; then exec grml-pptp-xdsl-students fi ;; (1) echo "Cancel pressed." ;; (255) echo "ESC pressed." ;; esac } main(){ if [ -z "$NOCHECK" -a -x /usr/bin/nmap ] ; then gauge "Checking network status..." & STATUS="" GW="`echo $(route -n | awk '/^0\.0\.0\.0/{print $2}')`" GWDEV="`echo $(route -n | awk '/^0\.0\.0\.0/{print $NF}')`" NMAP="$(nmap -sP --host_timeout 4000 --max_rtt_timeout 4000 $GW 2>/dev/null)" if [ "$?" = 0 ]; then echo "$NMAP" | grep -q "down" >/dev/null 2>&1 || STATUS="online" fi killgauge if [ -n "$STATUS" ]; then [ -n "$CHECK" ] && exit 0 # exit if we are already connected STATUS="Online ($GWDEV)" else STATUS="Offline" fi else STATUS="Unknown" fi # Language-dependent Messages case "$LANGUAGE" in de*|at*|ch*) TITLE1="Netzwerk-Setup" STATUS="Status: $STATUS" MESSAGE1="Bitte auswaehlen:" MODEMSETUP="/dev/modem-Schnittstelle (neu) konfigurieren" NETCARD="Netzwerkkarten (LAN/WLAN) Konfiguration" WIRELESS="Wireless Zugang" GPRS="Einwahl per Handy/GPRS" DSL="Einwahl per DSL-Modem" ISDN="Einwahl per ISDN" MODEM="Einwahl per Analogmodem" PROVIDER="Provider spezifische Einstellungen" EXIT="Beenden" ;; *) TITLE1="Network Setup" STATUS="Current state: $STATUS" MESSAGE1="Please select:" MODEMSETUP="(re)configure /dev/modem device" NETCARD="Configure network card (LAN/WLAN)" WIRELESS="Wireless access" GPRS="Dial via cellphone/GPRS" DSL="Dial via DSL-adapter" ISDN="Dial via ISDN" MODEM="Dial via analog modem" PROVIDER="Provider specific setup" EXIT="Quit" ;; esac # Shortcut description selected TYPES=(netcardconfig "$NETCARD" \ provider "$PROVIDER" \ modemlink "$MODEMSETUP" \ gprsconnect "$GPRS" \ pppoeconf "$DSL" \ isdnconfig "$ISDN" \ wvdial "$MODEM") type wvdial >/dev/null 2>&1 || { unset TYPES[13]; unset TYPES[12]; } type isdnconfig >/dev/null 2>&1 || { unset TYPES[11]; unset TYPES[10]; } type pppoeconf >/dev/null 2>&1 || { unset TYPES[9]; unset TYPES[8]; } type gprsconnect >/dev/null 2>&1 || { unset TYPES[7]; unset TYPES[6]; } type modemlink >/dev/null 2>&1 || { unset TYPES[5]; unset TYPES[4]; } rm -f "$TMP" $DIALOG --clear --cancel-label "$EXIT" --title "$TITLE1" --menu "$STATUS $MESSAGE1" 18 75 10 "${TYPES[@]}" 2>"$TMP" || bailout 1 read TYPE <"$TMP" TYPE="${TYPE#\"}"; TYPE="${TYPE%\"}" rm -f "$TMP" case "$TYPE" in wvdial) [ -e /etc/wvdial.conf ] || wvdialconf /etc/wvdial.conf ;; esac eval $TYPE return "$?" } if [ -z "$NOCHECK" ] ; then while true; do main done else main fi ## END OF FILE #################################################################