mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-16 18:02:05 +02:00
74 lines
2.0 KiB
Bash
Executable File
74 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# -----------------------------------------------------------------------------
|
|
# Starts or interacts with mininet in a remote screen session.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
|
|
. $ONOS_ROOT/tools/build/envDefaults
|
|
|
|
export MAX_WAIT=${ONOS_MN_TIMEOUT:-90}
|
|
|
|
cmd="$1" && shift
|
|
log="screenlog.0"
|
|
remote="$ONOS_USER@$OCN"
|
|
mininet="ssh -t -t $remote screen -L -S mininet"
|
|
|
|
case $cmd in
|
|
send)
|
|
$mininet -X "stuff \"$@\\n\"" 2>/dev/null
|
|
;;
|
|
|
|
sendAndExpect)
|
|
cmd=""
|
|
for a in $*; do shift; if [ "$a" = "--expect" ]; then break; fi; cmd="$cmd $a"; done
|
|
$mininet -X "stuff \"$cmd\\n\"" 2>/dev/null
|
|
onos-mininet expect "$@"
|
|
;;
|
|
|
|
wait)
|
|
ssh $remote "
|
|
let count=0
|
|
sleep 1 && while test ! -f $log; do if test \$count -ge $MAX_WAIT; then exit 1; fi; sleep 1; let count=count+1; done
|
|
while ! (tail -n1 $log | egrep -q '^mininet>'); do if [ \$count -ge $MAX_WAIT ]; then exit 1; fi; sleep 1; done
|
|
sleep ${1-:1}
|
|
"
|
|
;;
|
|
|
|
expect)
|
|
aux=/tmp/mininet.$$.log
|
|
ssh $remote "
|
|
sleep 1
|
|
if [ ! -f $log ]; then exit 1; fi;
|
|
let count=0
|
|
while ! (tail -n1 $log | egrep -q '^mininet>'); do if test \$count -ge $MAX_WAIT; then exit 1; fi; sleep 1; let count=count+1; done
|
|
tac $log | awk '{ print \$0; } /^mininet>/ { if (on) { exit 0; } on=1; }' | tac > $aux
|
|
cat $aux
|
|
set -x
|
|
egrep \"$@\" $aux
|
|
"
|
|
;;
|
|
|
|
attach)
|
|
$mininet -x
|
|
;;
|
|
|
|
start)
|
|
ssh $remote "rm -f $log; echo logfile flush 1 > ~/.screenrc"
|
|
(
|
|
$mininet "$@"
|
|
scp $remote:$log /tmp/mininet.log
|
|
ssh $remote rm -f $log
|
|
) &
|
|
;;
|
|
|
|
stop)
|
|
$mininet -X "stuff \"^C\\n\"" 2>/dev/null && \
|
|
$mininet -X "stuff \"^C\\n\"" 2>/dev/null && \
|
|
$mininet -X "stuff \"exit\\n\"" 2>/dev/null
|
|
;;
|
|
cleanup)
|
|
ssh -t -t $remote sudo mn -c
|
|
ssh -t -t $remote "screen -list | grep mininet | cut -d. -f1 | tr -d '\t' | xargs kill -9; screen -wipe; exit 0"
|
|
;;
|
|
esac
|