linux connect自动重连,Linux 北大网关断网重连

概述

把台式机搬到实验室当服务器用了,买了个极路由插在公网IP上,做一个端口转发,可以随时随地远程ssh这台电脑了。但是问题来了,PKU的网关不稳定,有的时候会断,断了的话这台电脑就连不上网了。

于是我利用北大提供的linux shell联网客户端connect, 写了一个脚本,每隔一定时间检测一下网络是否通畅,如果网断了,就自动重新连接。

下载connect客户端

去https://its.pku.edu.cn/download_ipgwclient.jsp下载北大网关linux命令行客户端,chmod 755 connect,然后mv到 /usr/local/bin/目录下:

$ wget https://its.pku.edu.cn/pku_gateway_apps/download/linux/connect

$ sudo chmod 755 connect

$ sudo mv ./connect /usr/local/bin/

编写脚本

$vim pkunet.py

#!/usr/bin/python

#coding=utf8

''' 本脚本用于定时检查北大校园网关是否联通,如果不联通,则重新连接。 前提是在/usr/local/bin/目录下存在connect客户端。 connect是北大计算中心提供的linux shell客户端,下载地址如下: https://its.pku.edu.cn/download_ipgwclient.jsp @作者: 刘伟杰 @日期: 2017-03-14 '''

import os

import time

import urllib2 as ulb

import logging

# settings

CHECK_SITE = 'https://www.baidu.com/'

TIME_OUT = 3 # 连接超时时间

USER_NAME = 'studentid'

PASSWORD = 'password'

TIME_INTERVAL = 600 # 每600秒检查一次网络

LOG_FILE = '/home/liuweijie/.pkunet.log'

# configuration

this_dir = os.path.dirname(os.path.abspath(__file__))

connect_client = '/usr/local/bin/connect'

logging.basicConfig(

level=logging.DEBUG,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%a, %d %b %Y %H:%M:%S',

filename=LOG_FILE,

filemode='a'

)

def is_connect():

''' 检测网络是否通畅 '''

try:

ulb.urlopen(CHECK_SITE, timeout=TIME_OUT)

return True

except:

return False

def connect():

''' 连接网关 '''

try:

os.system('%s -u %s -p %s'%(connect_client, USER_NAME, PASSWORD))

return True

except:

return False

def run():

now = time.strftime('%Y-%m-%d %X', time.localtime())

logging.info('%s: PKUNet start!'%(now))

connect()

while True:

time_remaining = TIME_INTERVAL - time.time()%TIME_INTERVAL

time.sleep(time_remaining)

if not is_connect():

now = time.strftime('%Y-%m-%d %X', time.localtime())

logging.warning("%s: Network wrong!"%(now))

is_success = connect()

if is_success:

logging.info("Network reconnect successfully!")

else:

logging.warning("Network reconnect Falied!")

if __name__ == '__main__':

run()

保存脚本, 改变脚本权限, 把脚本移动到/usr/local/bin/目录下

$ sudo chmod 777 pkunet.py

$ sudo mv pkunet.py /usr/local/bin/

设置开机执行该脚本

在/etc/init.d/写一个脚本

$ cd /etc/init.d/

$ sudo vim pkunet

添加如下内容:

#! /bin/sh

/usr/local/bin/pkunet.py &

保存退出,然后改变该脚本权限

$chmod 755 pkunet

添加到开机启动服务中

$ sudo update-rc.d pkunet defaults 99

重启,这样就好了,每次的log会保存到/home/liuweijie/.pkunet.log中

如果要关闭这个服务

$ sudo update-rc.d -f pkunet.py remove

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值