我有許多測試服務器。這些測試服務器會經常重新映像,並且在重新映像後具有相同的用戶帳戶和密碼。我想編寫一個python腳本,通過這些服務器上的ssh遠程運行命令,而不會提示用戶輸入密碼,並收集命令的輸出。在某些情況下,我想運行一個命令,獲取輸出,分析輸出。在其他情況下,我想一次運行幾個命令(可能運行一個腳本文件)。我使用第三方軟件包(例如paramiko)遠程閱讀了許多有關運行命令的帖子。有沒有推薦的方式來實現這個任務,而不使用額外的軟件包?運行腳本的服務器可能沒有安裝該軟件包。通過ssh遠程運行通訊的選項
或者我應該使用pexpect?
理想情況下,我想使用subprocess
並捕獲輸出(提供密碼作爲參數)。當然,我的腳本必須處理客戶端首次登錄時的情況,並提示將ssh密鑰添加到.ssh/knownhosts
文件中。
謝謝 艾哈邁德。
我認爲使用命令行工具dsh是你想要的 – muddyfish
這是一個有點意見的基礎。我嘗試了'paramiko',這是一個很好的Python的ssh支持。但是,它確實很慢(我的情況與你的情況相同,在40個不同的帳戶或服務器上運行的命令類似於100個命令)。 Paramiko真的很容易安裝(它只需要'python-dev'包)。沒有嘗試pexpect。 – FunkySayu
當我創建我的程序時,我沒有找到任何好的方法來運行ssh命令而沒有任何額外的庫(除了通過使用'subprocess'對** ssh'命令進行系統調用,**這不是解決方案** )。 – FunkySayu