从Python脚本启动交互式SSH会话
我想从一个Python脚本启动一个交互式的SSH终端,但不想使用像pexpect或paramiko这样的模块。我想用CentOS自带的Python,这样可以避免兼容性和部署的问题。
我可以使用subprocess模块很好地运行命令,但就是无法获得一个交互式的终端。在Perl中,我只需要用反引号就能做到这一点,但我想找一种更符合Python风格的方法。
有人能给我指个方向吗?
更新 - 根据@leoluk的回答,我参考了docs.python.org上的说明,得出了这个:subprocess.call("ssh ...", shell=True)
3 个回答
-1
如果你想要在自动回复和互动之间找到一个平衡,可以使用pexpect这个工具。
0
为了让未来来看这个讨论的朋友们更清楚明白,这里有一个使用提问者的 subprocess.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)
10
如果我使用 os.system('ssh [...]')
,我会得到一个可以互动的终端。