我有一个用 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
未被处理。
谢谢。