找回密码
 注册
快捷导航
查看: 1929|回复: 1

【原创】OpenConnect** python实现ping自启进程守护

[复制链接] |自动提醒
阅读字号:

4861

回帖

67

积分

1万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2006-6-16
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2017-3-17 17:20:30| 字数 1,809| - 中国–广东–深圳 电信 | 显示全部楼层 |阅读模式
本帖最后由 rainsun 于 2017-3-17 17:27 编辑

在OpenWRT路由上搭了个openConnect**方便远程回家进行各种管理
用的是Cisco AnyConnect Secure Mobility Client的 客户端,这个客户端不能记住密码,而且断线后不能重连
本文最要是用python脚本 socket实现,循环检测路由器状态,如果链路不通则重新启动**

脚本如下,或下载附件,
  1. #!/usr/bin/python
  2. #coding=utf-8

  3. import os
  4. import socket
  5. import subprocess
  6. import time

  7. #Windows
  8. p_name = "**cli.exe"
  9. p_path = "C:\\Program Files\\Cisco\\Cisco AnyConnect Secure Mobility Client\\auto**64\\connect.bat"
  10. d_path = "C:\\Program Files\\Cisco\\Cisco AnyConnect Secure Mobility Client\\auto**64\\disconnect.bat"

  11. #Linux平台调用ps命令/Win平台调用tasklist命令,判断进程是否存在,传入进程名称,返回为查询得到的进程个数
  12. def process_exit(process_name):
  13.     #Linux
  14.     #p_checkresp = os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines()

  15.     #Windows,为避免进程名称被截断,输出格式为csv,使用tasklist /fo csv
  16.     p_checkresp = os.popen('tasklist /fo csv | find "' + process_name + '"').readlines()
  17.     return len(p_checkresp)

  18. def process_exec(process_path):
  19.     #将工作目录切换到启动脚本所在目录,解决部分进程启动时依赖工作目录问题
  20.     os.chdir(os.path.dirname(process_path))

  21.     #Linxu
  22.     #os.system(process_path)

  23.     #Windows
  24.     os.startfile(process_path)
  25.    
  26. #可用于检测程序是否正常,如检测80端口是否正常
  27. def check_aliveness(ip, port):
  28.     sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  29.     sk.settimeout(1)
  30.     try:
  31.         sk.connect((ip,port))
  32.         #print 'server %s %d service is OK!' %(ip,port)
  33.         return True
  34.     except Exception:
  35.         #print 'server %s %d service is NOT OK!'  %(ip,port)
  36.         return False
  37.     finally:
  38.         sk.close()
  39.     return False
  40.    
  41. #for var in range(1,10):        #该条件执行10次
  42. var = 1
  43. while var == 1:                #该条无限循环,CTRL+C中断
  44.     time.sleep(2)
  45.     if check_aliveness('192.168.1.12', 80) == False:
  46.         print "The network is disconnected and reconnected!"
  47.         #执行启动命令
  48.         process_exec(p_path)
  49.         time.sleep(300)

  50.         #等待180秒后,查询进程个数大于1,返回1,启动失败
  51.         if process_exit(p_name) >= 1:
  52.             print "Startup failed!"
  53.             process_exec(p_path)
  54.         elif check_aliveness('192.168.1.12', 80) == True:
  55.             print "Start a successful, smooth network!"
  56.         else:
  57.             print "Startup failed!"
  58.             process_exec(p_path)
  59.             
  60.     else:
  61.         print 'The network is open!'
复制代码








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
X62T-2109:I7-5500U/16G/512*2 SSD/SXGA+LED/AX 200 wifi6/BL5.1/LTE EC20/PF/笔触/不完美按钮/
松下黑色RZ6:I7-7Y75/16G/1T/LTE
GPD WIN2:8100Y/8G+1T/6.0-inch 720P/BL4.2/PF/LTE/WIFI/指纹/震动/
ThinkPad X13 Gen4:WUXGA/i7-1355U/16GB+1TB

4万

回帖

283

积分

6175

资产值

至尊会员III Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2006-9-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2017-3-17 18:20:02| 字数 3| - 中国–广东–佛山–南海区 电信 | 显示全部楼层
技术男

X32 X41 X61 X200T XXX
回复 支持 反对

使用道具 举报

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

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-11-28 05:32 , Processed in 0.127516 second(s), 33 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部