使用子进程运行"ssh -t"时格式错误的打印语句



我目前有一个脚本,通过

在远程服务器上运行命令
subprocess.Popen(["ssh", "host", "-t", ...etc], stdout=subprocess.PIPE)

我需要能够随意终止这个ssh调用产生的进程,当我终止用-t标志创建的ssh会话时,这是没有问题的。但是,当我试图在ssh调用之后的任何时候打印程序中的任何内容时,输出是畸形的。

everything
looks
like
this

我认为这是由于额外的回车。我目前卡住了,因为我不能摆脱-t或进程没有被杀死,并且还没有找到一种方法来禁用这个子进程调用对我的终端所做的任何事情。

是否有解决方法来阻止子进程像这样影响我的整个终端?

使用unbuffer程序执行ssh -t调用修复了错误的输出

subprocess.Popen(["unbuffer", "ssh", "host", "-t", ...etc], stdout=subprocess.PIPE)

该问题是由于光标移动方式不匹配引起的。这个解决方法可以使终端按照预期的方式运行。

最新更新