1

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

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

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

1 ответ1

3

Это можно сделать с помощью 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .