| 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".1 | 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> |