使用expect和interactive的Bash脚本

使用expect和interactive的Bash脚本,bash,shell,scripting,expect,Bash,Shell,Scripting,Expect,我正在尝试创建一个简单的脚本来登录到一个设备,运行一个命令并grep一个单词的输出 到目前为止我有 !/bin/bash echo "" echo -n "Number: " read number echo "" if [ "$number" = "1" ]; then /usr/bin/expect <<EOC set timeout 20 spawn telnet 1.1.1.1 expect "Password" send "admin\r" expect "Comma

我正在尝试创建一个简单的脚本来登录到一个设备,运行一个命令并grep一个单词的输出

到目前为止我有

!/bin/bash
echo ""
echo -n "Number: "
read number
echo ""

if [ "$number" = "1" ]; then

/usr/bin/expect <<EOC
set timeout 20
spawn telnet 1.1.1.1

expect "Password"
send "admin\r"
expect "Command->"
send "Status\r"
expect "Commmand->"
send "exit\r"

EOC
fi
我想做的是让telnet会话在后台运行,并且只返回'Number'ie的值

Number: 1
Yes

要解决这个问题,我只需将所有输出发送到一个文件,然后将所需信息变灰。

我建议从
autoexpect
开始:以交互方式运行整个会话,并将其记录为expect脚本。这可以通过独立
expect
脚本本身来完成。澄清一件事。在执行status命令后,我们期望的输出值是什么?1=是2=否3=否4=是。如果您“手动”运行此命令,在键入status命令后,您需要执行什么操作才能退出?键入exit,但我尝试将send“exit\r”添加到脚本中,但它不起作用。
Number: 1
Yes