You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
#!/bin/bash
|
|
|
|
# Check reachability of all running VIRL VMs by logging in on the telnet console port and expect a prompt that includes the host name
|
|
|
|
# usage
|
|
if [ ! $# -gt 2 ] ; then
|
|
echo -e "usage: $0 <username> <timeout for telnet connection to each node> <simulation> [debug level], e.g.,\n"
|
|
echo "$0 guest VIRLBENCH-223721@smb-WaZLhH 5"
|
|
exit -1
|
|
fi
|
|
|
|
# get the IP address of eth0
|
|
IP=$(ip addr show | grep eth0 | grep inet | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1)
|
|
|
|
RUNNING=true
|
|
|
|
USERNAME=$1
|
|
TIMEOUT=$2
|
|
SIMULATION=$3
|
|
if [ $4 ]; then
|
|
DEBUG=$4
|
|
else
|
|
DEBUG=0
|
|
fi
|
|
|
|
while $RUNNING = true
|
|
do
|
|
# Check if all nodes are ready-to-use using expect
|
|
|
|
# get the telnet ports of all nodes in all simulations
|
|
VM_PORTS=$(./ports-vms.py $USERNAME $SIMULATION)
|
|
|
|
# connect to every telnet port of each node and expect the hostname in the prompt
|
|
VMS_UNUSABLE=0
|
|
for VM_PORT in $VM_PORTS
|
|
do
|
|
VM_TELNET_PORT=$(echo $VM_PORT | cut -d "=" -f 2)
|
|
VM_NAME=$(echo $VM_PORT | cut -d "=" -f 1)
|
|
# connect to every telnet port and check whether it can be used by pressing return
|
|
# twice and expecting the hostname to appear in the resulting prompt each time
|
|
if [ $DEBUG -lt 2 ]; then
|
|
./test-virl-telnet-connection $IP $VM_TELNET_PORT $VM_NAME $TIMEOUT >/dev/null
|
|
else
|
|
./test-virl-telnet-connection $IP $VM_TELNET_PORT $VM_NAME $TIMEOUT
|
|
fi
|
|
EXPECT_EXITCODE=$?
|
|
if [ $EXPECT_EXITCODE -eq 5 ] ; then
|
|
VMS_UNUSABLE=$(expr $VMS_UNUSABLE + 1)
|
|
if [ $DEBUG -gt 0 ]; then echo "$VM_NAME ($VM_TELNET_PORT) still unusable"; fi
|
|
fi
|
|
done
|
|
|
|
if [ $VMS_UNUSABLE -gt 0 ]; then
|
|
if [ $DEBUG -gt 0 ]; then echo "$VMS_UNUSABLE VMs are still unusable"; fi
|
|
else
|
|
RUNNING=false
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
DATE=$(date)
|
|
echo "Finished at $DATE"
|