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

284
Elliot Reed

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

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

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

1

1 ответ на вопрос

3
Kamil Maciorowski

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