Autor Thema: umts-connect --- Bash-Skript zur Herstellung einer UMTS-Modemverbindung  (Gelesen 854 mal)

0 Nutzer und 1 Gast betrachten dieses Thema.

Offline flux

  • Administrator
  • *
  • Beiträge: 1.891
Ein neues (überarbeitetes, da im System ja schon vorhandenes) Bash-Skript 'umts-connect', das UMTS-Modemverbindungen mit wvdial herstellt.

Eigenschaften:

- PIN-Abfrage durch comgt (wie bisher)
- Bestehende oder neue Konfiguration für wvdial kann verwendet werden (wie bisher)
- Im offenen XTerm werden der Ablauf und die Verbindungsparameter gezeigt (wie bisher)
- Im Tray des fbpanels wird ein ICON gezeigt, das DNS und lokale IP nach Verbindungsaufbau anzeigt (NEU)
- Nach Beenden des Skripts wird das in der Sitzung verbrauchte Volumen in Kb angezeigt (NEU)

Hier das Skript (in ein Textdokument kopieren, als umts-connect speichern, mit "chmod +x umts-connect" ausführbar machen und als root nach /usr/local/bin/ kopieren:

#!/bin/bash
#
# umts-connect v02
#
# Skript zur Verbindung von UMTS-Modems
# via comgt (PIN-Abfrage) und wvdial
#
# - Verbindungsicon wird angezeigt mit IP
# - Nach Schließen der Verbindung wird das
#   verbrauchte Volumen angezeigt
#
# Thomas Schönhütl <pilleus.pulcher@arcor.de>
# 22. September 2008
# 20. April 2009
#
# Lizenz: GPL, Version 2
#
if [ -z "`/bin/ls /dev/ttyUSB*`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Kein UMTS-Modem gefunden!\n\nDas Skript wird beendet ..."
exit
fi
#
zenity --title "UMTS-Verbindung" --info --text "Mit diesem Skript wird eine UMTS-Verbindung konfiguriert und aufgebaut.\n\nEs werden PIN, APN, Benutzername und Kennwort abgefragt ..."
#
PIN=$(zenity --title "PIN" --entry --text "Bitte die PIN (SIM-Karte) eingeben:" --hide-text)
#
if [ -z "`echo $PIN`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Keine PIN eingegeben, die Verbindung wird ohne PIN aufgebaut.\n\nWenn die PIN-Abfrage trotzdem aktiviert ist, bitte das Skript noch einmal starten und dann die PIN eingeben ..."
fi
export COMGTPIN=$PIN
/usr/local/bin/comgt PIN -d /dev/ttyUSB0
#
# Verbindung konfigurieren
WAHL=$(zenity --title "UMTS-Verbindung" --list --radiolist --text "Die letzte Konfiguration benutzen?" --column Auswahl --column Aktion TRUE "Ja, benutzen" FALSE "Nein, eine neue erstellen")
#
if [ -z "`echo $WAHL`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Das Skript wurde durch den Nutzer beendet ..."
exit
fi
#
if [ "`echo $WAHL`" = "Ja, benutzen" ]; then
export MAIN_DIALOG="
<window title=\"UMTS-Verbindung\">
<hbox>
<vbox>
<text>
<label>UMTS-Modem zur Einwahl mit wvdial vorbereiten ...</label>
</text>
</vbox>
</hbox>
</window>"
{
sleep 15
killall gtkdialog
} | gtkdialog -c --program MAIN_DIALOG
(xterm -title "Einwahl-Fenster bitte bis zum Trennen offen lassen ..." -e wvdial && ERG=$(echo "`tail /var/log/messages | grep Sent | tr " " "\n" | grep bytes -1 | sed -e '2,3d' | sed -e '2,3d'`+`tail /var/log/messages | grep Sent | tr " " "\n" | grep bytes -1 | sed -e '2,3d' | sed -e '1d' | sed -e '2d'`" | bc -l) && ERG1=$(echo "`echo $ERG`/1024" | bc -l) && ERG2=$(echo $ERG1 | cut -d "." -f1) && zenity --info --text "Verbrauchtes Datenvolumen:\n\n`echo $ERG2` Kb" && killall zenity) &
#sleep 30 && tail /var/log/messages | grep DNS | sed 's/ primary  //' | sed 's/ secondary//' \ | cut -d" " -f8 | while read line; do echo "nameserver $line" > /etc/resolv.conf; done
sleep 45
rm /etc/resolv.conf
echo "nameserver `tail -30 /var/log/messages | grep DNS | sed -e '2d'| rev | cut -d " " -f1 | rev`" > /etc/resolv.conf
while [ "`ps -e | grep wvdial`" ]; do zenity --notification --window-icon=/usr/share/icons/Tango/24x24/devices/network-wireless.png --text "UMTS-Verbindung: aktiv; lokale IP: `ifconfig | grep P-t-P | tr " " "\n" | grep addr | cut -b 6-`; DNS: `cat /etc/resolv.conf`" && zenity --info --text "UMTS-Verbindung: aktiv; lokale IP: `ifconfig | grep P-t-P | tr " " "\n" | grep addr | cut -b 6-`; DNS: `cat /etc/resolv.conf`"; continue; done
else
TEL=$(zenity --title "UMTS-Verbindung" --entry --text "Bitte Telefonnummer eingeben oder bestätigen:" --entry-text *99#)
if [ -z "`echo $TEL`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Das Skript wurde durch den Nutzer beendet ..."
exit
fi
NETZ=$(zenity --title "UMTS-Verbindung" --entry --text "Bitte APN des Providers eingeben:")
if [ -z "`echo $NETZ`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Das Skript wurde durch den Nutzer beendet ..."
exit
fi
USER=$(zenity --title "UMTS-Verbindung" --entry --text "Bitte Benutzernamen eingeben:")
if [ -z "`echo $USER`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Das Skript wurde durch den Nutzer beendet ..."
exit
fi
PASSWD=$(zenity --title "UMTS-Verbindung" --entry --text "Bitte Passwort eingeben:")
if [ -z "`echo $PASSWD`" ]; then
zenity --title "UMTS-Verbindung" --info --text "Das Skript wurde durch den Nutzer beendet ..."
exit
fi
#
tac /etc/wvdial.conf | sed -e '1,4d' | tac > /tmp/wvdial.conf
echo "Init3 = AT+CGDCONT=1,\"IP\",\"`echo $NETZ`\"" >> /tmp/wvdial.conf
echo "Password = `echo $PASSWD`" >> /tmp/wvdial.conf
echo "Username = `echo $USER`" >> /tmp/wvdial.conf
echo "Phone = `echo $TEL`" >> /tmp/wvdial.conf
rm -f /etc/wvdial.conf
mv /tmp/wvdial.conf /etc/
(xterm -title "Einwahl-Fenster bitte bis zum Trennen offen lassen ..." -e wvdial && ERG=$(echo "`tail /var/log/messages | grep Sent | tr " " "\n" | grep bytes -1 | sed -e '2,3d' | sed -e '2,3d'`+`tail /var/log/messages | grep Sent | tr " " "\n" | grep bytes -1 | sed -e '2,3d' | sed -e '1d' | sed -e '2d'`" | bc -l) && ERG1=$(echo "`echo $ERG`/1024" | bc -l) && ERG2=$(echo $ERG1 | cut -d "." -f1) && zenity --info --text "Verbrauchtes Datenvolumen:\n\n`echo $ERG2` Kb" && killall zenity) &
#sleep 30 && tail /var/log/messages | grep DNS | sed 's/ primary  //' | sed 's/ secondary//' \ | cut -d" " -f8 | while read line; do echo "nameserver $line" > /etc/resolv.conf; done
sleep 45
rm /etc/resolv.conf
echo "nameserver `tail -30 /var/log/messages | grep DNS | sed -e '2d'| rev | cut -d " " -f1 | rev`" > /etc/resolv.conf
while [ "`ps -e | grep wvdial`" ]; do zenity --notification --window-icon=/usr/share/icons/Tango/24x24/devices/network-wireless.png --text "UMTS-Verbindung: aktiv; lokale IP: `ifconfig | grep P-t-P | tr " " "\n" | grep addr | cut -b 6-`; DNS: `cat /etc/resolv.conf`" && zenity --info --text "UMTS-Verbindung: aktiv; lokale IP: `ifconfig | grep P-t-P | tr " " "\n" | grep addr | cut -b 6-`; DNS: `cat /etc/resolv.conf`"; continue; done
fi
killall zenity

Ich bitte um Rückmeldungen und Fehlermeldungen, damit ich das Skript in 2009.1 fehlerfrei integrieren kann.

flux.
« Letzte Änderung: 20.04.2009, 23:28:55 von flux »
"Et semel emissum volat irrevocabile verbum."
Und einmal entsandt fliegt unwiderruflich das Wort.
(Horaz)

Offline flux

  • Administrator
  • *
  • Beiträge: 1.891
... geschlossen ...

Hier geht es weiter ... http://lin2go.com/forum/index.php/topic,216.0.html

flux.
"Et semel emissum volat irrevocabile verbum."
Und einmal entsandt fliegt unwiderruflich das Wort.
(Horaz)