#!/usr/bin/env bash # Copyright (c) 2016 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. OPTIND=1 # Reset in case getopts has been used previously in the shell. function show_help { echo -e "$0:" echo -e "\t-h displays this help message" echo -e "\t-d logs output to a file $0-.log" } if [ $USER != "root" ] ; then #echo "Restarting script with sudo..." sudo $0 ${*} exit fi while getopts "h?d" opt; do case "$opt" in h|\?) show_help exit 0 ;; d) exec &> >(tee -a "$0-$$.log") ;; esac done shift $((OPTIND-1)) if [ -z "$@" ]; then echo "You must specify a demo name" exit 0; fi if [ -f "$@" ]; then DEMO=$@ else echo "This is not a valid filename" exit 0; fi source $DEMO RED='\033[0;31m' GREEN='\033[0;32m' NC='\033[0m' function pause { echo ""; echo "" read -n1 -r -p "Press space to continue..." key printf "\033c" } function instruction { eval INSTR="$1" eval CMD="$2" echo "" echo -e "${RED}********************************************************************************${NC} \n" echo -e "${RED} ${INSTR} ${NC}" echo -e "${GREEN} ${CMD} ${NC} \n" echo -e "${RED}********************************************************************************${NC} \n" } #Clear and set netns and veths /vagrant/netns.sh $C1_IP $C1_GW $C2_IP $C2_GW #Clear the screen printf "\033c" if [ -e $DEMO.cmd ]; then rm $DEMO.cmd fi #Loop through instructions and commands from filename input as $@ for ((i=0;i<${#INSTR[@]};++i)); do instruction "\${INSTR[i]}" "\${CMD[i]}" eval "${CMD[i]}" echo -e "${CMD[i]}" >> $DEMO.cmd pause done exit 0