有没有办法在每次连接到特定的无线网络时运行脚本?

Eug*_*e M 14 wireless

我连接到一个特定的无线网络,需要我使用 vpnc 访问互联网。如果我制作了一个脚本来执行此操作,有没有办法设置它以便每次连接到该网络时,都会运行该脚本?需要明确的是,我不希望此脚本在大多数无线连接下运行,而只在一个特定的连接下运行。

txw*_*ger 6

您可以为此使用暴发户。Upstart 能够捕获连接到无线网络(或一般网络)的事件,并将其用作运行脚本的先决条件。

Upstart 已经被 Ubuntu 中的许多脚本使用,最终将在启动时替换所有 System V init 脚本。


fin*_*ley 5

网络管理器运行 /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 (以及对上述目录中的脚本进行一些探索)。