找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5817|回复: 38

怎么样实现virtual**断线重拨时,自动执行以下语句

[复制链接]
发表于 2015-8-22 22:21 | 显示全部楼层 |阅读模式
route add -net 10.0.0.0/8 gw pptp.12345.com

是这样的,我需要设置一个静态路由,将网络 10.0.0.X 的网关设为 pptp.12345.com 所在的IP,而 pptp.12345.com 指向的IP地址不是固定的,于是想在每次virtual**客户端断线重连时,自动修改网关。

我目前是这样使用的,在潘多拉的 系统 -- 计划任务 里面加入如下语句来反复(每隔15分钟执行一次)执行:

0,15 * * * * route add -net 10.0.0.0/8 gw pptp.12345.com

感觉不好,所以想在virtual**断线重拨时,自动更新,不知大家有什么好办法?

我的恩山、我的无线 The best wifi forum is right here.
发表于 2015-8-22 22:40 | 显示全部楼层
没在路由器上连过virtual**,如果有类似的up或down的信息:
Fri Aug 21 10:24:10 2015 daemon.notice netifd: Network device 'pppoe-wan' link is up
Fri Aug 21 10:24:10 2015 daemon.notice netifd: Interface 'wan' is now up
可以在/etc/hotplug.d/iface里面添加检测脚本,比较实时性

点评

确实有这样的脚本,但不知怎么操作? Sat Aug 22 22:55:54 2015 daemon.notice netifd: Network device 'pptp-vpn' link is up Sat Aug 22 22:55:54 2015 daemon.notice netifd: Interface 'vpn' is now up  详情 回复 发表于 2015-8-22 23:04
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-22 23:04 | 显示全部楼层
北方的狼 发表于 2015-8-22 22:40
没在路由器上连过virtual**,如果有类似的up或down的信息:
Fri Aug 21 10:24:10 2015 daemon.notice netifd: Ne ...

确实有这样的脚本,但不知怎么操作?

Sat Aug 22 22:55:54 2015 daemon.notice netifd: Network device 'pptp-virtual**' link is up
Sat Aug 22 22:55:54 2015 daemon.notice netifd: Interface 'virtual**' is now up
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 08:34 来自手机 | 显示全部楼层
顶一下!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-23 09:05 | 显示全部楼层
本帖最后由 北方的狼 于 2015-8-23 09:08 编辑

#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = virtual** ] || exit 0
route add -net 10.0.0.0/24 gw pptp.12345.com

保存为/etc/hotplug.d/iface/99-virtual**还有10.0.0.0网段掩码8位?应该是24位吧?即10.0.0.0-10.0.0.255

点评

嗯,不错,我已经测试成功了!效果比我先前的那个真的好多了!非常感谢!! 要是能将设置pptp客户端时填写的资料,自动抓取并写入该文件里去就更好了! (例如,接口名称、VPN服务器地址,本例中设置的是vpn和pp  详情 回复 发表于 2015-8-23 10:01
是8位,没错,代表 10.0.0.1-10.255.255.255; 我试试。  详情 回复 发表于 2015-8-23 09:32
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 09:32 | 显示全部楼层
本帖最后由 lucktu 于 2015-8-23 10:37 编辑
北方的狼 发表于 2015-8-23 09:05
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = virtual** ] || exit 0

嗯,是24位;

我试试。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-23 09:48 | 显示全部楼层
留个脚印
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 10:01 | 显示全部楼层
本帖最后由 lucktu 于 2015-8-23 13:37 编辑
北方的狼 发表于 2015-8-23 09:05
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = virtual** ] || exit 0

嗯,不错,我已经测试成功了!效果比我先前的那个真的好多了!非常感谢!!

要是能这样就更完美了:
从 /etc/config/network 的这一段信息里
config interface 'virtual**'
    option proto 'pptp'
    option server '
pptp.12345.com'
    option username 'XXX'
    option password 'XXXX'
    option defaultroute '0'

读取,当 option defaultroute '0' 时,才执行上面的操作(等于1时,取消这样的操作)。
读取 config interfaceoption server 后面的信息到上面的代码之中。

这样优化之后,我在前台设置和修改了 virtual** 的一些信息,后台自动更新,不需要我再去面对程序修改。
当然,这样的要求是奢望(也是编程人员做的事),能够达到目前这样的成果,对于我这样的普通使用者来说,已经非常满意了。

再一次感谢“北方的狼”!!

点评

interface有很多个,所以需要知道你的interface名称才能实现后面的脚本  详情 回复 发表于 2015-8-23 12:19
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 10:19 | 显示全部楼层
真好用啊,这边一挂上,那边立马就更新了!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-23 12:19 | 显示全部楼层
lucktu 发表于 2015-8-23 10:01
嗯,不错,我已经测试成功了!效果比我先前的那个真的好多了!非常感谢!!

要是能这样就更完美了:

interface有很多个,所以需要知道你的interface名称才能实现后面的脚本
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 12:28 | 显示全部楼层
嗯,好吧,我先这样用吧。
谢谢!!

点评

你试试看,对shell不是很懂,互相学习  详情 回复 发表于 2015-8-23 14:24
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-23 14:24 | 显示全部楼层
本帖最后由 北方的狼 于 2015-8-23 16:34 编辑

#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = virtual** ] || exit 0
i="virtual**" #你的virtual**接口名称
if [ `uci get network.$i.defaultroute` -eq 0 ];then
    server=`uci get network.$i.server`
    if=`ifconfig -a |grep $i|awk '{print $1}'`
    gw=`ifconfig $if |grep "addr"|awk '{print $2}'|awk -F ":" '{print $2}'`
    route add -net ${gw%.*}.0/24 gw $server
fi
其实你思路是对的,在配合百度就好,我也是临时学的http://c.biancheng.net/cpp/view/6994.html

点评

请问这句中的 Server 换成图片中的 IP 地址(变动的),又该怎么写?谢谢!! server=`uci get network.$i.server` 因为如果是磊科235W路由器作为VPN服务器(先前是TP某路由器)时,(不能得到server?)这个s  详情 回复 发表于 2015-8-27 22:21
我学不过来啊,。。。  发表于 2015-8-23 17:18
嗯,非常感谢!! 非常可喜可贺!目前已经能正确识别那个开关(option defaultroute),域名对应的外网ip(option server),还有一个界面名(config interface)没有被识别,另外执行的结果是 180.175.23.0/24  详情 回复 发表于 2015-8-23 16:03
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 16:03 | 显示全部楼层
本帖最后由 lucktu 于 2015-8-24 10:55 编辑
北方的狼 发表于 2015-8-23 14:24
你试试看,对shell不是很懂,互相学习

嗯,非常感谢!!

非常可喜可贺!目前已经能正确识别那个开关(option defaultroute),域名对应的外网ip(option server),还有一个界面名(config interface)没有被识别,另外执行的结果是 180.114.23.0/24 指向 180.114.23.116 网关,而不是 10.0.0.0/24 指向 180.114.23.116。

点评

我自己的路由器执行的结果是OK的 你路由器上执行ifconfig -a 的结果贴出来看一下  发表于 2015-8-23 16:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-23 16:18 | 显示全部楼层
我刚才去看了下 /etc/config/network,确实 config interface '???' 是鉴别各个网络接口的唯一标志,例如是lan口(loopback口),wan口,还是virtual**口,不知下面的 option proto '???' 是否有用?我看其他的都不一样,而virtual**接口上的却是固定不变的 option proto 'pptp',反过来前面的 config interface '???' ,却是可变的(自定义的)。

点评

你把添加的路由删了,脚本红字部分改一下试试  详情 回复 发表于 2015-8-23 16:27
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-23 16:27 | 显示全部楼层
本帖最后由 北方的狼 于 2015-8-23 16:41 编辑

#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = virtual** ] || exit 0
i="virtual**" #你的virtual**接口名称
if [ `uci get network.$i.defaultroute` -eq 0 ];then
    server=`uci get network.$i.server`
    if=`ifconfig -a |grep $i|awk '{print $1}'`
    addr=`ifconfig $if |grep "addr"|awk '{print $2}'|awk -F ":" '{print $2}'`
    route add -net ${addr%.*}.0/24 gw $server
fi
这样的话,不知道OK不OK
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 01:37

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表