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> |