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

我连接的特定无线网络要求我使用vpnc访问互联网。 如果我创建一个脚本来执行此操作,有没有办法设置它,所以每次连接到此网络时,脚本都会运行? 为了清楚起见,我不希望这个脚本与大多数无线连接一起运行,只需要一个特定的连接。

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

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

网络管理器运行/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(以及上面提到的目录中的脚本)。