[c5c522c] | 1 | #!/bin/bash |
---|
| 2 | NAMES=$1 |
---|
| 3 | shift |
---|
| 4 | |
---|
| 5 | |
---|
| 6 | |
---|
| 7 | for A in $*; do |
---|
| 8 | if [ $A == "rebuild" ]; then |
---|
| 9 | BUILDCHECK=1 |
---|
| 10 | elif [ $A == "reboot" ] ; then |
---|
| 11 | REBOOT=1 |
---|
| 12 | else |
---|
| 13 | TARGETS="$TARGETS $A" |
---|
| 14 | fi |
---|
| 15 | done |
---|
| 16 | |
---|
| 17 | if ! [ "$NAMES" ]; then |
---|
| 18 | echo "Usage: ./remoteinstall '<pkgname pkgname ...>' <root@targethost1> <root@targethost2...> [rebuild] [reboot]" |
---|
| 19 | echo "If rebuild is specified, the packages will be rebuild-checked." |
---|
| 20 | echo "If reboot is specified, the box will be rebooted after installing. usefull for kernels" |
---|
| 21 | echo |
---|
| 22 | echo "To specify ssh/scp options such as a different port:" |
---|
| 23 | echo 'OPTS="-o port=10022" ./remoteinstall <pkgname> <root@targethost>' |
---|
| 24 | echo |
---|
| 25 | echo "Specify multiple targets this way in an easy way:" |
---|
| 26 | echo "./remoteinstall packagename 192.168.0.{123,5,21,43}" |
---|
| 27 | exit 1 |
---|
| 28 | fi |
---|
| 29 | |
---|
| 30 | for TARGET in $TARGETS; do |
---|
| 31 | ./sshkeyfix $TARGET |
---|
| 32 | done |
---|
| 33 | |
---|
| 34 | for NAME in $NAMES; do |
---|
| 35 | |
---|
| 36 | if [ "$BUILDCHECK" ]; then |
---|
| 37 | echo "* Build check:" |
---|
| 38 | ./rebuildcheck $NAME '|' $* || exit 1 |
---|
| 39 | fi |
---|
| 40 | |
---|
| 41 | echo -n "* Package $NAME zoeken:" |
---|
| 42 | PKG=`./findpkg "$NAME"` || exit 1 |
---|
| 43 | BASE=`basename "$PKG"` || exit 1 |
---|
| 44 | echo $PKG; |
---|
| 45 | |
---|
| 46 | export OPTS |
---|
| 47 | echo "* install:" |
---|
| 48 | |
---|
| 49 | for TARGET in $TARGETS; do |
---|
| 50 | ( |
---|
| 51 | echo "Uploading and installing" |
---|
| 52 | if scp $OPTS $PKG $TARGET:/tmp/$BASE && |
---|
[f49e71c] | 53 | ssh $OPTS $TARGET "cd / && syn3-update /tmp/$BASE && rm /tmp/$BASE"; then |
---|
[c5c522c] | 54 | echo "Install on $TARGET OK" |
---|
| 55 | else |
---|
| 56 | echo "######################## INSTALL ON $TARGET FAILED! ######## " |
---|
| 57 | fi |
---|
| 58 | ) | sed -u "s/^/$TARGET: /" & |
---|
| 59 | done |
---|
| 60 | |
---|
| 61 | wait |
---|
| 62 | done |
---|
| 63 | |
---|
[f49e71c] | 64 | #run postinstallers |
---|
| 65 | for TARGET in $TARGETS; do |
---|
| 66 | ( |
---|
| 67 | if ssh $OPTS $TARGET "cd /; postinst.sh"; then |
---|
| 68 | echo "Install on $TARGET OK" |
---|
| 69 | if [ "$REBOOT" ]; then |
---|
| 70 | echo "Rebooting box!" |
---|
| 71 | ssh $OPTS $TARGET "reboot" |
---|
| 72 | fi |
---|
| 73 | else |
---|
| 74 | echo "######################## INSTALL ON $TARGET FAILED! ######## " |
---|
| 75 | fi |
---|
| 76 | ) | sed -u "s/^/$TARGET: /" & |
---|
| 77 | done |
---|
| 78 | |
---|
| 79 | wait |
---|
| 80 | |
---|
| 81 | |
---|
[c5c522c] | 82 | echo "All installs done" |
---|