2011-06-07 134 views

回答

2

這是因爲您必須爲每個exec_command調用打開一個新通道。由於su命令與特定通道關聯,因此會失去對su命令的認證。

您有幾個選項。

  1. 運行與須藤命令,這可能是不可能的過度的paramiko
  2. 登錄作爲根,它不一定是一個好主意
  3. 使用invoke_shell()您的頻道上,然後經由STD發送命令進入外殼

選項3允許與paramiko交互使用ssh,保持狀態信息不變。這就是你需要的su命令。它還允許您在shell連接周圍創建一個pexpect類型的包裝,觀察stdout管道是否顯示事情已完成,並且可以通過stdin發送其他命令。注意填充和阻塞的管道,直到讀取數據。