#!/bin/bash WEDGE_PASS="TheWedgePassword" USER_PASS="asdf1234" run_script_via_ssh() { local script_path local ssh_host local pass local remote_path script_path="$1" ssh_host="$2" pass=$3 remote_path="/tmp/$(basename "$script_path")" # Copy the script to the remote host if ! scp "$script_path" "$ssh_host:$remote_path"; then echo "Error: Failed to copy the script to the remote host." return 1 fi # Execute the script on the remote host with sudo if ! ssh "$ssh_host" "echo $pass | sudo -S $remote_path"; then echo "Error: Failed to execute the script on the remote host." return 1 fi } wedge_setup() { # Deploy switch program scp -r ../l1switch/ ncs-wedge:/tmp/ run_script_via_ssh ./00-wedge_on_reboot.sh ncs-wedge $WEDGE_PASS run_script_via_ssh ./01-wedge_compile_code.sh ncs-wedge $WEDGE_PASS # Deploy service for switch program scp ./l1switch.service ncs-wedge:/tmp/l1switch.service scp ./02-run_switch_program.sh ncs-wedge:/home/user/bf-sde-9.7.0/l1switch.sh ssh ncs-wedge "echo $WEDGE_PASS | sudo -S mv /tmp/l1switch.service /etc/systemd/system/l1switch.service" ssh ncs-wedge "echo $WEDGE_PASS | sudo -S systemctl daemon-reload" ssh ncs-wedge "echo $WEDGE_PASS | sudo -S systemctl start l1switch.service" # We could probably wait on port 9999 opening on the wedge echo "WAITING FOR BFSHELL..." sleep 30 scp ./03-wedge_port_configure.command ncs-wedge:/tmp/ ssh ncs-wedge "/home/user/bf-sde-9.7.0/install/bin/bfshell -f /tmp/03-wedge_port_configure.command" scp ./04-wedge_route_configure.py ncs-wedge:/tmp/ ssh ncs-wedge "/home/user/bf-sde-9.7.0/install/bin/bfshell -b /tmp/04-wedge_route_configure.py" } setup_node() { local nodeid="$1" local node="ncs-node$nodeid" local node_setup_script="./10-host_setup_node$nodeid.sh" scp "./30-add_namespaces.sh" "$node": scp "./31-configure_interfaces.sh" "$node": scp "./32-setup_arp.sh" "$node": run_script_via_ssh "$node_setup_script" "$node" $USER_PASS } # Setup wedge_setup setup_node 1 setup_node 2 # Traffic TIMEOUT=30 ssh ncs-node1 "echo $USER_PASS | sudo -S timeout $TIMEOUT ip netns exec tb_node1_if0 python3 receiver.py 10.0.2.1 30123 30123" & ssh ncs-node2 "echo $USER_PASS | sudo -S timeout $TIMEOUT ip netns exec tb_node2_if0 python3 sender.py 10.0.1.1 30123 30123 100 128" # Get log scp ncs-node1:timestamps_30123 . # Cleanup ssh ncs-wedge "echo $WEDGE_PASS | sudo -S systemctl stop l1switch.service" ssh ncs-node1 "echo $USER_PASS | sudo -S ip -all netns delete " ssh ncs-node2 "echo $USER_PASS | sudo -S ip -all netns delete "