如何与其他终端互动?

时间:2015-09-29 10:43:17

标签: bash ubuntu terminal

我有2个终端窗口,T1和T2。 T1运行监视器应用程序,必须全时运行。

T2(bash脚本)用于控制T1并告诉T1开始扫描。 我的问题是我想编写一个开始扫描的脚本,但我需要知道扫描何时完成以便在T2中正确地继续脚本。

当开始扫描时,唯一的反馈是在T1中,当扫描完成时T1表示“Succuess ...”,在T2中没有反馈。

有没有办法编写脚本来读出T1的成功消息?

干杯

2 个答案:

答案 0 :(得分:0)

想到一些想法......

  • 如果python脚本开始扫描,可能它知道扫描何时完成以及是否有效 - 即退出状态。如果是这种情况,您可以修改python脚本以将扫描的退出状态写入名为exitstatus.txt的文件并从T2监视该文件,或者在python脚本周围放置一个包装器来执行相同的操作。请注意,要使其正常工作,您需要在开始每次扫描之前删除exitstatus.txt文件。

  • 另一个想法可能是将扫描命令的输出传输到tee并从那里传输到文件并从T2读取该文件。

  • 另一个想法可能是您在扫描之前在T2中运行命令tty以获取终端设备的特殊文件名 - 类似于/dev/ttys001。将其传递给T1作为python脚本的参数,然后可以使用如下命令在终端T2上写入:

    echo Success > /dev/ttys001

答案 1 :(得分:0)

您可以为IPC使用命名管道。在一个终端试试这个:

mkfifo /tmp/fifo && read LINE < /tmp/fifo && echo $LINE; unlink /tmp/fifo

在另一个终端:

echo foo > /tmp/fifo

使用套接字和netcat,双向通信可能更容易。