我正在尝试使用Paramiko连接到远程主机并执行许多文本文件替换。
i, o, e = client.exec_command("perl -p -i -e 's/" + initial + "/" + replaced + "/g'" + conf);
其中一些命令需要作为sudo运行,从而导致:
sudo:对不起,您必须有一个tty才能运行sudo
我可以使用-t开关和ssh强制进行伪tty分配。
使用paramiko可以做同样的事情吗?
我认为您想要对象的invoke_shell方法SSHClient(我想提供一个URL,但是lag.net上的paramiko文档非常繁琐,只是不会为我显示文档中给定位置的特定URL)-它为您提供了Channel,您可以在其上进行exec_command类似操作,但可以通过伪终端(带有终端类型以及行和列的数量!-完成)来实现,这似乎是您所要的。
invoke_shell
SSHClient
Channel
exec_command