使用 Python 通过 ssh 执行命令

新手上路,请多包涵

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

 cmd = "some unix command"
retcode = subprocess.call(cmd,shell=True)

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

原文由 fredley 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 555
2 个回答

我会把你推荐给 paramiko

看到 这个问题

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

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

 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)

原文由 shahjapan 发布,翻译遵循 CC BY-SA 4.0 许可协议

把事情简单化。不需要图书馆。

 import subprocess

# Python 2
subprocess.Popen("ssh {user}@{host} {cmd}".format(user=user, host=host, cmd='ls -l'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

# Python 3
subprocess.Popen(f"ssh {user}@{host} {cmd}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

原文由 Ronn Macc 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题