slight update
[rrq/rrqnet.git] / rrqnet-cron.sh
1 #!/bin/bash
2 #
3 # Cron-driven bot to start a rrqnet cables or switch unless already up
4
5 RRQNET=/usr/local/sbin/rrqnet
6
7 function start-switch() {
8     . $1
9     exec $RRQNET $VERBOSE -4 $PORT ${VPN[@]}
10 }
11
12 function start-cable() {
13     . $1
14     ip link show dev $TAP > /dev/null || \
15         { ip tuntap add $TAP mode tap ; ip link set dev $TAP up ; }
16     [ -z "$MAC" ] || ifconfig $TAP | grep -q "ether $MAC" || \
17         ifconfig $TAP hw ether $MAC
18     [ -z "$IP" ] || ip addr show dev $TAP | grep -q $IP || \
19         ifconfig $TAP $IP up
20     [ -z "$BR" ] || brctl show | grep -q $TAP || \
21         brctl addif $BR $TAP
22     exec $RRQNET $VERBOSE -4 ${OPTIONS[@]} -t $TAP $PORT ${VPN[@]}
23 }
24
25 for CABLE in $* ; do
26     CONF=/etc/rrqnet/conf.d/$CABLE.conf
27     eval $(grep ^PORT= $CONF)
28     lsof -i :$PORT > /dev/null && continue
29     eval $(grep ^TAP= $CONF)
30     LOG=/tmp/$CABLE.log
31     if [ -z "$TAP" ] ; then
32         ( start-switch $CONF < /dev/null >> $LOG 2>&1 & )
33     else
34         ( start-cable $CONF /dev/null >> $LOG 2>&1 & )
35     fi
36 done