我有一台 Solaris 服务器,正在运行一个进程,该进程的输入和输出重定向到 FIFO 管道(fifo_in、fifo_out)。
如何通过 ssh 连接到这两个管道?
我希望能够通过 ssh 写入 fifo_in 管道,并让 Solaris 进程执行通过管道接收到的命令,然后当然可以通过 fifo_out 接收进程的输出。
我可以通过 ssh 或 ftp 连接到 Solaris 服务器。不确定它是否安装了 netcat,但从我在网上阅读的内容来看,这似乎不太可能。
编辑:我想通过 python(在客户端)完成所有这些操作,以便我可以解析来自 Solaris 进程的数据。
答案1
事实证明,由于 Python 会抛出 IOerror,因此无法直接通过 ssh 打开 unix 管道。经过一番争论,我最终做了如下。我使用 Python/Paramiko 在 Solaris 服务器上运行这些命令(通过 SSH):
mkfifo input
sleep 10800 > input &
这将创建输入管道,并且“睡眠”确保管道保持打开状态(10800 是 3 小时(以秒为单位))。如果不使用睡眠,管道将在您第一次向其传递一批命令后关闭。
我通过 ssh 发送来运行我的进程:
nohup process_name < input > output.txt &
这将启动该进程,将输入管道附加到其标准输入,并将其输出附加到一个简单的文本文件output.txt。如果我断开 ssh 会话,nohup 可确保该进程保持活动状态。
注意:我最初打算使用输出管道来进行输出,但由于事实证明我无法通过 SSH 打开管道,因此使用管道没有任何优势。我仍然使用管道作为输入,因为这可以确保我的进程在发送命令时继续接受命令。
输出很容易从output.txt中读取,但对于输入,我发送每批命令(我希望进程执行)。首先,Python 脚本使用名为 redir.txt 的新一批命令创建一个文本文件,然后将该文本文件的内容发送到管道中:
cat redir.txt > input
这首先将命令重定向到输入管道,然后进程从管道读取命令。