Eugene M Asked: 2010-09-25 07:45:13 +0800 CST2010-09-25 07:45:13 +0800 CST 2010-09-25 07:45:13 +0800 CST 每次我连接到特定的无线网络时,有没有办法运行脚本? 772 我连接到一个特定的无线网络,需要我使用 vpnc 来访问互联网。如果我制作一个脚本来执行此操作,有没有办法设置它,所以每次我连接到这个网络时,脚本都会运行?需要明确的是,我不希望这个脚本在大多数无线连接上运行,只在一个特定的连接上运行。 wireless 2 个回答 Voted Best Answer txwikinger 2010-09-25T08:03:08+08:002010-09-25T08:03:08+08:00 您可以为此使用新贵。Upstart 能够捕获连接到无线网络(或一般网络)的事件并将其用作运行脚本的先决条件。 Upstart 已经被 Ubuntu 中的许多脚本使用,并且最终将在启动时替换所有 System V 初始化脚本。 finley 2010-11-20T06:53:42+08:002010-11-20T06:53:42+08:00 网络管理器运行 /etc/NetworkManager/dispatcher.d/ 目录中的所有脚本(由 root 拥有的、可执行的、其他用户无法读取的,并且不是 setuid)。 环境变量由网络管理器设置并传递给此脚本。您将对 CONNECTION_UUID 环境变量(包含唯一字符串)感兴趣。 因此,要解决您的问题(在连接到特定无线网络时执行脚本): 1) 找出您感兴趣的无线连接的 uuid(通过查看 /etc/NetworkManager/system-connections/ 目录中的相应连接文件)。 2) 如果环境变量 CONNECTION_UUID 与上述 (1) 中的无线网络的 uuid 匹配,则编写一个 bash(或 perl、python 或其他)脚本来执行您想要的操作。 3) 将此脚本放入 /etc/NetworkManager/dispatcher.d/ 并适当设置所有者和权限。 进一步阅读: man networkmanager (还有一点点在上面提到的目录中的脚本周围戳)。
您可以为此使用新贵。Upstart 能够捕获连接到无线网络(或一般网络)的事件并将其用作运行脚本的先决条件。
Upstart 已经被 Ubuntu 中的许多脚本使用,并且最终将在启动时替换所有 System V 初始化脚本。
网络管理器运行 /etc/NetworkManager/dispatcher.d/ 目录中的所有脚本(由 root 拥有的、可执行的、其他用户无法读取的,并且不是 setuid)。
环境变量由网络管理器设置并传递给此脚本。您将对 CONNECTION_UUID 环境变量(包含唯一字符串)感兴趣。
因此,要解决您的问题(在连接到特定无线网络时执行脚本):
1) 找出您感兴趣的无线连接的 uuid(通过查看 /etc/NetworkManager/system-connections/ 目录中的相应连接文件)。
2) 如果环境变量 CONNECTION_UUID 与上述 (1) 中的无线网络的 uuid 匹配,则编写一个 bash(或 perl、python 或其他)脚本来执行您想要的操作。
3) 将此脚本放入 /etc/NetworkManager/dispatcher.d/ 并适当设置所有者和权限。
进一步阅读: man networkmanager (还有一点点在上面提到的目录中的脚本周围戳)。