从Python脚本开始交互式SSH会话

10

我想从Python脚本中启动一个交互式SSH终端,而不使用pexpect或paramiko等模块 - 我想使用CentOS预安装的Python(以简化兼容性和部署问题)。

我可以使用subprocess模块正常运行命令,但无法获得交互式终端。在Perl中,我只需使用backticks就可以实现这一点,但我正在寻找使用Python的方式。

有人能指点我吗?

更新 - 根据@leoluk的答案,我使用python文档中的说明得出了以下代码:subprocess.call("ssh ...", shell=True)

3个回答

10

如果我使用 os.system('ssh [...]'),我将获得一个交互式终端。


通过使用指南将 os.system 转换为 Popen,我成功地使它工作了。 - sholsapp
@sholsapp,您能否分享一下使用Popen的解决方案?谢谢! - mart1n
@mart1n 我已经更新了问题,使用了我根据 https://docs.python.org/2/library/subprocess.html#replacing-os-system 指南编写的代码来替换 os.system - sholsapp

0
为了让未来的读者更加清晰简明地理解本帖,这里提供一个使用 OP 的 subproccess.popen() 解决方案的示例。
try:
     print("Starting SSH connection...")
     ssh_cmd = 'ssh -vvv -i your_ssh_key -o BatchMode=yes -p 22 user@server_address 2> ssh-error.log'
     subprocess.run(ssh_cmd, shell=True)

except subprocess.CalledProcessError as e:
     raise SystemExit(e)

-1

4
楼主表示不想使用pexpect! - snim2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接