Ubuntu 联网后自动运行程序 监测网络连接
来源:互联网 发布:足球运动员数据库 编辑:程序博客网 时间:2024/06/05 19:58
前言
之前的一篇博客介绍了利用update-rc.d管理ubuntu开机启动运行的程序,链接见:update-rc.d管理Ubuntu开机启动程序 ,当时想解决的问题是开机启动自动连接vpn,但是这种方法可能导致vpn进程僵死状态,因为vpn的链接是跟网卡状态相关的,因此这里介绍一种联网后自动运行自定义程序的方法
概要
在Debian/Ubuntu的发行版本里,网络建立前、后和网络断开前、后都会到/etc/network/里运行相应目录下的脚本
- if-down.d -- 网络关闭前
- if-post-down.d -- 网络关闭后
- if-pre-up.d -- 网络建立前
- if-up.d -- 网络建立后
思路
(1)在网络建立后,我们要在/etc/network/if-up.d/目录下增加一个自动连接vpn的脚本,这样可以保证只要是联网状态下就可以连接vpn
- #!/bin/bash
- #变量定义
- PATH=/sbin:/usr/sbin:/bin:/usr/bin
- config_path="/home/wangzhengyi/cloud-1/openvpn-client.ovpn"
- #导入环境变量
- . /lib/lsb/init-functions
- export PATH=$PATH
- #网络建立后运行openvpn
- log_daemon_msg "starting client openvpn"
- nohup openvpn $config_path
(2)在网络断开前,我们要结束掉所有的vpn进程,防止程序出现bug
- 首先,说一个bug,ubuntu的/etc/network/if-down.d/和/etc/network/if-post-down.d/目录下的脚本并不会在网络断开时执行,原因我google也没找到
- 强调,千万不要思维定式,花了几个小时的时间解决这个问题就是思维定式了,可以考虑写个监测脚本检测网络是否畅通,如果网络down掉则kill掉所有的vpn进程即可,然后crontab定时运行就ok了,上脚本代码
- #!/bin/bash
- #变量定义
- urls=("www.baidu.com" "www.sogou.com" "www.soso.com")
- http_code=("200" "301" "302" "404")
- count=${#urls[*]}
- connected=0
- #检测网络
- for ((i = 0; i < $count; i ++))
- do
- url=${urls[$i]}
- result=$(curl -o /dev/null -s -m 10 -w %{http_code} $url)
- for flag in ${http_code[*]}
- do
- if [ $flag = $result ];then
- connected=$(expr $connected + 1)
- fi
- done
- done
- #网络down时kill所有vpn进程
- if [ $connected -eq 0 ];then
- vpn_pids=$(ps -aux |grep -i 'openvpn'|grep -v 'grep'|awk '{print $2}')
- for pid in ${vpn_pids[*]}
- do
- kill -9 $pid
- done
- fi
crontab定时运行
- * * * * * monitor_scripts
- Ubuntu 联网后自动运行程序 监测网络连接
- Ubuntu 联网后自动运行程序 监测网络连接
- 如何在Ubuntu手机中监测网络的连接信息
- Centos在Vmware中,做Net网络后的联网问题(自动获取可以联网,配置静态IP不可以连接)
- python监测当前联网状态并连接
- Ubuntu登陆账户后自动运行VNCserver
- ubuntu远程连接退出后程序继续运行之screen 命令
- Fedora启动后自动连接网络
- 程序安装完成后自动运行
- kde 登录后自动运行程序
- 让某个程序开机后自动运行
- ubuntu添加开机自动运行程序方法
- ubuntu添加开机自动运行程序方法
- ubuntu server 开机自动运行程序
- Ubuntu添加开机自动运行程序
- Ubuntu下自动运行程序方法
- 监测当前网络连接状态
- IOS 监测网络连接状态
- Ubuntu下Matlab 2010a安装笔记
- 在线工具
- 字符串旋转
- 【机器学习-斯坦福】学习笔记4 - 牛顿方法
- 2014 百度前端一面
- Ubuntu 联网后自动运行程序 监测网络连接
- svm理论与实验之5: 线性分类器的求解
- OMF
- java中正则表达式中的非字符串处理
- 我的第一篇文章
- RGB颜色表
- 大连理工大学CSDN俱乐部新学期招新工作圆满完成
- hdu3727Jewel(划分树+二分)
- Java程序优化的一些最佳实践