簡體   English   中英

在Linux上使用python pexpect在另一台服務器上無法使用ssh查找文件

[英]Not able to find file using ssh on another server using python pexpect on linux

我使用pexpect創建了簡單的python腳本,使用創建了一個spwan進程

 CurrentCommand = "ssh " + serverRootUserName + "@" + serverHostName
 child = pexpect.spawn(CurrentCommand)

現在,我使用代碼運行一些命令,例如ls-a或“ find / opt / license / -name'* .xml'”

 child.run(mycommand)

如果從Pycharm運行,它可以正常工作,但是如果從終端運行,則無法正常工作,它找不到任何文件,我認為它正在研究我的本地系統。

誰能給我建議。 謝謝

作為建議,請看一下paramiko庫(或使用它的Fabric,但有特定用途),因為這是ssh的python接口。 它可以使您的代碼更好一些,並且可以更有效地抵抗錯誤或攻擊。

但是,我認為問題來自您對run的使用。

該函數運行給定的命令; 等待它完成; 然后以字符串形式返回所有輸出。 STDERR包含在輸出中。 如果未提供命令的完整路徑,則會搜索路徑。

您應該看的是“期望”。 即您的spawn與spawn使用,那么您應該使用expect等待它到達適當的點(例如,已連接,在motd按下后終端准備就緒等)(因為ouy可能必須在其中輸入用戶名和密碼)。

然后,您要運行sendline將行發送到程序。 參見示例:

http://pexpect.readthedocs.io/en/latest/overview.html

希望對您有所幫助,並認真看一下paramiko;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM