2

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

我想在他每次登录时运行一个脚本以在我的网站上发布他的 ip。我试图在启动时放置一个脚本,但网络不可用。貌似是gnome 3启动网络,但是我对gnome 3了解不多。

一旦网络可用,我应该如何让我的脚本自动运行?

4

2 回答 2

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 。看起来这正是你想要的。

于 2014-05-05T09:15:52.683 回答
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将在任何网络配置更改时调用,然后此类脚本可以过滤连接事件并启动通知脚本。

于 2014-05-07T14:20:44.903 回答