Gnome 3自动执行需要网络的脚本

时间:2014-05-05 08:56:48

标签: gnome-3 dyndns

我的老父亲正在使用ubuntu-gnome。他没有静态IP地址。为了执行远程管理,我需要知道他的ip。我使用dyndns免费帐户(在adsl调制解调器中配置),但这将在几天内停止工作。

我想每次登录时都会运行一个脚本,在我的网站上发布他的ip。我试图在启动时添加脚本,但网络不可用。似乎是gnome 3启动了网络,但我对gnome 3知之甚少。

如果网络可用,我该如何自动运行脚本?

2 个答案:

答案 0 :(得分: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。看起来这正是你想要的。

答案 1 :(得分:1)

最简单的方法是使用其他动态DNS服务。我过去常常使用自己的。您还可以将curlwget命令放入 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中,该脚本将在任何网络配置更改时调用,然后此类脚本可以过滤连接事件并启动通知脚本。