Проблемы с перенаправлением портов, в частности, с Flask, но не с express.js

Для exec

После того, как я прочитал вопрос и ответ Значение " exec env COMMAND " возможным решением может быть префикс env… с помощью exec . Это предотвратит порождение дочернего процесса. Однако ps выводит {svscanboot} / bin / sh / opt / bin / svscanboot . Это имя изменится на svscan / opt / service после выполнения exec .

Или перехватить сигналы

Другой способ справиться с этим - с помощью ловушки, которая передает сигналы дочернему процессу.Например, Переслать SIGTERM потомку в Bash или более подробно объясненный http://veithen.github.io/2014/11/16/sigterm-propagation.html {{1} } Проблема с этим маршрутом решения заключается в том, что сигнал SIGKILL, также известный как номер сигнала -9 , не может быть перехвачен.

Exec с обходным путем изменения имени

Чтобы не перехватить сигнал KILL, я выберу маршрут exec :

…
exec env - PATH=$PATH svscan /opt/service 2>&1

Это все еще усложняет задачу остановки / уничтожения / перенастройте "svscanboot" в системе инициализации Entware из-за измененного имени. Это изменение имени процесса exec потребует обходного пути.

Имитация svscanboot

Entware-daemontools-init-script может быть изменена на имитацию svscanboot , например:

ENABLED=yes
#PRECMD="exec /dev/null;exec 2>/dev/null;/opt/bin/svc -dx /opt/service/* /opt/service/*/log"
PROCS="svscan"
ARGS="/opt/service 2>&1"
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
PREARGS="env - PATH=$PATH"
DESC="daemontools"

Прокомментированный PRECMD запрещает запуск svscan .

2
16.03.2017, 23:26
1 ответ

Если вы используете встроенный HTTP-сервер Flasks, то это объясняется в документации Flask (прокрутите вниз до раздела Externally Visible Server):

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

Если отладчик отключен или вы доверяете пользователям в вашей сети, вы можете сделать сервер общедоступным, просто добавив --host=0.0.0.0 в командную строку:

flask run --host=0.0.0.0

Это указывает вашей операционной системе прослушивать все публичные IP.

Вывод nmap на вашей машине myserver показал порт 5000 как открытый, потому что вы использовали nmap localhost, который сканирует открытые порты на localhost aka 127.0.0.1, а не 192.168.x.x.

2
27.01.2020, 22:10

Теги

Похожие вопросы