我試圖從Linux上獲取在Windows機器上運行的進程列表,但是當我在腳本中執行此操作時,我沒有得到任何輸出。如果我手動使用telnet並使用pslist命令,我會得到完整的進程列表,但不會在我的腳本中。如何從bash獲取telnet命令的輸出?
這裏是bash腳本(減去的變量):
(echo open ${host}
sleep 1
echo ${user}
sleep 3
echo ${pass}
sleep 1
echo pslist
sleep 2
) | telnet
,我只是用bash pslist.sh
調用它,並且輸出是類似的東西:
telnet> Trying ip_address...
Connected to ip_address.
Escape character is '^]'.
Welcome to Microsoft Telnet Service
login: my_loginmy_passwordpslistConnection closed by foreign host.
我在做什麼錯?
嘗試終止每個'echo'與\ r字符,就像這樣:'回聲-e 「$ {}用戶\ r」 – nsilent22
echo有許多可移植性問題,不應該與選項標誌一起使用。請考慮使用printf:'printf'name:%s \ n'「$ name」'。 http://wiki.bash-hackers.org/commands/builtin/echo | http://cfajohnson.com/shell/cus-faq.html#Q0b | http://www.in-ulm.de/~mascheck/various/echo+printf –
我會建議使用'expect'來編寫telnet腳本。您可以在這裏瞭解並下載它:http://expect.sourceforge.net/有一個示例telnet腳本在此處使用它:http://stackoverflow.com/questions/7789710/expect-script-to-automate-telnet -login –