Änderungen

Zur Navigation springen Zur Suche springen
2.159 Bytes hinzugefügt ,  18:16, 18. Mai 2007
keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:  +
===Funktionen===
 +
<pre>
 +
/etc/init.d/vpn start |stop | restart | restart_olsr | restart_tunnel | pingtest | status | check | ifup INTERFACE NODE
 +
</pre>
 +
 +
Die Funktion "check" wird alle 5 Minuten per cron ausgefuehrt und startet den Tunnel oder den OLSR-Dienst neu, falls keine CPU-Zeit mehr konsumiert wird.
 +
 +
===Skript===
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
Zeile 109: Zeile 117:  
         ps ax|
 
         ps ax|
 
         awk -F tap '/tap/ {
 
         awk -F tap '/tap/ {
                 if($2<99&&$2>=0)
+
                 if($2<99&&$2>=0){
                printf("tap %2i\n",$2)}'|
+
                        NO=$2*1
 +
                        printf("tap %2i - ",NO)
 +
                        system("grep \"device tap"NO" \" /etc/vtund.conf")
 +
                        }
 +
                }'|
 
         sort
 
         sort
 
}
 
}
Zeile 122: Zeile 134:     
fkt_pingall_clients() {
 
fkt_pingall_clients() {
         awk '/ifup/ {printf $1": ";system("ping -c 1 10.63."$12".253|grep \"64 bytes\"");print ""}' /etc/vtund.conf
+
         awk '/ifup/ {printf $1": ";system("ping -c 3 10.63."$12".253 | grep \"64 bytes\"");print ""}' /etc/vtund.conf
 +
        awk '/ifup/ {printf $1": ";system("ping -c 3 10.63."$12".| grep \"64 bytes\"");print ""}' /etc/vtund.conf
 +
}
 +
 
 +
fkt_check_olsr_and_tunnel () {
 +
        BIN_OLSR="olsrd"
 +
        BIN_VTUN="vtund"
 +
 
 +
        PID_OLSR="$(pidof -s $BIN_OLSR)"
 +
        PID_VTUN="$(pidof -s $BIN_VTUN)"
 +
 
 +
        OLSR_TIME_1="$(top -p $PID_OLSR -n 1 -b | grep $BIN_OLSR | awk '{print $11}')"
 +
        VTUN_TIME_1="$(top -p $PID_VTUN -n 1 -b | grep $BIN_VTUN | awk '{print $11}')"
 +
 
 +
        sleep 60
 +
 
 +
        OLSR_TIME_2="$(top -p $PID_OLSR -n 1 -b | grep $BIN_OLSR | awk '{print $11}')"
 +
        VTUN_TIME_2="$(top -p $PID_VTUN -n 1 -b | grep $BIN_VTUN | awk '{print $11}')"
 +
 
 +
        if [ "$OLSR_TIME_1" = "$OLSR_TIME_2" ]; then
 +
                $0 restart_olsr
 +
        fi
 +
 
 +
        if [ "$VTUN_TIME_1" = "$VTUN_TIME_2" ]; then
 +
                $0 restart_tunnel
 +
        fi
 +
}
 +
 
 +
case $1 in
 +
        start)
 +
                fkt_infotext "Starting freifunk-VPN ..."
 +
                fkt_write_olsrd_conf
 +
                fkt_netcount_start
 +
        fi
 +
 
 +
        if [ "$VTUN_TIME_1" = "$VTUN_TIME_2" ]; then
 +
                $0 restart_tunnel
 +
        fi
 
}
 
}
    
case $1 in
 
case $1 in
 
         start)
 
         start)
 +
                fkt_infotext "Starting freifunk-VPN ..."
 
                 fkt_write_olsrd_conf
 
                 fkt_write_olsrd_conf
 
                 fkt_netcount_start
 
                 fkt_netcount_start
Zeile 133: Zeile 183:  
         ;;
 
         ;;
 
         stop)
 
         stop)
 +
                fkt_infotext "Stopping freifunk-VPN ..."
 
                 fkt_kill_olsrd
 
                 fkt_kill_olsrd
 
                 fkt_kill_vtund
 
                 fkt_kill_vtund
Zeile 140: Zeile 191:  
                 $0 stop
 
                 $0 stop
 
                 $0 start
 
                 $0 start
 +
        ;;
 +
        restart_olsr)
 +
                fkt_infotext "Stopping/Starting freifunk-olsr ..."
 +
                fkt_kill_olsrd
 +
                fkt_start_olsrd
 +
        ;;
 +
        restart_tunnel)
 +
                fkt_infotext "Stopping/Starting freifunk-tunnel ..."
 +
                fkt_kill_vtund
 +
                fkt_start_vtund
 
         ;;
 
         ;;
 
         status)
 
         status)
Zeile 145: Zeile 206:  
                 fkt_status_vtund
 
                 fkt_status_vtund
 
                 fkt_status_netcount
 
                 fkt_status_netcount
 +
        ;;
 +
        check)
 +
                fkt_check_olsr_and_tunnel
 
         ;;
 
         ;;
 
         pingtest)
 
         pingtest)
Zeile 153: Zeile 217:  
         ;;
 
         ;;
 
         *)
 
         *)
                 echo "Usage: $0 (start|stop|restart|pingtest|status|ifup INTERFACE NODE)"
+
                 echo "Usage: $0 ( start |stop | restart | restart_olsr | restart_tunnel | pingtest | status | check | ifup INTERFACE NODE)"
 
         ;;
 
         ;;
 
esac
 
esac
   
</pre>
 
</pre>

Navigationsmenü