我有一个脚本,我用它来发送多个命令使用telnet会话。我不确定我是否需要转义字符。如果我在telnet会话中直接键入命令,它会起作用,我会得到预期的响应。但是,当我把它放在脚本中不起作用。使用telnet会话内的变量
真奇怪的是,我已经把其中一个命令放在echo中,并且我从telnet提示符回到了相同的位置......这让我相信我需要避开某些字符,但这是我的问题。然而
我使用睡眠未遂命令,真的似乎并没有改变什么......
这里的片段:
pushSAT() {
#This is what the command should look like:
#EPHM:FPSH,satellite,ephemeris_code,file_name,cmd_action<cr><lf>
HOST=$1
SATS=($(grep O3B_M* $DIR/$FILE2ACU))
for i in "${SATS[@]}"
do
echo "$i"
echo "EPHM:FPSH,$i,202,$FILE2ACU,@";
(sleep 2
echo "EPHM:FPSH,$i,202,$FILE2ACU,@";
sleep 1
echo "TGTS:FLST,?";
sleep 1
echo "^]";
sleep 1
echo "logout";
) | telnet $HOST 6100 | tee acuresponse.txt
log user.info "Pushed $FILE2ACU to $HOST for $i."
done
}
下面是呼应以及远程登录的响应;注意它被切断的地方......奇怪!
Loading satellites to ant-3-acu
O3B_M001
,202,ephemeris.txt,@"
这就是问题出在哪里;为什么这会被切断?
而且,这是我从被失败的命令期望:
Connected to ant-3-acu (ip).
Escape character is '^]'.
EPHM:FPSH,O3B_M001,202,ephemeris.txt,@
ephm:fpsh,0,0
有'的迹象\ r \ n'对和空白问题。你可以发表一些你的'grep'命令输出的行吗? – chepner
您可能还想查看['expect'](http://www.nist.gov/el/msid/expect.cfm)实用程序。 – chepner
@chepner Telnet完全在线上处理\ r \ n,它应该理解与回显在输出中一定使用的(键盘)输入相同的换行符? – EJP