连网后自动运行程序
此页由Linux Wiki用户Chenxing于2012年6月7日 (星期四) 17:43的最后更改。
出自Linux Wiki
提示:此文已超过 12 年(4550 天)未更新,如发现内容过时或有误,欢迎改进:)
网络连接建立后运行的脚本可以实现诸多实用功能,如动态域名绑定、连接VPN、上网认证等。
实现这一目标的大体思路有两种:在基于NetworkManager的系统中,可配置其dispatcher脚本;而一般地,也可依赖不同Linux发行版提供的工具实现。
目录 |
Network-Manager
目前在桌面环境中Network-Manager的使用很普遍。Network-Manager在网络连接建立或断开时会自动运行/etc/NetworkManager/dispatcher.d/中的文件。只要写一个脚本放在该文件夹下,即可实现连接建立时自动运行程序。下面是OpenNtpd的例子[1]
#!/bin/sh INTERFACE=$1 # 状态发生变化的网络接口 STATUS=$2 # 网络接口的新状态:up, down, vpn-up, vpn-down case "$STATUS" in 'up') # $INTERFACE is up exec /etc/rc.d/openntpd start ;; 'down') # $INTERFACE is down # Check for active interface and down if no one active if [ ! `nm-tool|grep State|cut -f2 -d' '` = "connected" ]; then exec /etc/rc.d/openntpd stop fi ;; esac
发行版相关的解决方案
Debian/Ubuntu
对Debian系列发行版的配置较为简便。所有的if-up脚本放在/etc/network/if-up.d,只需要将写好的脚本放在/etc/network/if-up.d/,并添加可执行权限即可:
chmod 755 /etc/network/if-up.d/YOUR_SCRIPT
openSUSE
openSUSE中与网络有关的脚本应被存放在/etc/sysconfig/network/scripts/。而连网后执行的脚本则放在/etc/sysconfig/network/if-up.d/,它们是到/etc/sysconfig/network/scripts/的符号链接。举个例子,如果你已经有一个脚本文件YOUR_SCRIPT,需要做如下操作:
cp YOUR_SCRIPT /etc/sysconfig/network/scripts/ chmod 755 /etc/sysconfig/network/scripts/YOUR_SCRIPT ln -s /etc/sysconfig/network/scripts/YOUR_SCRIPT /etc/sysconfig/network/if-up.d/
Fedora
Fedora对这一功能支持的不是很好,只能在网络连接建立后运行一个脚本,即/sbin/ifup-local。这个文件默认不存在,需要手动创建。下面的例子用vi编辑/创建这个文件,并添加执行权限。
# vi /sbin/ifup-local # chmod 755 /sbin/ifup-local
参考资料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。