#!/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 56 102 45 111 140 165 41 61 54 70 160 49 97 200 48 96 76 57 205 234 51 164 223 44 74 50 27 65 42 227 217 177 38 99 40 235 225 39 37 91 58 190 207 43 105 219 46 82 231 55 69 47 31 72 107 30 94 218 22 68 109 29 53 36 222 56 9 141 45 11 67 41 18 230 54 211 102 49 26 140 48 209 61 17 57 70 6 51 216 97 44 21 96 50 220 76 42 3 234 177 25 223 40 208 74 39 15 65 58 32 217 43 20 99 46 213 225 14 55 91 5 47 207 221 107 219 232 218 231 4 109 31 12 36 30 23 141 22 24 67 29 16 230 222 13 9 33 102 11 62 140 18 84 61 211 64 70 26 95 97 209 66 96 17 60 76 6 144 234 216 21 10 223 220 74 28 3 65 212 25 34 217 208 99 35 15 225 224 32 91 201 20 163 207 213 219 157 14 231 175 5 31 167 221 30 232 168 22 4 101 29 12 162 222 23 77 9 24 138 11 16 142 18 13 233 211 33 26 75 62 209 174 84 17 64 103 6 95 90 216 66 176 21 60 170 220 144 139 3 10 25 88 28 208 73 212 15 169 34 32 202 35 20 " # adhoc: # LIST='167 168 138 170 139 169 ' # ap: # LIST='2 111 165 160 200 205 164 27 227 38 235 37 190 105 82 69 72 94 68 53 56 45 41 54 49 48 57 51 44 50 42 177 40 39 58 43 46 55 47 107 218 109 36 141 67 230 102 140 61 70 97 96 76 234 223 74 65 217 99 225 91 207 219 231 31 30 22 29 222 9 11 18 211 26 209 17 6 216 21 220 3 25 208 15 32 20 213 14 5 221 232 4 12 23 24 16 13 33 62 84 64 95 66 60 144 10 28 212 34 35 224 201 163 157 175 101 162 77 142 233 75 174 103 90 176 88 73 202 ' # special_git: '' # LIST='' # 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'" 224 213 201 14 163 5 157 221 175 232 167 4 12 168 23 101 24 162 16 77 13 138 33 142 62 233 84 64 75 174 95 66 103 90 60 176 144 170 10 139 28 212 88 34 73 35 169 224 202 201 " # adhoc: # LIST='167 168 138 170 139 169 ' # ap: # LIST='2 111 165 160 200 205 164 27 227 38 235 37 190 105 82 69 72 94 68 53 56 45 41 54 49 48 57 51 44 50 42 177 40 39 58 43 46 55 47 107 218 109 36 141 67 230 102 140 61 70 97 96 76 234 223 74 65 217 99 225 91 207 219 231 31 30 22 29 222 9 11 18 211 26 209 17 6 216 21 220 3 25 208 15 32 20 213 14 5 221 232 4 12 23 24 16 13 33 62 84 64 95 66 60 144 10 28 212 34 35 224 201 163 157 175 101 162 77 142 233 75 174 103 90 176 88 73 202 ' # special_git: '' # LIST='' # 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'" 163 157 175 167 168 101 162 77 138 142 233 75 174 103 90 176 170 139 88 73