我的老父亲正在使用 ubuntu-gnome。他没有静态IP地址。为了执行远程管理,我需要知道他的 ip。我正在使用 dyndns 免费帐户(在 adsl 调制解调器中配置),但这将在几天后停止工作。
我想在他每次登录时运行一个脚本以在我的网站上发布他的 ip。我试图在启动时放置一个脚本,但网络不可用。貌似是gnome 3启动网络,但是我对gnome 3了解不多。
一旦网络可用,我应该如何让我的脚本自动运行?
一种可能的非优雅解决方案是将您的脚本放在他的 cron 中以每 X 分钟运行一次:)
看着我/etc/NetworkManager/
的看起来有一个文件夹dispatcher.d
,我认为它会做你想要的。只需在其中尝试使用 bash/perl/python w/e 脚本适当地设置权限。system-connections/
您可以在文件夹中找到 UUID 。更多信息可在man networkmanager
.
编辑:看看我发现了什么:https ://askubuntu.com/questions/13963/call-script-after-connecting-to-a-wireless-network 。看起来这正是你想要的。
最简单的方法是使用另一个动态 DNS 服务。我以前用自己的。您还可以将命令curl
或wget
命令放入cron或创建一个 systemd 服务,该服务将定期调用该命令。作为目标,您必须将您的计算机与 Web 服务器一起使用,您可以在其中查看日志中的 IP。
连接网络的不是 Gnome,而是一个系统服务,叫做NetworkManager
. 如果可能,它会尝试在启动时连接。在某些情况下,它等待无线信号,在其他情况下,它等待用户密码。我最近验证了在 Fedora 中,NetworkManager 正确实现了 systemd,network-online.target
但它可能尚未在其他发行版中修复,请参阅上游错误报告。
https://bugzilla.gnome.org/show_bug.cgi?id=728965
如果要在启动后立即运行系统服务,则需要使用:
[Unit]
...
Wants=network-online.target
After=network-online.target
如果您可以期望连接在合理的时间内出现,您也可以只运行一个在开始时调用nm-online
以等待网络连接的脚本,否则它会超时。这样的脚本可以从包括用户会话在内的任何环境中运行。
而且,如前所述,您可以将脚本放入其中,该脚本/etc/NetworkManager/dispatcher.d
将在任何网络配置更改时调用,然后此类脚本可以过滤连接事件并启动通知脚本。