我正在使用Bash腳本自動化一些telnet相關任務。 一旦自動化,用戶將不會與telnet交互。 (這是它會完全自動化)使用bash腳本自動化telnet會話
腳本看起來是這樣的:
# execute some commands on the local system
# access a remote system with an IP address: 10.1.1.1 (for example)
telnet 10.1.1.1
# execute some commands on the remote system
# log all the activity (in a file) on the Local system
# exit telnet
# continue on with executing the rest of the script.
有2個問題,我在這裏面臨:
如何執行的命令從腳本遠程系統(沒有人際交互)?
根據我對某些測試代碼的經驗,我能夠推斷出當執行telnet 10.1.1.1時,telnet進入交互式會話,腳本中的後續代碼行在本地系統上執行。我如何在遠程系統而不是本地系統上運行代碼行?
我無法獲得本地系統上telnet會話中活動的日誌文件。我使用的stdout重定向在遠程系統上創建了一個副本(我不想執行將日誌複製到本地系統的複製操作)。我怎樣才能實現這個功能?
'expect'主要用於交互式會話。我想要的是一個自動化的非交互式會話。我遇到的問題是我無法在遠程系統上運行腳本(通過telnet),因爲_telnet 10.1.1.1_後面的所有行都在本地機器上執行,而不是在我正在訪問的機器上執行。 – khan
正如Thomas Telensky指出的那樣,根據您的需要ssh最終更容易。但期望可以完全不互動。我假定你的意思是在telnet之後的所有行都是你想在遠程機器上執行的那種情況,只需將它們添加到expect腳本中作爲發送命令並刪除交互命令即可。但是ssh更簡單也更安全。 – joemooney
夠公平的。我將使用期望來完成這項任務。 – khan