重庆大学路由器配置drcom

Author Avatar
purefkh 11月 13, 2018
  • 在其它设备中阅读本文章

2018.11.13更新

下面的全都不需要了,一键脚本弄好了。只要你有一个 Pandora Box,剩下的脚本解决。

甩链接 https://github.com/purefkh/CQU_drcom


众所周知,我们学校使用的 drcom 是不允许使用路由器或者热点分享的。

但是,在世界最大的同性交友平台 github上早就有大佬给出了drcom路由器的设置方法 。

有意愿使用路由器的小伙伴可以参照 d版简略使用和配置说明 进行配置,针对比较懒的同学,我这里放出已经配置好的脚本,你只要 修改其中的账号密码,便然后直接从文章中 如果PC上运行成功,则修改 IS_TEST = True 为 IS_TEST = False 部分开始操作就可以了。

这里是链接 AB区配置脚本虎溪校区配置脚本

但是最近我的路由器又经常会莫名其妙地断网,每次都要ssh到路由器,手动重启 drcom 服务。所以想了个办法,每两分钟检查一次网络连接,网若安好,便是晴天;网若不好,重启 drcom。

直接放具体操作。

先弄了一个shell脚本,命名为 networkChecking.sh

#! /usr/bin/sh
# /usr/bin/networkChecking.sh

# 检查日志文件
log=~/networkChecking.log
if [ ! -f ${log} ]
then
    touch ${log}
fi
dr_log=~/drcom.log
if [ ! -f ${dr_log} ]
then
    touch ${dr_log}
fi

# 检查网络连接
ping -c 1 baidu.com > /dev/null 2>&1
if [ $? -eq 0 ]
then
    echo `date`  "......OK......" >> ${log}
else
    echo `date` "......Failed......" >> ${log}
    # 如果drcom登录超时,重启路由器
    ps | grep "timeout, retrying" ~/drcom.log | grep -v grep
    if [ $? -eq 0 ]
    then
        echo $NULL > ~/drcom.log
        echo `date` "......timeout......" >> ${log}
        reboot
    fi
    # 若已存在drcom进程,杀掉;没有则直接重启drcom
    ps | grep drcom | grep -v grep
    if [ $? -ne 0 ]
    then
        echo "......start drcom......" >> ${log}
    else
        echo "......drcom is running, kill......" >> ${log}
        echo "......start drcom......" >> ${log}
        kill -9 $(pidof python /usr/bin/drcom)
    fi
    python /usr/bin/drcom > ${dr_log} &
fi

这个脚本的作用就是 ping 百度来判断网络的连接状态,当 ping 不通的时候就重启 drcom。


2018.10.22更新

  • 脚本逻辑优化,修复由于 drcom 进程已经存在产生的端口占用问题

2018.10.24更新

  • 修复偶尔出现的脚本无法登录的问题(目前只想到了重启路由器)—— 判断则是通过抓取 drcom 的运行日志,一旦 timeout 便重启,因此可能需要修改自启命令为 python /usr/bin/drcom > ~/drcom.log &
  • 修复了无法杀掉 drcom 进程的致命错误

测试完成,将其放在 /usr/bin/ 下。

测试通过后,就该解决定时运行的问题了。这里通过 crontab 来实现定时操作。

crontab -e,编辑crontab文件:

*/1 * * * * sh /usr/bin/networkChecking.sh

即即每分钟一次,执行 sh /usr/bin/networkChecking.sh 命令检查网络连接。

为防止日志文件积累过多,我们可以每天清理一次日志文件:

36 6 * * * echo $NULL > ~/networkChecking.log

完成后,执行 /etc/init.d/cron restart 重启crontab服务即可。

匆忙赶制,如有纰漏请多多谅解,并联系我。