我有许多测试服务器。这些测试服务器会经常重新映像,并且在重新映像后具有相同的用户帐户和密码。我想编写一个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