TL; DR: Почему анализатор Scapy не запускается при перезагрузках из systemd?
У меня на RPI3 работает следующий код, который специально ищет сетевые запросы. Это использует встроенный ETH0 Wi-Fi:
monitorConnections.py
def arp_detect(pkt):
print("Starting ARP detect")
logging.debug('Starting ARP detect')
if pkt.haslayer(ARP):
if pkt[ARP].op == 1: #network request
PHONE_name = "Unknown"
PHONE_mac_address = ""
if pkt[ARP].hwsrc in known_devices.keys():
print ("Known Phone Detected")
logging.debug('Known Phone Detected')
# Grab name and mac address
PHONE_mac_address = pkt[ARP].hwsrc
PHONE_name = known_devices[PHONE_mac_address]
print ('Hello ' + PHONE_name)
logging.debug('Hello ' + PHONE_name)
else:
# Grab mac address, log these locally
print ("Unknown Phone Detected")
logging.debug('Unknown Phone Detected')
PHONE_mac_address = pkt[ARP].hwsrc
print (pkt[ARP].hwsrc)
print("Start!")
print (sniff(prn=arp_detect, filter="arp", store=0))
Когда я запускаю это с помощью команды
python2 monitorConnections.py
Это работает как спроектирован, однако я пытался поместить это в демон, сознавая, что он должен работать после того, как будет установлено соединение inte rnet. У меня есть следующие настройки в моем сервисе:
MonitorConnections.service
[Unit]
Description=Monitor Connections
Wants=network-online.target
After=network.target network-online.target sys-subsystem-net-devices-wlan0.device sys-subsystem-net-devices-eth0.device
[Service]
Type=simple
ExecStart=/usr/bin/python2 -u monitorConnections.py
ExecStop=pkill -9 /usr/bin/autossh
WorkingDirectory=/home/pi/Shared/MonitorPhones
Restart=always
User=root
StandardOutput=console
StandardError=console
[Install]
WantedBy=multi-user.target
Чтобы найти службы, после которых мне нужно запустить мой скрипт, я запустил эта команда:
systemctl list-units --no-pager
Чтобы найти следующие сервисы для добавления в мой сервис в разделе «После» - эти corponpond с сервисами ethe rnet (я представляю!)
sys-subsystem-net-devices-wlan0.device
sys-subsystem-net-devices-eth0.device
Насколько я могу судить, это успешно работает. Когда я сохраняю все и запускаю следующее:
sudo systemctl daemon-reload
sudo systemctl restart monitorConnections
Это прекрасно запускает сценарий. Затем я настроил мой скрипт для запуска при перезагрузке следующим образом:
sudo systemctl enable monitorConnections
И перезагрузка, я вижу, что он запускает оператор печати «Старт», однако тогда кажется, что ничего не запускается внутри «сниффа» 'команда, однако при запуске
sudo systemctl -l status monitorConnections
я вижу, что сценарий активен - значит, он не ошибся!
Мой вопрос: почему кажется, что нюх Scapy не работает при перезагрузке? Если бы я что-то пропустил
Я честно скажу, что не так - любая помощь по этому поводу будет принята с благодарностью!