Прослушайте входящий запрос на порт в Linux, затем выполните команду

Я придумаю как можно более легкое решение для прослушивания порта для конкретного запроса, а затем выполнить команду, если порт будет подключен и правильный запрос будет получен.

Например. Отправить запрос на 192.168.0.10 в порту 5432 со строкой my_token, На хосте (например. 192.168.0.10), затем выполните команду, если этот порт будет подключен, а строка соответствует.

Я изначально думал об использовании netstat (например. nc -l 5000) затем запустите команду на изменение. Тем не менее, в идеале строка или маркер должны быть идеальными вместе с этим или подобным, но без использования полноценного веб-сервера - по сути, то, что может работать в фоновом режиме с небольшим количеством ресурсов.

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

или (в баш)

echo token > /dev/tcp/127.0.0.1/5000
Другие вопросы по тегам