Bash 发送:执行时生成id exp6未打开

Bash 发送:执行时生成id exp6未打开,bash,expect,spawn,mininet,Bash,Expect,Spawn,Mininet,我不知道为什么它有时有效,但有时无效。原因可能是什么?在执行时,在之后是否有什么东西告诉您错误发生时执行的是什么?这听起来像是在运行send命令之前,生成的进程就死了。我编辑了这个问题,我认为生成的命令有时会很早就死了。我不知道为什么会这样。听起来您需要将expect代码提取到一个单独的脚本中,以便可以单独调试它。您必须期望{“有什么不好的”{handle mn termination}“*mininet>*“{normal path}} #!/bin/bash MN_ROUTER_NUM=$

我不知道为什么它有时有效,但有时无效。原因可能是什么?

在执行时,在
之后是否有什么东西告诉您错误发生时执行的是什么?这听起来像是在运行
send
命令之前,生成的进程就死了。我编辑了这个问题,我认为生成的命令有时会很早就死了。我不知道为什么会这样。听起来您需要将expect代码提取到一个单独的脚本中,以便可以单独调试它。您必须
期望{“有什么不好的”{handle mn termination}“*mininet>*“{normal path}}
#!/bin/bash

MN_ROUTER_NUM=$1 #5
MN_BANDWIDTH=$2 #12
MN_DELAY=$3 #1ms
MN_LOSS=$4 #10

PING_COUNT=$5 #100
PING_PACKET_SIZE=$6 #100
PING_INTERVAL=$7 #0

if [ ! -f topology.py ];
then
   echo "topology.py file could not be found."
   exit 1;
fi

(expect - << EOD
    spawn sudo mn --custom topology.py --topo mytopo,n=$MN_ROUTER_NUM --link tc,bw=$MN_BANDWIDTH,delay=$MN_DELAY,loss=$MN_LOSS
    set timeout 1000

    expect "*mininet>*"
    sleep 1
    send -- "h1 ping h2 -s $PING_PACKET_SIZE -c $PING_COUNT -i   $PING_INTERVAL \n"

    expect "*mininet>*"
    sleep 1
    send -- "exit\n"

    interact
EOD
) | tee .ping.out | grep -e "ttl=" | awk '{print $(NF-1)" ms"}' | cut -d'=' -f2 > n_${MN_ROUTER_NUM}_BW_${MN_BANDWIDTH}_delay_${MN_DELAY}_loss_${MN_LOSS}.out

cat .ping.out | grep -e "packets transmitted" -e "rtt min/avg/max/mdev"
rm -f .ping.out

echo "Delays are saved in "n_${MN_ROUTER_NUM}_BW_${MN_BANDWIDTH}_delay_${MN_DELAY}_loss_${MN_LOSS}.out
send: spawn id exp6 not open
    while executing
"send -- "h1 ping h2 -s 100 -c 100 -i 0 \n""