У меня есть правило udev, которое загружает файл при подключении USB-устройства:
ACTION=="add", ATTRS{idVendor}=="cafe", MODE="0660", GROUP="root", SUBSYSTEM=="usbmisc", RUN+="/home/me/udev-net.sh"
Сценарий выполняет простой wget:
#!/bin/sh
wget -o /tmp/wget.log -O /tmp/index.html http://www.google.com
Это хорошо работает в Ubuntu. 16.04, но 18.04 wget не удается разрешить www.google.com - после запуска сценария /tmp/wget.log содержит:
--2019-08-19 14:49:43-- http://www.google.com/
Resolving www.google.com (www.google.com)... failed: Name or service not known.
wget: unable to resolve host address 'www.google.com'
Если я добавлю запись '172.217.23.164 mygoogle' в / etc / hosts разрешение разрешено, но затем wget блокируется в сокете connect (), и через некоторое время процесс wget завершается.
Есть ли способ разрешить это в Ubuntu 18.04, чтобы поведение было таким же, как в 16.04?
Да, это поведение является тем же udev, триггером в течение достаточно короткого времени для конфигурирования нового устройства, и это выполняется в ограниченной среде.
я рекомендовал бы высокоуровневый сценарий, которые работают на уровне пользователя, как Python/pyudev.
Ссылка: man udev
Примечание, которое запущение программ, которые получают доступ к сети или монтируют/размонтируют файловые системы, не позволяется в правилах udev, из-за песочницы по умолчанию, которая осуществляется на systemd-udevd.service.