一旦我连接到特定的无线网络,有没有办法让我调用 shell 脚本?我想这样做的原因是我必须先登录到网络才能开始使用它,如果可能的话,我想自动化它。
我读了这个问题:每次连接到特定的无线网络时,有没有办法运行脚本?
但我真的不确定如何使用暴发户来做到这一点。
一旦我连接到特定的无线网络,有没有办法让我调用 shell 脚本?我想这样做的原因是我必须先登录到网络才能开始使用它,如果可能的话,我想自动化它。
我读了这个问题:每次连接到特定的无线网络时,有没有办法运行脚本?
但我真的不确定如何使用暴发户来做到这一点。
为我之前的回答道歉,这是我几年前会这样做的方式。似乎情况发生了变化。
事实证明,网络管理器运行
/etc/NetworkManager/dispatcher.d/
目录中的所有脚本(那些由 root 拥有的,可执行的,其他用户无法读取的,并且不是 setuid),当连接发生变化时(up、down、preup、predown) .环境变量由网络管理器设置并传递给此脚本。您将对 CONNECTION_UUID 环境变量(包含唯一字符串)感兴趣。
因此,要解决您的问题(在连接到特定无线网络时执行脚本):
1)找出您感兴趣的无线连接的uuid(通过查看
/etc/NetworkManager/system-connections/
目录中相应的连接文件)。2) 如果环境变量 CONNECTION_UUID 与上述 (1) 中的无线网络的 uuid 匹配,则编写一个 bash(或 perl、python 或其他)脚本来执行您想要的操作。
3)将此脚本放入
/etc/NetworkManager/dispatcher.d/
并适当设置所有者和权限。进一步阅读: man networkmanager (还有一点点在上面提到的目录中的脚本周围戳)。
一个示例脚本:
我不知道网络管理器是否有办法做到这一点,可能有,但我有另一种解决方案给你。您可以安装 Wicd :
Wicd 直接在 gtk 界面上支持为您可以连接的每个网络添加前脚本和后脚本支持。请注意 Wicd 会卸载 Network-Manager 以使其正常工作(它们都存在冲突),因此如果出现问题,您应该下载 Network-Manager 的 .deb 或随身携带 Live-CD/Live-USB。
Wicd 易于使用且连接速度更快,但缺少 Network-Manager 的一些高级功能(如 VPN)。这是一个屏幕截图:
是的,
/etc/NetworkManager/dispatcher.d/
NetworkManager 中的 Shell 脚本是一个非常好的主意。还有一个带NetworkManager的Dbus方法,更好玩,更复杂:
man nm-settings
.NetworkManager 手册页中关于 shell 参数的简历
dispatcher
:动作可以是:up、down、vpn-up、vpn-down、hostname、dhcp4-change、dhcp6-change。(手册页发布:2012 年 1 月 17 日)
这是一个非常简单的脚本,用于在网络接口出现后重新启动 OpenVPN
up
: