gpt4 book ai didi

linux - 将及时的命令通过管道传输到 ssh

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:32 26 4
gpt4 key购买 nike

我正在尝试将命令通过管道传输到打开的 SSH session 。命令将由脚本生成,分析结果,并根据结果发送下一个命令。

我不想将所有命令放在远程主机上的脚本中,而只是运行该脚本,因为我也对 SSH 进程的状态感兴趣:在本地发送命令允许“测试”是否SSH 连接是否存在,并从 SSH 进程中获取相应的返回码。

我尝试使用这些方法:

$ mkfifo /tpm/commands
$ ssh -t remote </tmp/commands

换句话说:

$ echo "command" >> /tmp/commands

问题:SSH 告诉我不会为 stdin 打开任何伪 tty,并在“命令”终止后立即关闭连接。

我尝试了另一种方法:

$ ssh -t remote <<EOF 
$(echo "command"; while true; do sleep 10; echo "command"; done)
EOF

但是,在达到 EOF 之前,不会将任何内容刷新到 ssh(在我的例子中,永远不会)。

你们有解决办法吗?

最佳答案

在完成之前停止关闭/tmp/commands。当您关闭管道时,ssh 将停止从中读取数据。

exec 7> /tmp/commands. # open once
echo foo >&7 # write multiple times
echo bar >&7
exec 7>&- # close once

您还可以使用 ssh -tt 强制 ssh 在远程打开 tty。

关于linux - 将及时的命令通过管道传输到 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22479631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com