Fixed few bugs, almost ready for testings

This commit is contained in:
Igor Pecovnik
2019-12-30 21:25:17 +01:00
parent 6481b39ec2
commit b7753044f7
3 changed files with 84 additions and 38 deletions

34
go.sh
View File

@@ -17,31 +17,39 @@ source lib/functions.sh
[[ -z $HOST ]] && echo "\$HOST not defined. Exiting." && exit 1
[[ -z $HOST_IPERF ]] && echo "\$HOST_IPERF not defined. Exiting." && exit 1
# needed if we haven't login yet
get_keys
ssh-keygen -f "/root/.ssh/known_hosts" -R ${HOST}
sshpass -p 1234 ssh ${USER_ROOT}@${HOST} "ls"
# if password is still default, change passwd and create new user
display_alert "Try if we can login and send CTRL C" "$HOST" "info"
sshpass -p 1234 ssh -o "StrictHostKeyChecking=accept-new" ${USER_ROOT}@${HOST} "\x03" &>/dev/null
[[ $? -eq 1 ]] && armbian-first-login
x=1
SUM=0
while [ $x -le ${PASSES} ]
do
while ! ping -c1 $HOST &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ;
while ! ping -c1 $HOST &>/dev/null; do display_alert "Ping failed" "$(date +%R:%S)" "wrn"; done ; START=$(date +%s); display_alert "Host found" "$(date +%R:%S)" "info";
TIMES[$x]=$(date +%s)
# if wlan credentials are defined, let's check it first
if [[ -n ${WLAN_ID} && $x -eq 1 ]]; then
if [[ -n ${WLAN_ID} && $x -eq 1 && -n $(sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "nmcli device | grep wifi") ]]; then
check_wlan
fi
echo "Stressing $HOST"
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "apt -y install stress ; stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 60s"
echo "Rebooting $HOST"
display_alert "Stressing [$x] for ${STRESS_TIME}s" "${HOST}" "info";
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "stress -q --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout ${STRESS_TIME}s"
display_alert "Rebooting in 5 seconds" "${HOST}" "wrn"
sleep 5
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "reboot"
sleep 20
x=$(( $x + 1 ))
done
echo "Passed"
x=2
while [ $x -lt ${PASSES} ]
do
A=${TIMES[@]:$x:1}
x=$(( $x + 1 ))
B=${TIMES[@]:$x:1}
[[ -z $B ]] && B=$(date +%s)
echo $(( $B - $A ))
done

View File

@@ -1,6 +1,7 @@
# configuration
PASSES=5
STRESS_TIME=100 # seconds
# user

View File

@@ -1,28 +1,46 @@
#!/bin/bash
function get_keys()
#--------------------------------------------------------------------------------------------------------------------------------
# Let's have unique way of displaying alerts
#--------------------------------------------------------------------------------------------------------------------------------
display_alert()
{
local tmp=""
[[ -n $2 ]] && tmp="[\e[0;33m $2 \x1B[0m]"
local GET_KEYS=$(expect -c "
spawn ssh ${USER_ROOT}@${HOST}
set timeout 3
expect \"Are you sure you want to continue connecting (yes/no)?\"
send \"yes\r\"
expect eof
")
echo $GET_KEYS
case $3 in
err)
echo -e "[\e[0;31m error \x1B[0m] $1 $tmp"
;;
wrn)
echo -e "[\e[0;35m warn \x1B[0m] $1 $tmp"
;;
ext)
echo -e "[\e[0;32m o.k. \x1B[0m] \e[1;32m$1\x1B[0m $tmp"
;;
info)
echo -e "[\e[0;32m o.k. \x1B[0m] $1 $tmp"
;;
*)
echo -e "[\e[0;32m .... \x1B[0m] $1 $tmp"
;;
esac
}
function armbian-first-login()
{
# clean keys
get_keys
# pass user creation to expect
display_alert "Conduct first login steps" "root/${PASS_ROOT} and ${USER_NORMAL}/${PASS_NORMAL}" "info"
MAKE_USER=$(expect -c "
spawn ssh ${USER_ROOT}@${HOST}
spawn sshpass -p 1234 ssh -o "StrictHostKeyChecking=accept-new" ${USER_ROOT}@${HOST}
set timeout 10
expect \"password:\"
send \"1234\r\"
expect \"Current password:\"
send \"1234\r\"
expect \"New password:\"
@@ -47,10 +65,12 @@ function armbian-first-login()
send \"${OTHER_NORMAL}\r\"
expect \"information correct\"
send \"Y\r\"
#expect eof
expect eof
")
# Disable user creation: send \"\x03\"
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "apt -y install jq stress"
# display output
echo "${MAKE_USER}"
@@ -61,21 +81,38 @@ function check_wlan
{
# clean keys
ssh-keygen -f "/root/.ssh/known_hosts" -R ${HOST} > /dev/null 2>&1
#ssh-keygen -f "/root/.ssh/known_hosts" -R ${HOST} > /dev/null 2>&1
# connect wireless
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "nmcli d wifi connect ${WLAN_ID} password ${WLAN_PASS}"
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "nmcli d wifi connect ${WLAN_ID} password ${WLAN_PASS}" &>/dev/null
if [[ $? -eq 0 ]]; then
display_alert "Connected to wireless" "${WLAN_ID}"
# get wireless ip
local GETWLANIP=$(sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "nmcli -t -f UUID,TYPE,DEVICE connection show --active | grep wireless | rev | cut -d ':' -f1 | rev | xargs ifconfig | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'")
# get wireless ip
local GETWLANIP=$(sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "nmcli -t -f UUID,TYPE,DEVICE connection show --active | grep wireless | rev | cut -d ':' -f1 | rev | xargs ifconfig | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'")
display_alert "Get wireless ip" "${GETWLANIP}"
# disable wired networking
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${GETWLANIP} "nmcli -t -f UUID,TYPE connection | grep ethernet | sed 's/:.*$//' | xargs nmcli connection down"
# disable wired networking
sshpass -p ${PASS_ROOT} ssh -o "StrictHostKeyChecking=accept-new" ${USER_ROOT}@${GETWLANIP} "nmcli -t -f UUID,TYPE connection | grep ethernet | sed 's/:.*$//' | xargs nmcli connection down" &>/dev/null
display_alert "Disable wired networking" "${HOST}"
# do the test
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@$GETWLANIP "iperf3 -c ${HOST_IPERF}"
# do the test
display_alert "Make WLAN performance test" "${GETWLANIP} -> ${HOST_IPERF}"
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${GETWLANIP} "iperf3 -c ${HOST_IPERF} -t 5 -J | jq -r '.intervals' | grep bits_per_second | awk '{print \$2}' | awk '{printf(\"%.0f\n\", \$1)}' | awk '{\$1/=1000000;printf \"%.0f MBits/s\n\",\$1}' | sed -n 'p;n'"
# re-enable wired networking
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${GETWLANIP} "nmcli -t -f UUID,TYPE connection | grep ethernet | sed 's/:.*$//' | xargs nmcli connection up"
# re-enable wired networking
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${GETWLANIP} "nmcli -t -f UUID,TYPE connection | grep ethernet | sed 's/:.*$//' | xargs nmcli connection up" &>/dev/null
display_alert "Enable wired networking" "${HOST}"
# disable WLAN networking
sshpass -p ${PASS_ROOT} ssh -o "StrictHostKeyChecking=accept-new" ${USER_ROOT}@${HOST} "nmcli -t -f UUID,TYPE connection | grep wireless | sed 's/:.*$//' | xargs nmcli connection down" &>/dev/null
display_alert "Disable WLAN networking" "${GETWLANIP}"
# do the test
display_alert "Make Ethernet performance test" "${HOST} -> ${HOST_IPERF}"
sshpass -p ${PASS_ROOT} ssh ${USER_ROOT}@${HOST} "iperf3 -c ${HOST_IPERF} -t 5 -J | jq -r '.intervals' | grep bits_per_second | awk '{print \$2}' | awk '{printf(\"%.0f\n\", \$1)}' | awk '{\$1/=1000000;printf \"%.0f MBits/s\n\",\$1}' | sed -n 'p;n'"
else
display_alert "connecting to wireless" "${WLAN_ID}" "err"
fi
}