我有一個腳本,我用它來發送多個命令使用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