My-IP6-Tool
This script is a powerfull, but at the moment very specialized, tool to dis/connect to IPv6 Networks with a wireless connection. It also could do pings and stores some IPv6 Adresses (which are hard to remember). I try to clean the specialised parts out later. This script is mainly developed by Ralf and I did only some fixes for the openMoko and cosmetics.
#!/bin/bash # # FH Koeln # WPF-IPv6 und IPSec für IPv6 # # Ralf Beckesch # Manuel Krischer # # Tool zur Client-Verbindung im IPv6 Testnetzes PROGNAME=$(basename $0) RESOLVCONF=/etc/resolv.conf IPV6DNS="2001:470:9b60:1:204:75ff:feca:d983" PC1a=2001:470:9b60:1:204:75ff:feca:d983 PC1b=2001:470:9b60:2:204:75ff:fe74:b81a PC2=2001:470:9b60:1:204:75ff:feca:ccc7 PC3=2001:470:9b60:2:204:75ff:feca:d967 PC4=2001:470:9b60:2:204:75ff:feca:d854 OM1=2001:470:9b60:1:212:cfff:fe4a:c258 OM2=2001:470:9b60:2:212:cfff:fe4a:c258 R2H1=2001:470:9b60:1:21a:92ff:fef0:e9ad R2H2=2001:470:9b60:2:21a:92ff:fef0:e9ad MINI1=2001:470:9b60:1:223:8ff:fe2c:3652 MINI2=2001:470:9b60:2:223:8ff:fe2c:3652 DNS=$IPV6DNS ALL_CLIENTS="PC1a PC1b PC2 PC3 PC4 DNS OM1 OM2 R2H1 R2H2 MINI1 MINI2" IPV6DOM="ktds6" DEV_OM=om-gta02 DEV_R2H=ktds-laptop DEV_MINI=minimi NW_DEV_OM=eth0 NW_DEV_R2H=wlan0 NW_DEV_MINI=eth1 STATUS=/proc/net/wireless NETZE="[ AR | HA ]" error () { echo -e "\033[01;31m$*\033[00m" } print () { echo -e "$*" >&1 } verbose () { if [ -n "$VERBOSE" ]; then print $* fi } debug () { if [ -n "$DEBUG" ]; then print '\033[01;36m'debug:'\033[00m' $* fi } error_exit () { error $* exit 1 } help () { print "\n\t$PROGNAME - Schweizer IPv6 Taschenkettensaege\n" print "--help | -h" print "\tDatt hier!" print "--list | -l" print "\tAlle sichtbaren WLAN SSIDS anzeigen" print "--connect | -c | connect | con $NETZE" print "\tmit gewähltem Netzwerk verbinden" print "--disconnect | -d | dcon" print "\tVerbindung mit Netz lösen" print "--resolv | -R " print "\tresolv.conf auf IPv6 Nameserver setzen" print "--status | -s | stat | status" print "\tVerbindungsstatus anzeigen" print "--ping | -p | p" print "\tAlle ($ALL_CLIENTS) Hosts einmal anpingen " print "--debug | -D | debug" print "\tDebug-Modus einschalten" } cur_ipv6 () { echo "$(ifconfig $NWDEV | grep -i inet6-adresse | head -1 | awk '{print $2}')" } cur_ssid () { echo "$(iwconfig $NWDEV | grep IEEE | sed 's/.*ESSID://g' | sed 's/"//g'| sed 's/ *$//g')" } status (){ print Lokale IPv6 print "\t'$( cur_ipv6 )'" print SSID print "\t'$( cur_ssid )'" } sping () { po=$(ping6 -c 1 $1 2>&1) R=$? if [ "$R" != "0" ]; then echo -en "\033[01;31mFehler: Gerät nicht erreichbar\033[00m" else echo -en "\033[01;32mOK Gerät antwortet\033[00m" fi } ping_all () { echo "Pingtest" for host in $ALL_CLIENTS; do echo -e "$host : " eval tmp=\${$host} echo -e "\tIPv6:\t$tmp" echo -en "\tstat:\t" sping $tmp echo done } r2h_dev_reload () { if [ "$DEVNAME" == "AsusR2H" ]; then debug r2h_dev_reload debug ifconfig $NWDEV down ifconfig $NWDEV down debug rmmod zd1211rw rmmod zd1211rw debug modprobe zd1211rw modprobe zd1211rw debug ifconfig $NWDEV up ifconfig $NWDEV up fi } disconnect () { debug "disconnect() ip link set $NWDEV down" ip link set $NWDEV down if [ "$DEVNAME" != "OpenMoko" ]; then debug "disconnect() iwconfig essid \"\"" iwconfig $NWDEV essid "" else debug iwconfig NICHT ausgefuehrt fi r2h_dev_reload } show () { local c=$1 debug "show() Netzwerk: $c" local iwo local ifo eval iwo=\${IW_OPTS_$c} eval ifo=\${IF_OPTS_$c} print Parameter für Netzwerk $c print iwconfig: print "\t$iwo" print ip: print "\t$ifo" } connect () { local c=$1 debug "connect() Netzwerk: $c" r2h_dev_reload local iwo local ifo eval iwo=\${IW_OPTS_$c} eval ifo=\${IF_OPTS_$c} if [ -z "$iwo" -o -z "$ifo" ]; then error_exit Netzwerk $c existiert nicht fi # debug iwo: $iwo # debug ifo: $ifo iwconfig $iwo debug "connect() iwconfig $iwo" ip $ifo debug "connect() ip $ifo" } if [ "$UID" != "0" ]; then error_exit "Bitte als Root ausführen!" fi if [ "$(hostname)" == "$DEV_OM" ]; then print "OpenMoko erkannt" NWDEV=$NW_DEV_OM DEVNAME=OpenMoko fi if [ "$(hostname)" == "$DEV_R2H" ]; then print "Asus R2H erkannt" NWDEV=$NW_DEV_R2H DEVNAME="AsusR2H" fi if [ "$(hostname)" == "$DEV_MINI" ]; then print "Dell Mini 9 erkannt" NWDEV=$NW_DEV_MINI DEVNAME="DellMini" fi if [ -z "$DEVNAME" ]; then error "G e r ä t n i c h t e r k a n n t !!!" NWDEV=wlan0 fi IW_OPTS_HA="$NWDEV mode Managed essid ipv6_ap250 channel 7" IF_OPTS_HA="link set $NWDEV up" IW_OPTS_AR="$NWDEV mode Managed essid ipv6_ap251 channel 7" IF_OPTS_AR="link set $NWDEV up" while [ -n "$1" ]; do debug futtere paramter "$1" case "$1" in --debug|-D|debug) DEBUG=JAWOHL debug eingeschaltet ;; --ping|-p|p) ping_all exit 0 ;; --list|-l|list) for i in $(iwlist $NWDEV scanning | grep ESSID | sed 's/ESSID:\|"//g'); do echo $i done exit 0 ;; --connect|-c|con) shift if [ -n "$1" ]; then connect $1 exit 0 else error_exit Parameter für --connect erwartet fi ;; --disconnect|-d|dcon) disconnect exit 0 ;; --resolv|-R|res|resolv) debug DNS auf \"$IPV6DNS\" gesetzt debug Suchdomäne ist: $IPV6DOM echo -n > $RESOLVCONF echo "nameserver $IPV6DNS" >> $RESOLVCONF echo "domain $IPV6DOM" >> $RESOLVCONF exit 0 ;; --status|-s|stat|status) status exit 0 ;; --help|-h|help) help exit 0 ;; *) help echo -e "\n\n\tParamter \"$1\" nicht erkannt" ;; esac shift done print "Was soll ich machen, frag mich mit $PROGNAME --help" exit 0