首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python通过ssh执行命令

使用Python通过ssh执行命令
EN

Stack Overflow用户
提问于 2010-08-28 00:09:02
回答 11查看 568.1K关注 0票数 172

我正在编写一个脚本来自动化Python中的一些命令行命令。目前,我正在进行这样的调用:

代码语言:javascript
复制
cmd = "some unix command"
retcode = subprocess.call(cmd,shell=True)

但是,我需要在远程机器上运行一些命令。我会手动使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知的)密码登录到远程机器,所以我不能只使用cmd = ssh user@remotehost,我想知道是否有我应该使用的模块?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-08-28 00:18:03

我会推荐你去paramiko

请参阅this question

代码语言:javascript
复制
ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

如果您使用的是ssh密钥,请执行以下操作:

代码语言:javascript
复制
k = paramiko.RSAKey.from_private_key_file(keyfilename)
# OR k = paramiko.DSSKey.from_private_key_file(keyfilename)

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=user, pkey=k)
票数 253
EN

Stack Overflow用户

发布于 2010-08-28 00:44:46

或者,您可以只使用commands.getstatusoutput

代码语言:javascript
复制
   commands.getstatusoutput("ssh machine 1 'your script'")

我广泛地使用了它,它工作得很好。

在Python 2.6+中,使用subprocess.check_output

票数 55
EN

Stack Overflow用户

发布于 2019-08-10 13:49:07

保持简单。不需要任何库。

代码语言:javascript
复制
import subprocess

subprocess.Popen("ssh {user}@{host} {cmd}".format(user=user, host=host, cmd='ls -l'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3586106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档