2010-03-24 38 views
1

我想腳本telnet來測試我的網站輸入處理。我可以手動執行:在網絡服務器上的腳本telnet

telnet localhost 8888 
... 
GET/HTTP/1.1\n 
Host: localhost 


...html response 

但我可以將命令傳遞給我的shell腳本中的telnet!

我已經試過:

(echo "GET/HTTP/1.1\n"; echo "Host: localhost \n\n"; sleep 1) | telnet localhost 8888 

它在所有產生任何結果!

回答

2

(可能不是唯一的問題) 您應該「echo -en」,並使用單引號關閉字符串。這使得bash的解釋\ n正確

問候

3

我發現netcat,又名nc,是更適合於這種任務的。

同樣,朱塞佩提到你將不得不修復報價。 bash -e的替代方法是使用$'this form'進行引用,其中\n,\t等在解析命令行時被bash解釋,而不是傳遞到echo。所以這種形式適用於許多不同的公用事業。

+0

+1,nc更適合那個恕我直言。 –

+0

此外,最新版本的bash識別「/ dev/tcp/host/port」僞文件。通過使用此功能(如果可用),telnet不再是必需的。再看看 –

+0

afaik,/ dev/tcp不是bash的一個特性,它依賴於內核配置,或者啓用的模塊,或者某些東西。無論如何,一些發行版(包括Ubuntu和我相信大多數debian-likes)都沒有這個功能。 但我可能是錯的..有沒有比'ls/dev/tcp'更好的檢查方法?這使我在Ubuntu 9.10下「沒有這樣的文件或目錄」。 – intuited

1

通常的答案是「我如何編寫腳本x?」是「expect

相關問題