Вы можете заключить ваше приложение в службу systemd и использовать перехват после запуска для вызова дополнительного bash скрипта, который пробивает дыры в брандмауэре.
/ path / to / python / app / assistant- ufw-hole-puncher
#!/bin/bash
#extra sleep for prespawn script
sleep 2
#punch holes for TCP ports
ports=`sudo netstat -ntlp 2>&1 |grep yourapp | sed -r 's/(.*:)([0-9]*)(\s.*)/\2/'|sort|uniq`
for port in $ports ; do
sudo ufw allow $port
done
#punch holes for UDP ports
ports=`sudo netstat -nulp 2>&1 |grep yourapp | sed -r 's/(.*:)([0-9]*)(\s.*)/\2/'|sort|uniq`
for port in $ports ; do
sudo ufw allow $port
done
Также вы можете запустить этот скрипт перед запуском скрипта, но вам нужно будет добавить дополнительный сон, чтобы дождаться запуска скрипта python.
#!/bin/bash
/path/to/python/app/assistant-ufw-hole-puncher &
python ./your-app.py