#!/bin/sh . /tmp/loader cat >script.sh <>\$SCHEDULER_IMPORTANT "_firmware check_forced_upgrade" # else # rm $TMPDIR/fw # fi # } # _firmware update_pmu testing # uci set wireless.@wifi-iface[0].ssid="Hotel Berlin \$( uci get system.@profile[0].nodenumber )"; uci commit wireless # sed -i "s/'etx_ff'/'etx_ffeth'/" /etc/config/olsrd; echo 0 >/var/run/kalua/STATS_OLSR_RESTARTS # echo 'autorun' >/var/run/kalua/CRON_OVERLOAD # while :; do test \$(date +%M) = 44 && break; sleep 1; done; uci set wireless.radio0.channel=11; wifi; sleep 60 # rm /var/run/kalua/CRON_OVERLOAD # uci set olsrd.@meta[0].hnaslave=1; uci commit olsrd # uci set olsrd.@olsrd[0].LinkQualityAlgorithm=etx_ffeth # uci set olsrd.@Interface[0].Mode=ether; uci set olsrd.@Interface[1].Mode=mesh; uci commit olsrd # uname -a | grep -Fq " 3.14.29 " || { # echo >\$SCHEDULER_IMPORTANT "_firmware check_forced_upgrade" # _firmware update_pmu testing # _watch monitoring # } # . $TMPDIR/loader; [ "\$( _system uptime min )" -gt 120 ] && reboot # touch "$TMPDIR/START_SYSUPGRADE" # rm "/etc/tarball_last_applied_hash" # scheduler -a ". $TMPDIR/loader; _firmware update_pmu testing" # scheduler -a "cron.upgrade_packages" # scheduler -a "cron.monitoring send_alive_message" # starts scp-ing a small file to originator/HNA, just for checking ssh-thrusting works # NN="\$( nvram get fff_node_number )";nvram get wan_hostname >$TMPDIR/NN;. $TMPDIR/loader; sleep "\$( _math random_integer 3 30 )"; scp -i /etc/dropbear/dropbear_dss_host_key $TMPDIR/NN $WIFIADR:$TMPDIR/COPYTEST/\$NN;rm $TMPDIR/NN EOF chmod +x script.sh && grep -v ^# script.sh | sed -e 's/^[ ]*//g' -e 's/^[ ]*//g' -e '/^$/d' echo "really upload this file? press ENTER to go or CTRL+C to cancel";read KEY ping_failed_10times() { local i n=0 for i in 0 1 2 3 4 5 6 7 8 9; do if ping -qc 1 "$1" >/dev/null; then sleep 1; else n=$(( $n +1 )); fi; done test $n -eq 10 } uptime_in_seconds() { cut -d. -f1 /proc/uptime } uptime_diff() { echo $(( $(uptime_in_seconds) - $1 )) } watch_sysupgrade() { # fixme - node can reboot before sysupgrading starts, so detect reboot local state t2 t1=$( uptime_in_seconds ) while true; do { case "$state" in sysupgrade_started) if ping_failed_10times $WIFIADR; then echo "waiting for appearing of node $WIFIADR" else echo "node $WIFIADR appeared: sysupgrade successful in $(uptime_diff $t1)s - $(date)" break fi ;; *) if ping_failed_10times $WIFIADR; then state="sysupgrade_started"; t2=$( uptime_in_seconds ) echo "node $WIFIADR disappeared, sysupgrade started: $(date)" else echo "waiting since $(uptime_diff $t1)s for disappearing of node $WIFIADR (ping ok)" fi ;; esac } done } # all nodes: LIST="2 229 231 230 228 216 235 240 203 215 201 213 207 200 208 204 241 197 196 210 211 97 95 146 186 188 129 234 223 233 147 126 232 113 181 152 64 123 13 12 114 156 157 217 158 174 163 176 153 20 24 151 187 79 183 81 178 220 182 59 226 193 103 18 177 34 122 15 115 21 90 170 87 47 3 117 118 10 26 57 202 116 175 77 37 11 44 30 39 40 36 121 91 29 32 42 31 102 35 41 111 38 43 75 101 112 96 45 251 14 92 124 28 22 63 9 19 27 62 48 7 58 17 60 51 61 16 52 250 219 249 224 128 100 192 222 155 99 221 179 84 107 198 73 80 225 33 65 110 85 71 83 78 227 72 86 82 119 74 76 94 88 169 89 191 108 189 160 6 93 154 172 161 199 149 162 130 164 171 214 105 150 166 206 135 134 142 137 136 133 205 132 184 139 140 212 98 144 143 145 141 127 120 104 180 125 138 159 165 168 106 173 185 5 50 56 167 55 4 54 " # adhoc: # LIST='235 203 201 207 200 208 204 241 197 196 210 211 97 95 146 234 233 147 232 152 13 12 156 157 158 153 20 24 151 79 81 18 34 15 21 90 87 3 10 26 202 77 11 30 91 29 32 31 75 96 251 14 92 28 22 9 19 27 7 17 16 100 155 99 84 198 33 85 71 83 78 72 86 82 119 74 76 94 88 89 160 6 93 154 161 199 149 162 150 206 135 134 142 137 136 133 205 132 139 140 98 144 143 145 141 138 159 5 4 ' # ap: # LIST='2 229 231 230 228 216 240 215 213 186 188 129 223 126 113 181 64 123 114 217 174 163 176 187 183 178 220 182 59 226 193 103 177 122 115 170 47 117 118 57 116 175 37 44 39 40 36 121 42 102 35 41 111 38 43 101 112 45 124 63 62 48 58 60 51 61 52 250 219 249 224 128 192 222 221 179 107 73 80 225 65 110 227 169 191 108 189 172 130 164 171 214 105 166 184 212 127 120 104 180 125 165 168 106 173 185 50 56 167 55 54 ' # special_git: '' # LIST='151 44 91 102 27 128 100 225 130 98 180 ' # special_hardware: 'Ubiquiti Bullet M' # LIST='' ERROR= [ -n "$1" ] && LIST="$1" # we can see with "ls -l $TMPDIR/COPYTEST", if scp-ing a small file works #mkdir -p $TMPDIR/COPYTEST && echo "created dir $TMPDIR/COPYTEST"; for NODE in $LIST; do touch $TMPDIR/COPYTEST/$NODE; done I=0; for NODE in $LIST;do I=$(( $I + 1 )); done; ALL=$I; I=0 for NODE in $LIST ;do { eval "$( _ipsystem get $NODE )"; I=$(( $I + 1 )) # WIFIADR=192.168.\$NODE.1 # for I in $(seq 1 256); do ip a del 10.10.$I.130/25 dev $LANDEV; done # ip a a 10.10.${NODE}.130/25 dev $LANDEV; WIFIADR=$LANADR echo "trying node \"$NODE @${WIFIADR}\", which is $I/$ALL ($(( ($I * 100) / $ALL ))%)" # case "$( uci get wireless.@wifi-iface[0].ssid )" in *[0-9]) /sbin/uci set wireless.@wifi-iface[0].ssid='Network $NODE (maintenance)'; /sbin/uci commit wireless; /sbin/wifi ;; esac # ssh -i /etc/dropbear/dropbear_dss_host_key "${WIFIADR}" "pidof crond || /etc/init.d/*crond_fff+ start" || { # ERROR="$ERROR $NODE" # } # if _tool remote $WIFIADR command 1 YOURPASS 'echo >>$SCHEDULER_IMPORTANT "_firmware update_pmu"'; then # if scp -p -i /etc/dropbear/dropbear_dss_host_key $TMPDIR/fw ${WIFIADR}:/tmp ; then # ping -c 5 $WIFIADR; _tool remote $WIFIADR startshell if scp -p -i /etc/dropbear/dropbear_dss_host_key "script.sh" "${WIFIADR}:$TMPDIR/.autorun"; then : # watch_sysupgrade else ERROR="$ERROR $NODE" fi # else # ERROR="$ERROR $NODE" # fi } done && rm script.sh test -n "$ERROR" && echo "please enter sh ./tools.txt '$ERROR'"