工作原因使用到EC20模块来给设备提供网络,使用写了个监控4G网络的脚本来监控网络状态,进行保活

该脚本可以将相关网络参数定时写入日志文件中,起到检测网络状态的作用。

安装工具与python串口库

apt install psmisc
#下载pyserial库
pip install pyserial

脚本代码

#!/usr/bin/python3# 本脚本用于监控4G模块的运行状态
# 运行环境:linux
import os,sys,re,time   # 系统基础库
import serialDialer="/usr/local/bin/quectel-CM"  # 拨号程序
tty_com="/dev/ttyUSB2"              # AT通信口# 测试IP与相关调节参数
IP1="111.230.129.137" #公司自有IP
IP2="114.114.114.114" #DNS IP
ping_cycle = 5  #ping测试周期(秒)# 发送AT指令接收数据返回的函数
def send_AT(tty,cmd):#print("串口对象参数:",tty)tty.write(cmd.encode())data=serial.read(1)time.sleep(0.1)data = (data + serial.read(serial.inWaiting())).decode()return data# 记录当前4G网络信息
def fun_4gnet_record():print(">>> 发送询问指令,查询4G网络参数~~~~~~~~")# 配置串口接口global serial serial = serial.Serial(tty_com, 115200,bytesize=serial.EIGHTBITS,    # 数据位:8位parity=serial.PARITY_NONE,    # 校验位:无stopbits=serial.STOPBITS_ONE, # 停止位:1位timeout=3600)                 # 读超时时间if serial.is_open != False :print("打开串口成功,串口详情参数:",serial)else:print("串口打开失败!")# 获取4G信号强度    ###########################################datas = send_AT(serial,"AT+CSQ\r\n")signal_intensity_info = datas.split('\r\n')[1]# 获取卡状态    ################################################datas = send_AT(serial,"AT+CPIN?\r\n")card_status = datas.split('\r\n')[1]# 获取4G网络注册状态    #########################################datas = send_AT(serial,"AT+CREG?\r\n")registration_status = datas.split('\r\n')[1]# 查询4G的网络状态  #############################################datas = send_AT(serial,"AT+CPIN?\r\n")network_status = datas.split('\r\n')[1]# 查询PDP上下文信息 #############################################datas = send_AT(serial,"AT+CGDCONT?\r\n")PDP_data = datasserial.close() #关闭串口print(">>> 写入日志文件~~~")# # 打开日志文件log_file = open("4gnet.log","a")# 数据写入# print("["+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+"]")log_file.write(" \n\r")log_file.write("["+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+"]"+"\r\n")if(state == False):         # 判断是正常状态还是异常状态?log_file.write("ping tset is failing!!!   "+"\n\r")else:log_file.write("ping tset is OK!!!   "+"\n\r")log_file.write(signal_intensity_info+"\n\r")log_file.write(card_status+"\n\r")log_file.write(registration_status+"\n\r")log_file.write(network_status+"\n\r")log_file.write("\b\r")log_file.write(PDP_data+"\n\r")log_file.write(" \n\r")log_file.close() #关闭日志文件# 主函数
if __name__ == "__main__":print("4G网络监测程序V1.0 启动!~")#检查是否识别到EC20模块ret = os.popen("lsusb | grep Quectel").read()if(ret.find("Quectel") != -1):print(">>> EC20设备已接入!~")# 检查是否存在ttyUSB2if(os.path.exists(tty_com) == False):print(">>> AT串口未识别~~~")exit(-1)else:print(">>> AT串口已识别~~~")# 先检查是否正在运行,关闭procedure_PID = os.popen("ps aux | grep "+Dialer+" | awk 'NR==1 {print $2}'").read()print("procedure_PID = %s"%procedure_PID)if  procedure_PID != 0:os.system("kill -9 "+procedure_PID)print(">>> 存在残留的拨号进程,已关闭~~~")time.sleep(10)#再启动拨号程序cmd_ret_fp = os.system(Dialer+" &")time.sleep(7) #延时5秒,等待拨号程序运行完成# 获取生成的网卡名card_name = os.popen("ifconfig | grep ww").read().split(":")[0]print(card_name)#检测状态while True:# 简单ping公司服务器IPret_ping_1 = os.system("ping -c 1 "+IP1+" -I "+ card_name)# print(">>>"+str(ret_ping_1))if(ret_ping_1 != 0):  # 不为零则为没有ping通# 再次ping别的IP,减少误判ret_ping_2 = os.system("ping -c 1 "+IP2+" -I "+ card_name)if(ret_ping_2 != 0):# 第二个IP都ping不通了,80%网络已经断开了fun_4gnet_record(False) #记录信息# 重新拨号cmd_ret_fp = os.system(Dialer+" &")time.sleep(6) #延时5秒,等待拨号程序运行完成else:time.sleep(ping_cycle) #5秒后再ping一次   #fun_4gnet_record(True) #记录信息

linux下的EC20的监控python脚本相关推荐

  1. Linux下使用crontab命令以及Python脚本实现自动签到

    转载:http://www.cnblogs.com/spxcds/p/5375192.html 关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做cur ...

  2. linux监控覆盖视频恢复,linux下使用inotify实时监控文件变更,做完整性检查

    linux下使用inotify实时监控文件变更,做完整性检查 完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: ...

  3. linux下构建Smokeping网络监控平台

    linux下构建Smokeping网络监控平台 一. Smokeping 简介 1.1 Smokeping简介: Smokeping 是rrdtool 的作者Tobi Oetiker 的作品,是用Pe ...

  4. 不错的linux下通用的java程序启动脚本(转载)

    虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用 ...

  5. linux下构建Zabbix网络监控平台

    linux下构建Zabbix网络监控平台 由于图片过多,本人不想一张一张上传,请下载我的详细文章: linux下构建zabbix网络监控平台[技术文档](河南-清小小)-下载地址: http://do ...

  6. linux java启动脚本文件_不错的linux下通用的java程序启动脚本

    #!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tudaxi ...

  7. linux80端口检查,Linux下基于端口的服务检查脚本

    Linux下基于端口的服务检查脚本 #!/bin/bash #program:Usingtostudythe[if...then...fi]program #dsk2007/10/83:00 #con ...

  8. linux 温度控制软件,linux下的cpu温度监控软件 lm-sensors

    linux下的cpu温度监控软件 lm-sensors 发布时间:2008-09-05 00:27:46来源:红联作者:PCHCO 现在购买主机板时都会有厂商提供的监控软体可以使用,而最常使用到到功能 ...

  9. Linux下常用的系统监控软件

    转载:http://blog.chinaunix.net/uid-25266990-id-3380929.html Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等 ...

最新文章

  1. 事务BEGIN TRANSACTION
  2. 工业计算机是服务器吗,工控机服务器能通用吗_服务器和工控机有什么区别
  3. centeros 7源码安装mysql_Linux下源码编译安装MySql,centeros7
  4. C++为什么要学指针?
  5. 启明云端分享| 2.4寸磁编码旋钮屏
  6. VTK:参数化超椭球用法实战
  7. [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
  8. 拓扑目的 1.Pc9通过van3访问pc10 2.Pc9通过Vlan1\Vlan2访问pc11
  9. 中国交互式智能板市场趋势报告、技术动态创新及市场预测
  10. 深圳中电港 招聘FAE(FPGA Lattice)
  11. ESP8266教程4 — ESP8266 智能配网
  12. 关于stm32通过can与epos控制器建立通信,从而控制Maxon电机运转并且实时检测电机参数
  13. 手机浏览器怎么查看html,手机浏览器网页收藏在哪里查看
  14. 关于clob字段的使用 ORA-22835:缓冲区对于CLOB到CHAR转换而言太小异常
  15. 基于图书管理系统的需求分析之威胁建模
  16. 有关Android插件化的一些总结思考,html5在移动端开发优势更明显
  17. python 携程_请教两个关于使用 python 爬去哪儿,携程等机票网站的问题
  18. word分散对齐调整宽度_Word文字对齐如何调整,word对齐方法大全
  19. subster函数的详细说明
  20. 基于java的校园二手物品交易网站

热门文章

  1. 教你如何查看linux版本
  2. MATLAB处理EXCEL文件
  3. 什么是大数据?以及大数据的5V特性
  4. SpringBoot开源文档型知识库系统,源代码分享
  5. 英语基础太差,到底能不能学好编程?
  6. 日文电脑文件路径问题
  7. 啊5G 你比4G多1G
  8. 微信运动刷步教程 QQ健康刷步数(一)之安卓版本 - 乐运动
  9. stata质别变量赋值_【STATA学习笔记】虚拟变量的生成
  10. linux内核原子操作的实现