Bash:将命令回显到 tty

Bash:将命令回显到 tty

我有一个用 Python 编写的服务,可以接收命令并执行操作,其构建方式如下:

    print("\nWelcome!\n")

    for line in sys.stdin:
        cmd=line.rstrip()
        if cmd == "ls" or cmd == "help":
            print("Available Commands:")

现在该服务已启动systemd,其单元文件如下:

[Service]
Environment=PYTHONUNBUFFERED=1
ExecStart=...service.py
WorkingDirectory=...

StandardOutput=tty
StandardInput=tty-force
TTYVHangup=yes
TTYPath=/dev/tty60
TTYReset=yes

因此服务输入和输出附加到tty60.我可以用来conspy 60查看服务正在做什么并与其交互。例如,我在这里输入test然后help

test
Error: command 'test' not found.
Type 'help' for a list of available commands.

help
Avaliable Commands:
> status, fan1, fan2, fan3, fan4, wake, sleep, quit

Python 能够获取我输入的内容并按预期给出答案。

现在,如何在tty不输入类似交互式程序的情况下向 发送命令conspy

我累了echo -e "ls\n" >> /dev/tty60,在另一个终端中conspy我可以看到该命令,但 Python 没有处理它:

help **---> sent via conspy**
Avaliable Commands:
> status, fan1, fan2, fan3, fan4, wake, sleep, quit
help **---> sent with "echo"**

正如您所看到的,最后help发送的通过echo未被处理。

谢谢。

相关内容