#!/bin/bash #------------- Einige Standardvariablen ------------------------- ETC_PPP="/etc/ppp" MOD_DEV="/dev/modem" MOD_TTY="/dev/ttyS1" MOD_SPEED="57600" CONSOLE="/dev/console" VAR_RUN="/var/run" BACKUP="stud_install.backup.tgz" #----------------- Einleitung --------------------------- clear echo "StudServ-Installer vers. 0.2 alpha" echo "----------------------------------" echo "Dieses Skript sollte die noetigen Einwahlskripte erzeugen," echo "um mit Linux auf den Studierendenrechner der Uni Hannover" echo "zu gelangen." echo echo "Fuehren Sie dieses Skript unbedingt als root aus, sonst" echo "schlaegt es fehl !" echo echo "Ich uebernehme keine Verantwortung fuer Probleme, die aus" echo "der Verwendung dieses Skriptes entstehen !" echo "Bitte senden Sie eventuelle Fehler aber an:" echo "sirtobi AT stud DOT uni-hannover DOT de" echo echo "Viel Spass !" echo echo "Bitte druecken Sie um fortzufahren !" read a #------------------- Skript als root gestartet ? ----------- echo -n "Sind Sie root ? .." if [ "$UID" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Bitte starten Sie dieses Skript als root !" echo "Ich breche ab !" echo exit 1 fi #------------------- /etc/ppp ------------------------ echo -n "Existiert $ETC_PPP ? .." if [ -e "$ETC_PPP" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann das Verzeichnis $ETC_PPP nicht finden !" echo "Bitte brechen Sie mittels STRG-C ab, um dieses" echo "Verzeichnis anzulegen, oder geben" echo "Sie nun den Pfad an, in dem Ihre" echo "Einwahlskripte liegen sollen !" echo "Dies kann von Distribution zu Distribution variieren," echo "im Zweifelsfall versuchen Sie $ETC_PPP !" echo -n "Skript-Pfad: " read ETC_PPP echo echo -n "Existiert $ETC_PPP ? .." if [ -e "$ETC_PPP" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Das Skriptverzeichnis existiert nicht !" echo "Ich breche ab !" echo exit 1 fi fi echo "Installiere Skripte in $ETC_PPP." #------------------------------- Modem ---------------------------- echo -n "Existiert $MOD_DEV ? .." if [ -e "$MOD_DEV" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann das Verzeichnis $MOD_DEV nicht finden !" echo "Bitte geben Sie an, an welchem Device Ihr Modem " echo "angeschlossen ist, z.B. $MOD_TTY" echo -n "Modem-Device: " read MOD_DEV echo echo -n "Existiert $MOD_DEV ? .." if [ -e "$MOD_DEV" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Der Modemdevice existiert nicht !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze Modem an $MOD_DEV." #--------------------------- Modem-Speed --------------------- echo echo "Bitte geben Sie die MAXIMALE Geschwindigkeit Ihres" echo "Modems an, z.B. $MOD_SPEED" echo -e "Modem-Geschwindigkeit: " read a if [ "$a" != "" ] then MOD_SPEED="$a" fi echo "Benutze Modem mit $MOD_SPEED bps." #--------------------------- PPP-Daemon ------------------------- echo -n "Existiert pppd ? .." PPPD=`which pppd` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann pppd nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem pppd liegt !" echo -n "pppd-Pfad: " read PPPD echo echo -n "Existiert $PPPD ? .." if [ -e "$PPPD" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann pppd noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $PPPD." #---------------------- Chat ------------------------------- echo -n "Existiert chat ? .." CHAT=`which chat` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann chat nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem chat liegt !" echo -n "chat-Pfad: " read CHAT echo echo -n "Existiert $CHAT ? .." if [ -e "$CHAT" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann chat noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $CHAT." #------------------------------ Kill -------------------------- echo -n "Existiert kill ? .." KILL=`which kill` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann kill nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem kill liegt !" echo -n "kill-Pfad: " read KILL echo echo -n "Existiert $KILL ? .." if [ -e "$KILL" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann kill noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $KILL." #------------------------------ Cat -------------------------- echo -n "Existiert cat ? .." CAT=`which cat` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann cat nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem cat liegt !" echo -n "cat-Pfad: " read CAT echo echo -n "Existiert $CAT ? .." if [ -e "$CAT" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann cat noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $CAT." #------------------------------ bash -------------------------- echo -n "Existiert bash ? .." BASH=`which bash` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann die bash nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem die bash liegt !" echo -n "bash-Pfad: " read BASH echo echo -n "Existiert $BASH ? .." if [ -e "$BASH" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann die bash noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $BASH." #------------------------------ xterm -------------------------- echo -n "Existiert xterm ? .." XTERM=`which xterm` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann den xterm nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem der xterm liegt !" echo -n "xterm-Pfad: " read XTERM echo echo -n "Existiert $XTERM ? .." if [ -e "$XTERM" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann den xterm noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $XTERM." #------------------------------ echo -------------------------- echo -n "Existiert echo ? .." ECHO=`which echo` if [ "$?" -eq 0 ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann echo nicht finden !" echo "Bitte geben Sie den vollstaendigen Pfad an, " echo "in dem echo liegt !" echo -n "echo-Pfad: " read ECHO echo echo -n "Existiert $ECHO ? .." if [ -e "$ECHO" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann echo noch immer nicht finden !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $ECHO." #----------------------------- VAR_RUN -------------------------- echo -n "Existiert $VAR_RUN ? .." if [ -e "$VAR_RUN" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann das Verzeichnis $VAR_RUN nicht finden !" echo "Geben Sie bitte den Pfad an, in dem Ihre" echo "PID-Dateien liegen ! " echo -n "PID-Pfad: " read VAR_RUN echo echo -n "Existiert $VAR_RUN ? .." if [ -e "$VAR_RUN" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Das PID-Verzeichnis existiert nicht !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $VAR_RUN." #----------------------------- Console -------------------------- echo -n "Existiert $CONSOLE ? .." if [ -e "$CONSOLE" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Ich kann das Verzeichnis $CONSOLE nicht finden !" echo "Geben Sie bitte Ihren Console-Device an !" echo -n "Console-Device: " read CONSOLE echo echo -n "Existiert $CONSOLE ? .." if [ -e "$CONSOLE" ] then echo ".. Jau !" else echo ".. Nein !" echo echo "Der Console-Device existiert nicht !" echo "Ich breche ab !" echo exit 1 fi fi echo "Benutze $CONSOLE." #----------------------------- Benutzername ------------------ echo echo "Bitte geben Sie nun Ihren Benutzernamen (oder Username, Login, etc.)" echo "fuer den Studentenserver ein !" echo -n "Benutzername: " read STUD_USER echo echo -n "Validiere Benutzernamen .." LANG=`echo "$STUD_USER" | wc -c` if [ "$LANG" -ge 10 ] then echo ".. zu lang !" echo "Breche ab !" echo exit 1 fi if [ "$LANG" -le 2 ] then echo ".. zu kurz !" echo "Breche ab !" echo exit 1 fi echo ".. koennte tun !" echo "Benutze Benutzernamen $STUD_USER." #----------------------------- Passwort ------------------ echo echo "ACHTUNG ! Stellen Sie sicher, dass Ihnen ab nun niemand mehr zusieht !!!" echo "Bitte geben Sie nun Ihr Passwort fuer den Studentenserver ein !" echo -n "Passwort: " read STUD_PASS echo echo -n "Validiere PASSWORT .." LANG=`echo "$STUD_PASS" | wc -c` if [ "$LANG" -ge 10 ] then echo ".. zu lang !" echo "Breche ab !" echo exit 1 fi if [ "$LANG" -le 6 ] then echo ".. zu kurz !" echo "Breche ab !" echo exit 1 fi echo ".. koennte tun !" echo "Benutze Passwort $STUD_PASS." #--------------- Last Chance -------------------------------- echo "=================================================" echo "Ich werde jetzt an Ihrem Dateisystem rummurksen !" echo "Dies ist Ihre letzte Chance abzubrechen !" echo "Druecken Sie STRG+C zum Abbrechen, oder ENTER" echo "um fortzufahren." echo "WEITER AUF EIGENE GEFAHR !!!" echo "================================================" read a clear #--------------------------- Backup ------------------------- echo -n "Erstelle Backup von $ETC_PPP .." rm "$ETC_PPP/$BACKUP" >/dev/null 2>/dev/null tar --remove-files -vczf "$ETC_PPP/$BACKUP" "$ETC_PPP"/* >/dev/null 2>/dev/null if [ "$?" -eq 0 ] then echo ".. Ok" echo "Backup erstellt als $ETC_PPP/$BACKUP" else echo "Fehler beim Erstellen des Backup !" echo "Breche ab !" echo exit 1 fi chgrp root "$ETC_PPP/$BACKUP" chown root "$ETC_PPP/$BACKUP" chmod 400 "$ETC_PPP/$BACKUP" #---------------- Installieren der Skripte ----------------- echo "Erstelle Skripte ..." #-------------------- ppp-on ------------------------------- PFAD="$ETC_PPP"/ppp-on echo -n "... $PFAD .." echo "#!$BASH" >"$PFAD" echo "USERNAME=$STUD_USER" >>"$PFAD" echo "PPP_DEVICE=$MOD_DEV" >>"$PFAD" echo "BPS=$MOD_SPEED" >>"$PFAD" echo "" >>"$PFAD" echo "$ECHO Verbinde mit Studserv..." >>"$PFAD" echo "" >>"$PFAD" echo -n "$PPPD \"\$PPP_DEVICE\" \"\$BPS\" " >>"$PFAD" echo -n "lock " >>"$PFAD" echo -n "connect '$CHAT -v -f $ETC_PPP/uni.chat' " >>"$PFAD" echo -n "crtscts " >>"$PFAD" echo -n "defaultroute " >>"$PFAD" echo -n "noipdefault " >>"$PFAD" echo -n "user \"\$USERNAME\" " >>"$PFAD" echo "debug" >>"$PFAD" echo "sleep 5" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 750 $PFAD echo ".. Ok" #-------------------- ppp-off ------------------------------- PFAD="$ETC_PPP"/ppp-off echo -n "... $PFAD .." echo "#!$BASH" >"$PFAD" echo "$KILL \`$CAT $VAR_RUN/ppp0.pid\`" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 750 $PFAD echo ".. Ok" #-------------------- ip-up ------------------------------- PFAD="$ETC_PPP"/ip-up echo -n "... $PFAD .." echo "#!$BASH" >"$PFAD" echo "$ECHO \"Verbindung aufgebaut...\" > $CONSOLE" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 750 $PFAD echo ".. Ok" #-------------------- ip-down ------------------------------- PFAD="$ETC_PPP"/ip-down echo -n "... $PFAD .." echo "#!$BASH" >"$PFAD" echo "$ECHO \"Verbindung geschlossen...\" > $CONSOLE" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 750 $PFAD echo ".. Ok" #-------------------- studserv ------------------------------- PFAD="$ETC_PPP"/studserv echo -n "... $PFAD .." echo "#!$BASH" >"$PFAD" echo "if [ -f $VAR_RUN/ppp0.pid ]" >>"$PFAD" echo "then # Netzwerk ist schon gestartet !" >>"$PFAD" echo " $ETC_PPP/ppp-off" >>"$PFAD" echo "else" >>"$PFAD" echo " $XTERM -geometry 40x4 -T StudServ -e $ETC_PPP/ppp-on 2>/dev/null" >>"$PFAD" echo " if [ \"\$?\" -eq 1 ]" >>"$PFAD" echo " then" >>"$PFAD" echo " $ETC_PPP/ppp-on" >>"$PFAD" echo " fi" >>"$PFAD" echo "fi" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 750 $PFAD echo ".. Ok" #-------------------- uni.chat ------------------------------- PFAD="$ETC_PPP"/uni.chat echo -n "... $PFAD .." echo "TIMEOUT 50" >"$PFAD" echo "ABORT BUSY" >>"$PFAD" echo "ABORT \"NO CARRIER\"" >>"$PFAD" #echo "\"\" \\r\\dat\\r\\d\\c" >>"$PFAD" #echo "OK \\c" >>"$PFAD" echo "ABORT ERROR" >>"$PFAD" #echo "\"\" \"\\dat&f0\\r\\d\\c\"" >>"$PFAD" #echo "OK \\dATDT76320\\r\\d\\d\\d\\c" >>"$PFAD" echo "\"\" ATS7=45S0=0L1V1X4&c1E1Q0" >>"$PFAD" echo "OK ATDT76320" >>"$PFAD" echo "CONNECT \\c" >>"$PFAD" chown root $PFAD chgrp users $PFAD chmod 640 $PFAD echo ".. Ok" #-------------------- pap-secrets ------------------------------- PFAD="$ETC_PPP"/pap-secrets echo -n "... $PFAD .." echo "$STUD_USER * $STUD_PASS " >"$PFAD" chown root $PFAD chgrp root $PFAD chmod 600 $PFAD echo ".. Ok" #-------------------- options ------------------------------- PFAD="$ETC_PPP"/options echo -n "... $PFAD .." echo "" >"$PFAD" chown root $PFAD chgrp users $PFAD chmod 440 $PFAD echo ".. Ok" #------------------ Final -------------------------- echo echo "Herzlich Glueckwunsch !" echo "=======================" echo "Das sollte es gewesen sein !" echo "Wenn das Verzeichnis $ETC_PPP fuer den normalen" echo "Benutzer lesbar ist, sollte er mittels" echo "$ETC_PPP/studserv" echo "die Verbindung zum Studentenserver starten, bzw." echo "beenden koennen." echo "Optional kann auch $ETC_PPP/ppp-on und" echo "$ETC_PPP/ppp-off benutzt werden." echo "Sicherheitshalber sollten Sie vor dem ersten Versuch" echo "jedoch nochmal alle Dateien in $ETC_PPP durchgehen," echo "insbesondere dann, wenn Sie eine ungewoehnliche" echo "Systemkonfiguration haben." echo "Den Verbindungsaufbau koennen Sie in der Console ueberwachen," echo "unter X also z.B. mit dem Programm xconsole !" echo echo "Viel Glueck !" echo " sirtobi"