#!/bin/bash # (C)2009 DatuX - Released under GPL # IP=IP adress # VERIFYPOSITIVE= tekst voor goed resultaat # VERIFYNEGATIVE= tekst voor negatief resultaat # CMD=uit te voeren commandos # VERIFYEXIT=verwachte exit code sshtest() { #../npl/sshkeyfix root@$IP || return 1 export OUTPUT=/tmp/sshoutput.$$ echo -e "\e[1;32m### sshtest: $DESCRIPTION1\e[0m" >&2 echo "Running sshtest on $IP:" >&2 echo " CMD=$CMD" >&2 echo " VERIFYEXIT=$VERIFYEXIT" >&2 echo " VERIFYNEGATIVE=$VERIFYNEGATIVE" >&2 echo " VERIFYPOSITIVE=$VERIFYPOSITIVE" >&2 echo -e "\e[1;30m" >&2 chmod 700 ./id_rsa #DONT WORRY - the public key of this key is only used on our automated regression test cd's. ssh -o StrictHostKeyChecking=no -i ./id_rsa -i ~/.ssh/id_rsa root@$IP "$CMD 2>&1" | tee $OUTPUT || exit 1 EXIT=${PIPESTATUS[0]} echo -e "\e[0m" >&2 echo "Results: " >&2 FAIL=0 if [ "$VERIFYEXIT" != "" ]; then if [ "$VERIFYEXIT" != "$EXIT" ]; then echo -e "\e[1;31mSSHTEST FAILED: Exitcode was $EXIT but should be $VERIFYEXIT!\e[0m" >&2 FAIL=1 else echo "Exit code matches $EXIT" >&2 fi fi if [ "$VERIFYNEGATIVE" ]; then if egrep "$VERIFYNEGATIVE" $OUTPUT; then echo -e "\e[1;31mSSHTEST CASE FAILED: Negative text '$VERIFYNEGATIVE' found!\e[0m" >&2 FAIL=1 else echo "Negative text not found." >&2 fi fi if [ "$VERIFYPOSITIVE" ]; then if ! egrep "$VERIFYPOSITIVE" $OUTPUT; then echo -e "\e[1;31mSSHTEST CASE FAILED: Positive text '$VERIFYPOSITIVE' not found!\e[0m" >&2 FAIL=1 else echo "Positive text found." >&2 fi fi CMD= VERIFYPOSITIVE= VERIFYNEGATIVE= DESCRIPTION1= VERIFYEXIT= if [ "$FAIL" == "0" ]; then echo "SSHTEST CASE PASSED" >&2 fi rm $OUTPUT return $FAIL; } scptest() { echo -e "\e[1;32m### scptest: Uploaden $1 naar root@$IP:/root ...\e[0m" >&2 scp -r -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa -i id_rsa "$1" root@$IP:/root return $? }