概述

把台式机搬到实验室当服务器用了,买了个极路由插在公网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

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

  1. Web端即时通讯实践干货:如何让WebSocket断网重连更快速?

    本文作者网易智慧企业web前端开发工程师马莹莹.为了提升内容质量,收录时有修订和改动. 1.引言 在一个完善的即时通讯IM应用中,WebSocket是极其关键的一环,它为基于Web的即时通讯应用提供了 ...

  2. linux tcp 断网重连,LIS接口与串口服务器的KeepAlive的重连机制

    这两天我们都在重复的测试汉枫的串口服务器HF2211,当把串口服务器当做TCP-CLIENT来用,去连接服务器端的时候,我发现我把掉网线再连接后,串口服务器的状态栏里面依然显示为连接成功! 这是个奇怪 ...

  3. python socket TCP协议断网重连

    最近做了个基于树莓派(Linux系统)的客户端.客户端需要把温湿度数据传到服务器上,每次传输约300个传感器的数据,大约3000个字节,我选用了Python的socket模块,完成这个项目时,最大的阻 ...

  4. C# Socket客户端采用双线程断网重连断线重连)

    C# Socket客户端采用双线程断网重连断线重连 2021年07月15日 13:38:18更新 C# Socket服务端 双线程断网重连断线重连 C# Socket客户端采用双线程断网重连断线重连 ...

  5. mysql vip切换未重连问题_服务器断网事务未提交导致MYSQL锁表问题(ADSL拨号上网)...

    环境描述: 由于特殊原因服务器的网络是电信ADSL拨号上网的,用"自动切换IP精灵"进行自动断网重连,每次重新连上网络需要2s时间,设置2小时切换一次网络. MYSQL数据库在远程 ...

  6. CSipIm断网重连崩溃原因分析

    断网重连之后的操作流程 拨打电话 ->调用SipService.makeCallOptions(),先重启一遍SipService保证PjSipService的各参数正常,尤其是create参数 ...

  7. 给服务器写一个简单的断网重连shell脚本

    马上就要跑路实习了,可怜的校内服务器也马上就要说拜拜了,为了能够让它在失联期间能够联网工作,写了一个简单的shell脚本,利用crontab定时执行任务 需求 断网重连 首先得先检测出是否断网 利用p ...

  8. linux connect自动重连,Linux系统中使用sshfs挂载远程主机的目录到本地系

    在Linux下,有很多挂载远程(别的机器)目录的方法,例如NFS. 之前一直在用NFS,但是配置起来比较麻烦(需要N个C一个S),而且不太稳定(断网后无法卸载!),现在换sshfs,它基于Linux内 ...

  9. linux 上自动执行caffe,linux下caffe的命令运行脚本

    参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...

最新文章

  1. 洛谷 [P1801] 黑匣子
  2. Redis 6.0 新特性,多线程连环 13 问!
  3. xcode 左侧导航栏 no finder results 问题的解决方法
  4. linux驱动分离分层的概念
  5. android UI进阶之实现listview的分页加载
  6. 如何实现接口的幂等性?
  7. Google+ 关闭引大V不满:700万粉丝“说没就没”
  8. Data source rejected establishment of connection, message from server: Too many connections
  9. 高亮插件Highlighting的使用
  10. uni-app框架介绍
  11. OpenCV实战 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
  12. NBAapi完全免费啦!
  13. HTML设置图片为页面背景
  14. 一款优秀的开源SQL检查审核神器!再也不用担心写SQL出问题了
  15. win10系统电池图标不见了怎么恢复
  16. 关闭防火墙linux出错,linux关闭防火墙【应对办法】
  17. 税务异常的公司如何办理注销?
  18. 关于企业服务总线ESB
  19. DTV/IPTV区别
  20. 单小说下载php,PHP 单TXT下载和多个TXT文件打包下载 同时

热门文章

  1. 迷你播放器--第一阶段(1)--检索媒体音乐并添加到List播放列表
  2. Web应用程序 [/XXX_war_exploded] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。
  3. 关于Microsoft Store无法更新的解决方案
  4. 区块链软件开发公司 区块链带给信贷行业的优势
  5. CSS文字超出省略号无效
  6. Navicat提示Access violation at address 004E9844 in module ‘navicat.exe’
  7. 转载 javascript联动菜单
  8. 企业微信如何建立部门?企业成员怎么加入部门?
  9. 我用diffusion把姐妹cos成了灭霸的模样
  10. Android Studio新手必读