2010-01-28 162 views
0

我想執行一個ssh命令並將輸出傳輸到文件。腳本:SSH命令執行並保持shell打開,管道輸出到文件

一般來說,我會做:

SSH用戶@ IP「命令」 >>/MYFILE

問題一旦執行命令的SSH關閉連接,但是 - 我的命令發送輸出通過另一個程序在後臺進入ssh通道,因此我沒有收到輸出。

我該如何對待ssh來讓我的殼保持打開狀態?

歡呼

斯文

+1

請發佈你如何'在後臺發送數據到ssh頻道'。這對我來說是沒有意義的。 – bmargulies 2010-01-28 13:52:26

+0

我說的系統就像一個思科路由器。 我執行的命令啓用調試,並且需要執行多個步驟,例如: 1. diag調試en 2. diag調試應用程序代理1 這兩個命令都被執行,我被放回「shell」。 只要觸發了某些事件,調試的輸出將顯示在cli上。 但是我想將它包含在一個腳本中,如果我執行這些命令,一旦命令執行完畢,ssh通道就會關閉。 歡呼聲 sven – sven 2010-01-28 14:01:53

+0

看到這個可能類似的問題:http://stackoverflow.com/questions/1633750/ssh-with-command-plus-the-shell – 2010-01-28 17:07:51

回答

1

我的理解是,command啓動一些後臺進程,也許以後會寫一些輸出到終端。如果command在此之前終止,ssh會話將被終止,並且後臺程序不會寫入任何終端。

一個簡單和天真的解決方法就是睡夠長

ssh [email protected] "command; sleep 30m" >> /myfile 

比睡眠更好的解決辦法是等待後臺進程(ES)在一些更智能的方式來完成,但這是不可能的沒有進一步的細節說。

+0

非常感謝。但是遠程系統是一個封閉的系統,不能訪問真正的shell(思考一個cisco ssh shell),所以不允許自定義命令。爲了簡化我所需要的是,我希望在執行完成時執行以下命令而不關閉ssh通道(這必須在「命令」本身沒有任何內容的情況下完成,因此不需要遠程更改):ssh user @ ip「命令「 – sven 2010-01-28 15:03:36

0

比bash更強大的是Python與Paramiko和PyExpect。

相關問題