我追求尽可能轻量的解决方案,即在端口上监听特定请求,然后在端口被命中并收到正确的请求时运行命令。
例如,使用字符串向192.168.0.10
端口发送请求。在主机上(例如),如果该端口被命中并且字符串匹配,则运行命令。5432
my_token
192.168.0.10
我最初考虑使用netstat
(例如nc -l 5000
),然后在更改时运行命令。但是,理想情况下,字符串或各种标记与此或类似命令一起使用会更理想,但无需使用功能齐全的 Web 服务器 - 本质上是可以在后台运行且资源很少的东西。
答案1
可以使用 来完成nc
。以下代码片段从端口读取行,如果行是则5000
运行,如果行是 则运行。客户端断开连接后,将再次运行。some_command
token
some_other_command
foo
nc
while true; do
nc -l 5000 | {
while read line; do
case "$line" in
token )
some_command;;
foo )
some_other_command;;
esac
done
}
done
要与其对话,请运行nc localhost 5000
,然后输入,例如:
foo
token
whatever
foo
Ctrl以+D或Ctrl+结尾C。缺点是:当一个客户端保持连接时,其他客户端无法连接。为了尽量减少此类冲突,您可以一次发送一个命令并立即断开连接:
echo token | nc localhost 5000
或(在 Bash 中)
echo token > /dev/tcp/127.0.0.1/5000