2015-07-01 28 views
0

我正在嘗試使用python模塊pexpect編寫腳本,這些腳本將連接到服務器並執行命令,就像您在命令行中鍵入的一樣。在命令行上禁用分頁

因此,例如,你可以有這樣的:

child = pexpect.spawn('/usr/bin/ssh [email protected]')

child.sendLine('ls -al')

或任何命令要發送。它會像你在終端上輸入一樣。

在我的腳本中,我試圖運行一個使用sendLine() API的命令,它基本上將大量信息轉儲到命令行。但有一個分頁需要有另一個命令,你必須按一個鍵才能繼續到下一個命令。

因此,例如:

[Some info]

--------------- To continue, press any key. To quit, press 'q'. ---------------

[Some more info]

有沒有辦法,我可以把分頁關閉或命令之前,我嘗試轉儲信息,我可以發送方式到命令行將其關閉?

+1

你試過'ssh -T'嗎? – jfs

回答

1

在Linux中: 您可以使用重定向跳過尋呼機(moreless)。如果在屏幕上顯示輸出很重要,則輸出可以重定向到tee

例如在man ls; ls中,man命令期望用戶按q進行終止,然後執行ls。要在沒有用戶干預的情況下同時執行這兩個命令,可以執行man ls | tee; ls。如果顯示輸出不是強制性的,它也可以重定向到/dev/null

如需更多幫助,請指定您嘗試在遠程服務器上執行的確切命令。

在Python中:當使用pexpect時,如果事先已知中間輸出,則用戶活動可以自動執行。您可以使用expect函數等待特定輸出,然後採取必要的措施(例如使用sendLine)。