在同时运行shell脚本时从telnet连接中提取数据

在同时运行shell脚本时从telnet连接中提取数据,shell,telnet,Shell,Telnet,我正在尝试编写一个测试脚本,该脚本将通过telnet访问我的被测设备,同时运行一个shell脚本,该脚本将自动化测试的其他部分。自动化部分已经完成,但我在正确打开telnet连接并在测试运行时保存数据时遇到了一个问题 下面是我的测试shell脚本和它引用的expect脚本 #! /bin/bash declare -r telnetip=1.1.1.2 declare -r username=root declare -r filename=telnettest.txt declare -r

我正在尝试编写一个测试脚本,该脚本将通过telnet访问我的被测设备,同时运行一个shell脚本,该脚本将自动化测试的其他部分。自动化部分已经完成,但我在正确打开telnet连接并在测试运行时保存数据时遇到了一个问题

下面是我的测试shell脚本和它引用的expect脚本

#! /bin/bash

declare -r telnetip=1.1.1.2
declare -r username=root
declare -r filename=telnettest.txt
declare -r runTime=10
./telnet.exp $telnetip $username $filename $runTime #telnet script
./tot.sh #automation script

#/usr/bin/expect-f
设置基本目录[lindex$argv 0]
设置用户[lindex$argv 1]
设置文件名[lindex$argv 2]
设置延迟[lindex$argv 3]
产卵电信网
期待“telnet>”
发送“打开$base\u目录\r”
期待“尝试1.1.1.2…”
预期“连接到1.1.1.2”
应为“转义字符为“^]”
应为“soc1登录:”
发送“$user\r”
睡眠2
应为“*$*”
发送“\r”>$filename
睡眠延迟+5
运行上述操作时,我遇到此错误:

usage: send [args] string
    while executing
"send "<data access command>\r" > $filename"
    (file "./telnet.exp" line 18)
用法:发送[args]字符串
执行时
发送“\r”>$filename”
(文件“/telnet.exp”第18行)

我上一次进入Unix是在14年前,所以我肯定我做错了什么……请温柔一点。

你在混合shell和expect语法。你需要:

log_file $filename
send "<data access command>\r"
sleep [expr {$delay+5}]
log\u文件$filename
发送“\r”
睡眠[expr{$delay+5}]

但你的目标还不清楚。“同步”脚本在哪里?

在运行telnet.exp时,我希望同时运行的其他脚本已从示例shell脚本中删除。之后会马上打电话。我编辑了原始帖子以反映这一点。
log_file $filename
send "<data access command>\r"
sleep [expr {$delay+5}]