diff --git a/con-test/con-test b/con-test/con-test index 2d9d384..e04406a 100755 --- a/con-test/con-test +++ b/con-test/con-test @@ -42,7 +42,7 @@ SUDO='' stop_file_collect() { side=$1 - auth=$(check_auth $side) + auth=$(check_auth "$side") if [[ "$side" == "$CLIENT" ]]; then ip=$CLIENT_IP @@ -57,10 +57,10 @@ stop_file_collect() fi if [[ "$auth" == "$PASSWD" ]]; then - sshpass -p $passwd ssh ${user}@${ip} \ + sshpass -p "$passwd" ssh "${user}@${ip}" \ 'touch /tmp/stop' else - ssh -i $cert ${user}@${ip} \ + ssh -i "$cert" "${user}@${ip}" \ 'touch /tmp/stop' fi } @@ -72,7 +72,7 @@ add_timestamp() run=$3 append=$4 - while usleep $time + while usleep "$time" do if [ -f '/tmp/stop' ]; then break @@ -256,6 +256,66 @@ start_iperf() fi } +get_script_language() +{ + test_file=$1 + if [ -z "$lang" ]; then + echo "nothing set" + lang=$(awk 'NR==1 { print $NF}' "$test_file" ) + fi + case $lang in + sh | "env sh" | \ + python | "env python" | \ + python2 | \ + python3 | \ + perl | "perl -w" | \ + "awk -f") + echo "$lang" + return $SUCCESS + ;; + *) + return $FAILURE + ;; + esac +} + +# run user specific script +# +# Arguments: +# script: script provided by user to run +# side: where to start the script 0 for client, 1 for server +# +run_script() +{ + script=$1 + side=$2 + script_lang=$(get_script_language $script) + auth=$(check_auth "$side") + + printf "${INFO} running script $script on $side" + if [[ "$side" == "$CLIENT" ]]; then + ip=$CLIENT_IP + user=$CLIENT_USER + passwd=$CLIENT_PASSWORD + cert=$CLIENT_CERTIFICATE + else + ip=$SERVER_IP + user=$SERVER_USER + passwd=$SERVER_PASSWORD + cert=$SERVER_CERTIFICATE + fi + + if [[ "$auth" == "$PASSWD" ]]; then + sshpass -p "$passwd" scp "$script" "$user"@"$ip":/tmp/ + sshpass -p "$passwd" ssh "$user"@"$ip" \ + "$script_lang" "/tmp/$(basename "$script")" + else + scp -i "$cert" "$script" "$user"@"$ip":/tmp/ + ssh -i "$cert" "$user"@"$ip" \ + "$script_lang" "/tmp/$(basename "$script")" + fi +} + # start attenuators, get the attenuation up # # Arguments: @@ -432,7 +492,14 @@ main() fi if [[ "$mon" == "$ON" ]]; then - bash wireless_monitor -o $LOG_PATH -c $config_path & + bash wireless_monitor -o "$LOG_PATH" \ + -c "$config_path" & + fi + + #run scripts + if [ -n "${USER_SCRIPT[${i} - 1]}" ]; then + run_script "${USER_SCRIPT[${1} - 1]}" $CLIENT + run_script "${USER_SCRIPT[${1} - 1]}" $SERVER fi #start measurement @@ -444,7 +511,7 @@ main() sleep 3 - start_antennuator ${ATTENUATOR_PARAMS[${i} - 1]} + start_antennuator "${ATTENUATOR_PARAMS[${i} - 1]}" sleep 2 @@ -457,4 +524,4 @@ main() done } -main $@ +main "$@" diff --git a/con-test/con-test.conf b/con-test/con-test.conf index d4719ac..fd31ef6 100644 --- a/con-test/con-test.conf +++ b/con-test/con-test.conf @@ -25,6 +25,8 @@ TIME=('100000' '200000' '200000') # set name for package to update with number accordingly to update position # including the relativ, or absolute path to the package UPDATE_PKG=('' 'mac80211.ipk' '') + +USER_SCRIPT('' 'test.sh' '') # Optional: # Provide Parameters for iperf according to the run number. # -s/-c will be added by default