在 Linux 上监听端口上的传入请求,然后运行命令

在 Linux 上监听端口上的传入请求,然后运行命令

我追求尽可能轻量的解决方案,即在端口上监听特定请求,然后在端口被命中并收到正确的请求时运行命令。

例如,使用字符串向192.168.0.10端口发送请求。在主机上(例如),如果该端口被命中并且字符串匹配,则运行命令。5432my_token192.168.0.10

我最初考虑使用netstat(例如nc -l 5000),然后在更改时运行命令。但是,理想情况下,字符串或各种标记与此或类似命令一起使用会更理想,但无需使用功能齐全的 Web 服务器 - 本质上是可以在后台运行且资源很少的东西。

答案1

可以使用 来完成nc。以下代码片段从端口读取行,如果行是则5000运行,如果行是 则运行。客户端断开连接后,将再次运行。some_commandtokensome_other_commandfoonc

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以+DCtrl+结尾C。缺点是:当一个客户端保持连接时,其他客户端无法连接。为了尽量减少此类冲突,您可以一次发送一个命令并立即断开连接:

echo token | nc localhost 5000

或(在 Bash 中)

echo token > /dev/tcp/127.0.0.1/5000

相关内容