Как прослушивать веб-перехватчики из сценария bash?

Я хочу прослушать веб-перехватчик с GitHub и запустить сценарий bash (git pull) при любом новом коммите.

Я не хочу использовать python или nodejs только сценарий bash. Является ли это возможным? Я верю, что netcat может это сделать.

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

Необязательно: может быть, netcat сможет передать тело запроса awk или pgrep и фильтровать только post запрос или даже извлечь имя REPO в переменную среды.


person Aminadav Glickshtein    schedule 27.10.2016    source источник


Ответы (2)


Вы можете создать цикл while с помощью netcat, что довольно неприятно:

while IFS= read -r line; do
    /the/script/you/want/to/run
done < <(netcat -l 8888 | grep '^POST ')

Отказ от ответственности: непроверено

person das_j    schedule 27.10.2016

Сокат?

http://www.dest-unreach.org/socat/doc/socat-multicast.html

Просто выбросив его туда, я хочу сделать то же, что и Aminadav, но не обязательно использовать http webhook (я думаю, я мог бы быть отклонен :)

Если вы используете многоадресную рассылку, вы можете управлять кластером. Кому нужны вебхуки?

На первой странице этого руководства показано, что вы можете получить пакет и выполнить команду типа «git pull», например, «git pull», в которой затем мог бы быть обработчик post-merge, который запускал более сложные задачи на каждом узле кластера, когда он выполнял pull. Используйте git для распространения, но не опрашивайте сервер git, вместо этого запускайте запрос с помощью многоадресного socat. Еще не пробовали это ...

person Rich K.    schedule 09.01.2017