C118+Osmocom-bb 多机 gsm sniff环境,经常发生工作一段时间后,某个手机监听的arfcn就不工作了。

检查日志发现,日志最后有连续的多条:TOA AVG is not 16 qbits, correcting (got 15),然后日志就一动不动了,无法再继续抓取sms,只能重启obb程序。

不清楚这是obb的程序bug,还是基站每天不定时调整( 某些arfcn,并不是一天24小时都工作的,有时会断那么一小会儿 )导致的。

重启obb程序的过程不算复杂,无非是先刷机(我没试过硬刷),再监听。

可以在smsweb里专门写一个方法,结合Python+shell命令定期(30秒)去检测日志(使用tail和diff命令),当判断obb工作不正常时,重新刷机(全自动刷机硬件改造方法参考置顶文章),起动监听程序。

参考代码如下:

def monitor_log():
mysql = Database()
while True:
print("monitor log:") getusb = subprocess.Popen(["./osmocom-bb/getusb.sh"],stderr=subprocess.PIPE,stdout=subprocess.PIPE)
usbResult = getusb.communicate()
getusb.wait()
device = re.findall(r'\d',usbResult[])[] #find arfcn
str_sql = "SELECT * FROM sniff limit 0," + str(device)
data = mysql.query(str_sql)
for row in data:
arf = str(row['arfcn'])
power = str(row['power'])
sptype = str(row['sptype'])
tty = str(row['tty']) counter = command = 'tail -n3 ./download_'+ tty +'.log'
textlist = os.popen(command).readlines()
for line in textlist:
if "AVG" in line:
print("find got 15 in log! dangerous!")
counter = counter + #logger.info("AVG counter:" + str(counter) + " " + str(tty) + " arfcn:" + str(arf) ) if int(counter) == :
print("found 3 got 15! restart osmocon and sniff!")
#cur_time = time.strftime('%Y/%m/%d %H:%M:%S',time.localtime(time.time()))
logger.info("got 15 mon:" + str(tty) + " arfcn:" + str(arf) )
ps1=Process(target=download1,args=(str(tty),))
ps1.start()
ps1.join()
#time.sleep() ps2=Process(target=sniff,args=(str(tty),str(arf),))
ps2.start()
ps2.join()
#time.sleep()
#subprocess.Popen("./osmocom-bb/test.sh",shell = True) # 检测文件是否有变动
cur_log = "download_" + tty + ".log"
old_log = cur_log + ".old"
getdiff = subprocess.Popen(["./diff.sh",cur_log,old_log],stderr=subprocess.PIPE,stdout=subprocess.PIPE)
diffResult = getdiff.communicate()
getdiff.wait()
diff_ret = re.findall(r'\d',diffResult[])[]
#logger.info("logchange mon:" + str(tty) + " arfcn:" + str(arf) + " diff_ret:" + str(diff_ret))
if int(diff_ret) == :
# print("log not change in 30secs! restart osmocon and sniff!")
# #cur_time = time.strftime('%Y/%m/%d %H:%M:%S',time.localtime(time.time()))
logger.info("log diff:" + str(tty) + " arfcn:" + str(arf) )
ps1=Process(target=download1,args=(str(tty),))
ps1.start()
ps1.join()
#time.sleep() ps2=Process(target=sniff,args=(str(tty),str(arf),))
ps2.start()
ps2.join()
#time.sleep()
#subprocess.Popen("./osmocom-bb/test.sh",shell = True) time.sleep()

diff.sh:

#!/bin/bash

#diff ./download_0.log ./download_0.log.old
diff $ $ >> diff_$
#echo $?
if [ $? = ];then
#echo "没区别"
echo ""
else
#echo "文件有变动"
rm -fr $
cp $ $
#echo "文件同步成功"
echo ""
fi

说明:

1. 当日志里连续三行的日志都出现AVG关键字时,就认为obb工作不正常了,果断重新刷机监听。

2.当日志过了30秒后内容还和30秒前一样时,也是不正常的,重新刷机监听。

通过日志关键字检测判断obb程序是否工作正常的更多相关文章

  1. Shell脚本日志关键字监控+告警

    最近小张的爬虫程序越来越多,可当爬虫程序报错,不能及时的发现,从而造成某些重要信息不能及时获取的问题,更有甚者,遭到领导的批评.于是就在想有没有一种方法,当爬取信息报错的时候,可以通过邮件或者短信的方 ...

  2. Shell脚本实战:日志关键字监控+自动告警

    一个执着于技术的公众号 该程序使用场景说明:主要用于Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人. 一.安装邮件服务 1.解压 tar -jxf mail ...

  3. 基于深度学习的恶意样本行为检测(含源码) ----采用CNN深度学习算法对Cuckoo沙箱的动态行为日志进行检测和分类

    from:http://www.freebuf.com/articles/system/182566.html 0×01 前言 目前的恶意样本检测方法可以分为两大类:静态检测和动态检测.静态检测是指并 ...

  4. 用代码如何检测一个android程序是否在运行

    /** * 检测一个android程序是否在运行 * @param context * @param PackageName * @return */ public static boolean is ...

  5. ubuntu 18.04 检测到系统程序出现问题

    检测到系统程序出现问题,想立即报告这个问题吗? 可以暂时先把这个提示关闭掉 $ sudo vi /etc/default/apport 找到第4行 修改为 enabled=0 保存退出 附linux中 ...

  6. 第二周:If判断语句程序当中的作用简介

    1.If语句的作用: 在我们编写程序时经常会遇到内容判断的问题,比如判断内容的真假或者值的大小分别输出内容的问题 这时就会用到我们的If判断语句了,顾名思义,if在英文单词中意思为如果,在Java中他 ...

  7. Spark Streaming揭秘 Day18 空RDD判断及程序中止机制

    Spark Streaming揭秘 Day18 空RDD判断及程序中止机制 空RDD的处理 从API我们可以知道在SparkStreaming中,对于RDD的操作一般都是在foreachRDD和Tra ...

  8. 如何用js检测判断时间日期的间距

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. C#:判断当前程序是否通过管理员运行

    原文:C#:判断当前程序是否通过管理员运行 public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetC ...

随机推荐

  1. constant函数

    返回一个常量的值 constant('constname');

  2. XXX系统利益相关者分析

    小组成员:白悦,张雪薇,李慧,陶雨洁 目标:实现需求的网上填报,征集. 好处: 1.便于统计 2.节约时间,成本 3.快捷简单易操作 度量标准:填报所用时间,精力,以及需求数据整理的有效性. 利益相关 ...

  3. ireport部署到Linux服务器上遇到的问题解决

    ireport报表在本地Windows环境运行正常,一旦部署到Linux环境上出现了如下问题: 1.打开报表,后台直接报net.sf.jasperreports.engine.util.JRFontN ...

  4. C++笔试题总结

    1.C和C++的特点与区别? 答:(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护: 2.表现能力和处理能力极强,可以直接访问内存的物理地址: 3.C语言实现了对硬件的编程操作,也适 ...

  5. 函数式编程语言(Fuction Program Language)

    一.什么是函数式编程语言 函数式编程语言(functional progarm language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. ...

  6. atom - Emmet插件使用,代码快速填写

    参考转载:http://www.hangge.com/blog/cache/detail_1537.html 用法: 输入:ul>li*6    接着按:tab键 常用语法: 1.后代>: ...

  7. Opatch使用细则

    Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...

  8. 从零搭建和配置OSX开发环境

    对于每一名开发者来说,更换系统或者更换电脑的时候,都免不了花上不短的时间去折腾开 发环境的问题.我本人也是三番两次,深知这个过程的繁琐.所有,根据我自己以往的经验, 以及参考一下他人的意见,整理一下关 ...

  9. Microsoft SQL Server Trace Flags

    Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...

  10. TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议

    SSL修改密文协议的设计目的是为了保障SSL传输过程的安全性,因为SSL协议要求客户端或服务器端每隔一段时间必须改变其加解密参数.当某一方要改变其加解密参数时,就发送一个简单的消息通知对方下一个要传送 ...