我连接到一个特定的无线网络,需要使用 vpnc 才能访问互联网。如果我编写一个脚本来执行此操作,是否有办法将其设置为每次连接到此网络时都运行该脚本?明确地说,我不希望此脚本在大多数无线连接上运行,而只希望在特定的一个无线连接上运行。
答案1
您可以使用暴发户为此。Upstart 能够捕获连接到无线网络(或一般网络)的事件,并将其用作运行脚本的先决条件。
Upstart 已被 Ubuntu 中的许多脚本使用,并最终将在启动时取代所有 System V init 脚本。
答案2
网络管理器运行 /etc/NetworkManager/dispatcher.d/ 目录中的所有脚本(由 root 拥有、可执行、其他用户不可读且不是 setuid 的脚本)。
环境变量由网络管理器设置并传递给此脚本。您将对 CONNECTION_UUID 环境变量(包含一个唯一字符串)感兴趣。
因此,要解决您的问题(当连接到特定无线网络时执行脚本):
1)找出您感兴趣的无线连接的 uuid(通过查看 /etc/NetworkManager/system-connections/ 目录中的相应连接文件)。
2)编写一个 bash(或 perl、python 或其他)脚本,如果环境变量 CONNECTION_UUID 与上面(1)中的无线网络的 uuid 匹配,则执行您想要的操作。
3)将此脚本放入/etc/NetworkManager/dispatcher.d/并适当设置所有者和权限。
进一步阅读:man networkmanager(以及对上述目录中脚本的一点点探究)。