我正在使用 python 创建一个电影控制器(暂停/停止...),在其中我 ssh 到远程计算机,然后像这样向命名管道发出命令
echo -n q > ~/pipes/pipename
我知道如果我通过终端 ssh 并自己执行此操作,则此方法有效,因此命名管道重定向的设置没有问题。我的问题是设置 ssh 会话需要时间(1-3 秒),而我希望暂停命令是即时的。因此,我想像这样设置一个持久管道:
controller = subprocess.Popen ( "ssh -T -x <hostname>", shell = True, close_fds = True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE )
然后像这样向它发出命令
controller.stdin.write ( 'echo -n q > ~/pipes/pipename' )
我认为问题在于它ssh
是交互式的,因此它需要回车。这就是我的问题开始的地方,因为几乎所有提出这个问题的人都被告知要使用现有模块:
这很好,但我是如此接近。我只需要知道如何包含回车,否则,我必须去学习所有这些其他模块,这并不重要(例如,现在我无法弄清楚 pexpect 如何使用我的/etc/hosts
文件或我的ssh 无密钥身份验证)。