Hi, ich habe mir ein kleines Skript geschrieben. Soweit funktioniert auch alles, das einzige was mich stört ist eine nicht gewollte Ausgabe nach STDOUT beim Aufruf von iwconfig.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | #!/bin/bash # Changing IP and Route for different wireless lan networks # see /etc/wpa_supplicant.conf for known networks # Version: 0.1a, August 2009 # # # Script has to be run as root # if [ $(whoami) != root ]; then echo "You have to be root to run $0" exit 1 fi # # /etc/resolv.conf # RESOLV=/etc/resolv.conf # # WPA_SUPPLICANT # ps_wpa=$(ps aux | awk '/wpa_supplicant/ && !/awk/ { print $11 }') # # Get active ESSID # act_wlan=$(iwconfig | awk '/ESSID/ { print $4 }' | sed 's/ESSID:"//' | sed 's/"//') # # Get wireless device # iface=$(iwconfig | awk '/ESSID/ { print $1 }') # # Router and Gateway IP # router_ip=$(route | awk '/default/ { print $2 }') # # Functions # function del_devices() { ifconfig "$iface" down || return 1 route del default || return 1 } function wpa_running() { if [ "$ps_wpa" = "wpa_supplicant" ]; then : else wpa_supplicant -D wext -i "$iface" -c /etc/wpa_supplicant.conf -B fi } function wlan_nbg() { ifconfig "$iface" 100.10.10.10 netmask 255.255.255.0 up || return 1 route add default gw 100.10.10.1 || return 1 echo "nameserver 100.10.10.1" > "$RESOLV" } function wlan_ste() { ifconfig "$iface" 120.12.12.12 netmask 255.255.255.0 up || return 1 route add default gw 120.12.12.1 || return 1 echo "nameserver 120.12.12.1" > "$RESOLV" } function pingtest() { ping -c 5 "$router_ip" > /dev/null if [ "$?" -eq 0 ]; then connected else not_connected exit 1 fi } function connected() { cat << _CON :: Verbindung hergestellt :: Netzwerk: "$act_wlan" :: Done _CON } function not_connected() { cat << _NOCON :: Keine Verbindung hergestellt :: Abbbruch _NOCON } # # Change IP for each ESSID # case $act_wlan in ESSID1) del_devices wpa_running wlan_nbg pingtest ;; ESSID2) del_devices wpa_running wlan_ste pingtest ;; ESSID3) /home/tom/skripte/ohmwlan ;; *) ;; esac # EOF |
Das Problem ist nun dass bei iface=$(iwconfig | awk '/ESSID/ { print $1 }') bzw. act_wlan=$(iwconfig | awk '/ESSID/ { print $4 }' | sed 's/ESSID:"//' | sed 's/"//') alle Netzwerkdevices in STDOUT erscheinen. In meinem Beispiel sieht dass dann folgendermaßen aus:
1 2 3 4 5 6 7 | tom /home/tom $ iwconfig | awk '/ESSID/ { print $4 }' | sed 's/ESSID:"//' | sed 's/"//' lo no wireless extensions. eth1 no wireless extensions. ESSID1 |
Eine Umlenkung nach >/dev/null bringt auch nicht den gewünschten Erfolg. Nun die Frage ob das machbar ist, dass diese Ausgabe verschwindet? Falls nicht wäre es auch nicht so schlimm, ist ja nur ein "Schönheitsfehler", aber falls es geht freue ich mich natürlich über Ratschläge.