2013-04-30 90 views
4

有一個節點,我可以通過Robot Framework(SSHLibrary.Start Command或Execute Command)遠程啓動並啓動一個腳本。此遠程腳本啓動到另一個從外部隱藏的節點的telnet連接。這個telnet調用似乎是對機器人的阻塞事件。我使用RIDE執行測試,並停止工作。我可以低效地發送停止信號。是否有可能在ssh中產生telnet?有沒有辦法在Robot Framework的ssh連接中使用telnet?

回答

2

我們確實沒有使用該方法通過telnet,但與其他SSH會話或者說我們不能以其他方式訪問其他炮彈...

打開一個SSH連接到第一機器。 在此連接上,使用SSHLibrary關鍵字,如設置提示,寫入和讀取或讀取直到提示以手動打開到下一臺計算機的Telnet連接。 寫和讀關鍵字可以使用有點像期待和產卵...

+0

寫和讀直到提示組合似乎工作。以前我試圖用Start Command和Execute Command啓動telnet而沒有成功。現在我從telnet得到提示,但是我不能再發送任何命令。但是,我正確設置了提示,測試失敗並顯示「未找到匹配項」/這裏有一個換行符/'在3秒鐘內「。我無能爲力。 – Milo 2013-05-02 08:33:52

3

一切是可能的。

讓我們描述一下你的場景:機器人框架在機器A上運行。測試將A連接到機器B,通過ssh和B通過telnet連接到機器C.

從你的問題不清楚測試卡在哪一步。測試是否確實建立了telnet連接? telnet進程實際上是從B啓動的嗎?

在這裏你應該考慮兩個相關的問題。

第一個是Robot Framework在單線程中執行測試。這意味着在關鍵字返回之前,測試確實執行了而非進度。如果要在測試繼續時打開telnet會話,則必須使用SSHLibrary.start命令而不是執行命令

第二點是控制編程式的遠程登錄會話。 telnet客戶端必須支持某種批處理執行(例如不要求輸入密碼或刷新輸入)。確保你能夠從測試中在C上發出命令。您應該可以使用寫入關鍵字來重定向C的命令。您可以通過從其標準輸入中搜索命令文件來檢查telnet客戶端的工作情況。像

cat commands_for_c.txt | telnet ...to..c... 
+0

您對我的場景的描述是正確的。早些時候,我嘗試使用Start Command和Execute Command啓動telnet。然後看起來好像連接沒有建立。現在我只使用Write,並從telnet獲取提示,但Robot似乎忘記了我的提示預設或其他內容。看到我對sdmythos_gr的回答的其他評論。 – Milo 2013-05-02 08:37:19

+0

帶管道的貓可能是一個很好的方式去做這件事......如果我沒有弄錯,設置的提示功能已經在最新的sshlibrary中發生了變化,並且可能有一種情況是每個連接只設置一次。在測試中,我們使用以前版本的ssh庫之一(我認爲0.9),所以在任何寫入命令之前,我們設置了預期的提示。即設置提示密碼:然後寫入密碼。然後設置提示符>然後寫命令... – 2013-05-02 09:14:45

+0

我看了一下SSH庫的更改日誌。根據我的理解,這表示過去全局設置的提示(並且可以根據需要多次更改)以及所有連接都使用該提示,但現在每個連接都可以有自己的提示。 – Milo 2013-05-02 12:04:24

相關問題