当特定设备连接到我的机器时,我已使用Udev规则调用curl命令。它与Ubuntu 14.04完美配合。 将机器升级到Ubuntu 18.04后,它将停止工作。
我的udev规则就是这样
ACTION ==“ add | remove”,ENV {PRODUCT} ==“ acd / 3520 / *”,RUN + =“ / home / leapset / system / devicemanager / trigger-device-connection.sh”
在脚本内部,它像下面一样调用curl命令
卷曲-X GET 'http://127.0.0.1:8080/moxy/rest/device/connectivity/change'-m 2 2> / dev / null&
尽管我将超时时间增加到30秒,但它总是显示curl命令超时。
在Ubuntu 18.04内部进行的哪些更改使我无法使用上述实现?
答案 0 :(得分:0)
我在以下主题中找到了答案。
https://lists.freedesktop.org/archives/systemd-devel/2018-August/041195.html
似乎对Udev服务的限制使我们无法使用上述功能。
默认的服务配置(/lib/systemd/system/udev.service)阻止我们调用任何IP
[Service]
Type=notify
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
RestartSec=0
ExecStart=/lib/systemd/systemd-udevd
KillMode=mixed
WatchdogSec=3min
TasksMax=infinity
MountFlags=slave
MemoryDenyWriteExecute=yes
RestrictRealtime=yes
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6
SystemCallArchitectures=native
LockPersonality=yes
IPAddressDeny=any
为解决该问题,我们在文件底部添加了另一个条目。
IPAddressAllow=127.0.0.1
之后,Udev能够通知设备已插入POS