Zeile 30: |
Zeile 30: |
| | | |
| ===Skript=== | | ===Skript=== |
− | *dieses Skript am besten nach <tt>/etc/init.d/S54antennen_autosensing</tt> kopieren | + | *[http://www.stud.tu-ilmenau.de/~babi-mtr/wirelessweimar/S54antennen_autosensing dieses Skript runterladen] und am besten nach <tt>/etc/init.d/S54antennen_autosensing</tt> kopieren |
| <pre> | | <pre> |
| #!/bin/sh | | #!/bin/sh |
| | | |
− | logger "AUTOANT-WAHL: Start..."
| + | # |
| + | # Automatische Wahl der richtigen Antenne - Bastian Bittorf /weimarnetz - $VER 2006aug31,12uhr07 |
| + | # |
| | | |
| RX=$(nvram get wl0_antdiv) | | RX=$(nvram get wl0_antdiv) |
| TX=$(nvram get ff_txant) | | TX=$(nvram get ff_txant) |
| + | PRE="AUTOANT-WAHL: " |
| + | ENDE=0 |
| + | CONF="/etc/olsrd.conf" |
| + | PAUSE=$(awk '{if($1=="LinkQualityWinSize")s=$2;if($1=="HelloInterval"){print s*$2;exit}}' $CONF) |
| + | eval $(netparam) |
| + | |
| + | logger $PRE"Start..." |
| + | |
| + | if [ "$RX" = "-1" ] && [ "$TX" = "-1" ] && [ "$(nvram get ff_httpinfo)" = 1 ] |
| + | then |
| + | |
| + | # |
| + | # Antenne A einstellen, starten einer neuen Messreihe, warten |
| + | # |
| + | |
| + | logger $PRE"Antenne A einstellen und $PAUSE sek. warten..." |
| + | wl -i $WIFIDEV antdiv 0 |
| + | wl -i $WIFIDEV txant 0 |
| + | sleep $PAUSE |
| + | |
| + | # |
| + | # Erfassen der Messwerte je nach Plugin unterschiedlich |
| + | # |
| + | |
| + | if [ -n "$(grep httpinfo $CONF)" ] |
| + | then |
| + | logger $PRE"httpinfo-Plugin (Port 8080) erkannt..." |
| + | eval $(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{ |
| + | if(s==1&&$0=="</table>")exit |
| + | if(s==1){z++;p=p+$21;etx=etx+$33} |
| + | if($3=="width")s=1} |
| + | END{print "NACHBAR1="z";PAKETE1="p";ETXSUM1="etx*100";ETXSUM="etx}') |
| + | fi |
| + | |
| + | if [ -n "$(grep txtinfo $CONF)" ] |
| + | then |
| + | logger $PRE"txtinfo-Plugin (Port 2006) erkannt..." |
| + | eval $(wget -O - http://127.0.0.1:2006/neighbours|grep $WIFIADR|awk '{ |
| + | z++;p=p+$6;etx=etx+$8} |
| + | END{print "NACHBAR1="z";PAKETE1="p";ETXSUM1="etx*100";ETXSUM="etx}') |
| + | fi |
| + | |
| + | logger $PRE"Nachbarn,Pakete,ETXsum = $NACHBAR1, $PAKETE1, $ETXSUM" |
| + | |
| + | # |
| + | # Antenne B einstellen, starten einer neuen Messreihe, warten |
| + | # |
| + | |
| + | logger "AUTOANT-WAHL: Antenne B einstellen, OLSR-Neustart erzwingen und $PAUSE sek. warten..." |
| + | wl -i $WIFIDEV antdiv 1 |
| + | wl -i $WIFIDEV txant 1 |
| + | /etc/init.d/S53olsrd restart |
| + | sleep $PAUSE |
| | | |
− | if [ "$RX" = "-1" ] && [ "$TX" = "-1" ];then
| + | # |
| + | # Erfassen der Messwerte je nach Plugin unterschiedlich |
| + | # |
| | | |
− | eval $(netparam)
| + | if [ -n "$(grep httpinfo $CONF)" ] |
− | PAUSE=$(awk '{if($1=="LinkQualityWinSize")s=$2;if($1=="HelloInterval"){print s*$2;exit}}' /etc/olsrd.conf)
| + | then |
− | ENDE=0
| + | eval $(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{ |
| + | if(s==1&&$0=="</table>")exit |
| + | if(s==1){z++;p=p+$21;etx=etx+$33} |
| + | if($3=="width")s=1} |
| + | END{print "NACHBAR1="z";PAKETE1="p";ETXSUM1="etx*100";ETXSUM="etx}') |
| + | fi |
| | | |
− | logger "AUTOANT-WAHL: Antenne A einstellen und $PAUSE sek. warten..."
| + | if [ -n "$(grep txtinfo $CONF)" ] |
− | wl -i $WIFIDEV antdiv 0
| + | then |
− | wl -i $WIFIDEV txant 0
| + | eval $(wget -O - http://127.0.0.1:2006/neighbours|grep $WIFIADR|awk '{ |
− | sleep $PAUSE
| + | z++;p=p+$6;etx=etx+$8} |
| + | END{print "NACHBAR2="z";PAKETE2="p";ETXSUM2="etx*100";ETXSUM="etx}') |
| + | fi |
| | | |
− | WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
| + | # |
− | if(s==1&&$0=="</table>")exit
| + | # Vergleiche & Auswertungen |
− | if(s==1){
| + | # |
− | z++
| |
− | p=p+$21
| |
− | etx=etx+$33
| |
− | }
| |
− | if($3=="width")s=1}
| |
− | END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
| |
− | NACHBAR1=$(echo "$WERTE"|cut -d";" -f1)
| |
− | PAKETE1=$(echo "$WERTE"|cut -d";" -f2)
| |
− | ETXSUM1=$(echo "$WERTE"|cut -d";" -f3)
| |
− | ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
| |
− | logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR1,$PAKETE1,$ETXSUM1,$ETXSUM"
| |
| | | |
− | /etc/init.d/S53olsrd restart
| + | logger $PRE"Nachbarn,Pakete,ETXsum = $NACHBAR2, $PAKETE2, $ETXSUM" |
| | | |
− | logger "AUTOANT-WAHL: Antenne B einstellen und $PAUSE sek. warten..." | + | if [ "$ENDE" = 0 ];then logger "AUTOANT-WAHL: Nachbaranzahl vergleichen...";fi |
− | wl -i $WIFIDEV antdiv 1
| + | if [ "$NACHBAR1" -gt "$NACHBAR2" ] && [ "$ENDE" = 0 ];then ENDE=1;ANT=A;fi |
− | wl -i $WIFIDEV txant 1
| + | if [ "$NACHBAR1" -lt "$NACHBAR2" ] && [ "$ENDE" = 0 ];then ENDE=1;fi |
− | sleep $PAUSE
| |
| | | |
− | WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
| + | if [ "$ENDE" = 0 ];then logger "AUTOANT-WAHL: Paketanzahl vergleichen...";fi |
− | if(s==1&&$0=="</table>")exit | + | if [ "$PAKETE1" -gt "$PAKETE2" ] && [ "$ENDE" = 0 ];then ENDE=1;ANT=A;fi |
− | if(s==1){
| + | if [ "$PAKETE1" -lt "$PAKETE2" ] && [ "$ENDE" = 0 ];then ENDE=1;fi |
− | z++
| |
− | p=p+$21
| |
− | etx=etx+$33
| |
− | }
| |
− | if($3=="width")s=1} | |
− | END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
| |
− | NACHBAR2=$(echo "$WERTE"|cut -d";" -f1)
| |
− | PAKETE2=$(echo "$WERTE"|cut -d";" -f2)
| |
− | ETXSUM2=$(echo "$WERTE"|cut -d";" -f3)
| |
− | ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
| |
− | logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR2,$PAKETE2,$ETXSUM2,$ETXSUM"
| |
| | | |
− | if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Nachbaranzahl vergleichen...";fi | + | if [ "$ENDE" = 0 ];then logger "AUTOANT-WAHL: ETX-Summen vergleichen...";fi |
− | if [ "$NACHBAR1" -gt "$NACHBAR2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi | + | if [ "$ETXSUM1" -lt "$ETXSUM2" ] && [ "$ENDE" = 0 ];then ENDE=1;ANT=A;fi |
− | if [ "$NACHBAR1" -lt "$NACHBAR2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi | + | if [ "$ETXSUM1" -gt "$ETXSUM2" ] && [ "$ENDE" = 0 ];then ENDE=1;fi |
| | | |
− | if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Paketanzahl vergleichen...";fi
| + | # |
− | if [ "$PAKETE1" -gt "$PAKETE2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi
| + | # Umsetzungen der Schlussfolgerung |
− | if [ "$PAKETE1" -lt "$PAKETE2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi
| + | # |
| | | |
− | if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: ETX-Summen vergleichen...";fi | + | if [ "$ANT" = "A" ] |
− | if [ "$ETXSUM1" -lt "$ETXSUM2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi
| + | then |
− | if [ "$ETXSUM1" -gt "$ETXSUM2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi
| + | wl -i $WIFIDEV antdiv 0 |
| + | wl -i $WIFIDEV txant 0 |
| + | logger $PRE"Antenne A wird genommen..." |
| + | else |
| + | logger $PRE"Antenne B wird genommen (bzw. gelassen)..." |
| + | fi |
| | | |
− | if [ "$ANT" = "A" ]
| |
− | then
| |
− | wl -i $WIFIDEV antdiv 0
| |
− | wl -i $WIFIDEV txant 0
| |
− | logger "AUTOANT-WAHL: Antenne A wird genommen..."
| |
| else | | else |
− | logger "AUTOANT-WAHL: Antenne B wird genommen (bzw. gelassen)..." | + | logger $PRE"keine Skriptausfuehrung, Antennenwahl nicht auf Auto oder OLSR-Info-Plugin nicht aktiviert." |
− | fi
| |
− | | |
| fi | | fi |
| | | |
− | logger "AUTOANT-WAHL: Ende..." | + | logger $PRE"Ende..." |
| | | |
| + | # |
| + | # Ende... |
| + | # |
| </pre> | | </pre> |