run.sh (2536B)
1 #!/bin/sh 2 3 . ./common.sh 4 5 mkpaths 6 7 usage() { 8 echo "usage: `basename $1` [-hfnwlo] [-[s|k|u|r] [connection [args ...]]" 9 } 10 11 dostart=0 12 dokill=0 13 dohup=0 14 dorestart=0 15 dolist=0 16 dolistopen=0 17 dosuspend=0 18 dowakeup=0 19 doforce=0 20 21 cmdarg="" 22 while getopts "fwnskurlo" opt; 23 do 24 case $opt in 25 s) 26 dostart=1 27 cmdarg="-s" 28 ;; 29 k) 30 dokill=1 31 cmdarg="-k" 32 ;; 33 u) 34 dohup=1 35 cmdarg="-u" 36 ;; 37 r) 38 dorestart=1 39 ;; 40 l) 41 dolist=1 42 ;; 43 o) 44 dolistopen=1 45 ;; 46 n) 47 dosuspend=1 48 ;; 49 w) 50 dowakeup=1 51 ;; 52 f) 53 doforce=1 54 ;; 55 *) 56 usage $0 57 exit 1 58 ;; 59 esac 60 done 61 shift `expr $OPTIND - 1` 62 63 if [ $dolist -eq 1 ]; 64 then 65 echo "Available network types:" 66 for i in `ls -d */ | sed 's~/~~g'`; 67 do 68 echo $i 69 done 70 71 exit 0 72 fi 73 74 if [ $dolistopen -eq 1 ]; 75 then 76 conns=`getstate "open"` 77 if [ -z "$conns" ]; 78 then 79 echo "There are no connections open." 80 exit 1 81 else 82 echo "Open connections:" 83 for conn in $conns; 84 do 85 echo $conn 86 done 87 fi 88 89 exit 0 90 fi 91 92 if [ $dowakeup -eq 1 ]; 93 then 94 [ $LOGGING -eq 1 ] && \ 95 logger -s -t "conn" "waking up" 96 cmdarg="-f -s" 97 fi 98 99 if [ $dosuspend -eq 1 ]; 100 then 101 [ $LOGGING -eq 1 ] && \ 102 logger -s -t "conn" "suspending" 103 $0 -f -k $* 104 exit 0 105 fi 106 107 if [ $dorestart -eq 1 ]; 108 then 109 $0 -k $* 110 $0 -s $* 111 exit $? 112 fi 113 114 if [ -z "$cmdarg" ]; 115 then 116 usage $0 117 exit 1 118 fi 119 120 connection=$1 121 profile=$2 122 if [ -z "$1" ]; 123 then 124 if [ $dostart -eq 1 ] && [ ! $dowakeup -eq 1 ]; 125 then 126 conns=`getdefaultstate "open"` 127 else 128 conns=`getstate "open"` 129 fi 130 131 [ -z "$conns" ] && exit 0 132 [ $doforce -eq 1 ] && cmdarg="-f $cmdarg" 133 134 for conn in $conns; 135 do 136 narg0=`echo $conn | awk -F'|' '{print $1}'` 137 [ -z "$narg0" ] && continue; 138 narg1=`echo $conn | awk -F'|' '{print $2}'` 139 140 $0 $cmdarg $narg0 $nargs1 141 exit 0 142 done 143 144 exit $? 145 fi 146 147 if [ $doforce -eq 0 ]; 148 then 149 if [ $dostart -eq 1 ]; 150 then 151 if isset "open" $connection $profile; 152 then 153 echo "Connection $connection $profile is already open." 154 echo "Use -f for forcing the opening." 155 exit 1 156 fi 157 fi 158 159 if [ $dokill -eq 1 ]; 160 then 161 if ! isset "open" $connection $profile; 162 then 163 echo "Connection $connection $profile is already" \ 164 "closed." 165 echo "Use -f for forcing the closing." 166 exit 1 167 fi 168 delstate "open" $connection $profile 169 fi 170 fi 171 172 if [ $# -lt 2 ]; 173 then 174 shift $# 175 else 176 shift 2 177 fi 178 179 [ $LOGGING -eq 1 ] && \ 180 logger -s -t "conn" "running: $connection $cmdarg $profile $*" 181 182 runconnection $connection $cmdarg $profile $* 183 if [ $? -eq 0 ] && [ $dostart -eq 1 ] && [ ! $doforce -eq 1 ]; 184 then 185 addstate "open" $connection $profile 186 fi 187 188 exit $? 189