我目前有一个脚本,通过
在远程服务器上运行命令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)
该问题是由于光标移动方式不匹配引起的。这个解决方法可以使终端按照预期的方式运行。