使用jenkins实现监控嵌入式设备稳定性之二----脚本部分
一、Readme:
- awk获取指定行制定列数据:awk 'NR==2{print}'| awk '{print $5}':第2行第5列
#!/bin/sh df_max=`cat para.txt | grep 'df_max'|awk -F ":" '{print$2}'` #dev/root百分值的上限,具体数值在同路径下的 para.txt中获取 df > df.txt root=$(cat df.txt | awk 'NR==2{print}'| awk '{print $5}' | awk -F "%" '{print$1}') # awk 'NR==2{print}'| awk '{print $5}':第2行第5列if [ $root -lt $df_max ] # [] 跟条件语句之间要加 !!空格!! ;如果当前dev/root百分值大于上限,打印error then echo `date`" : dev/root OK" elseecho `date`" : dev/root false" fi
- Linux 中shell 脚本if判断多个条件:https://blog.csdn.net/weixin_37569048/article/details/80039941
#!/bin/sh asterisk_vsz_max=`cat para.txt | grep 'asterisk_vsz_max'|awk -F ":" '{print$2}'` asterisk_vsz_min=`cat para.txt | grep 'asterisk_vsz_min'|awk -F ":" '{print$2}'` top -b n1 > top.txt vsz=$(cat top.txt |grep 'asterisk -vvv'| awk '{print $5}' | awk -F "m" '{print$1}') #echo $vszif [[ $vsz -gt $asterisk_vsz_min ]] && [[ $vsz -lt $asterisk_vsz_max ]] # 小细节:if 多条件判断语句,要两个[] ;参数与[]之间要有空格 thenecho `date`" : asterisk vsz :"$vsz", OK"elseecho `date`" : asterisk vsz :"$vsz", false" fi
#!/bin/sh #set -xv echo "" > cpu.txtcpu_max=` cat para.txt | grep 'cpu_max'|awk -F ":" '{print$2}'` #cpu的上限 ,具体数值在同路径下的 para.txt中获取 time=0 times=$cpu_checktime #要测试的cpu次数,一秒测试一次打印一次cpu值 errortimes=$cpu_allowerrortime #允许超过指定cpu上限的次数for i in $(seq 1 $times)doecho "`cpu -c 1`" >> cpu.txtcpu=$(tac cpu.txt | awk "NR==1" | awk '{print $3}' | awk -F "%" '{print$1}') # echo "cpu:"$cpuif [ $cpu -gt $cpu_max ] #如果cpu > 指定值maxcpu,次数+1 thentime=$(($time+1))echo "time:"$timeelsetime=$timefidoneif [ $time -gt $errortimes ] #如果指定次数maxtime内,cpu超过maxcpu次数大于指定值次数errortime;打印error thenecho `date`" : cpu false"elseecho `date`" : cpu OK"fi
#!/bin/sh #set -xv free_min=`cat para.txt | grep 'free_min'|awk -F ":" '{print$2}'` #内存的下限 cach_max=`cat para.txt | grep 'cach_max'|awk -F ":" '{print$2}'` #cached的上限#free_min=47084 #cach_max=324000if [ ! -f "memory.txt" ] #判断memory.txt是否存在---第一次运行该脚本不存在,若不存在则执行then部分 then cat /proc/meminfo > memory.txt cp memory.txt memory1.txt cp memory.txt memory2.txtcp memory.txt memory3.txtcp memory.txt memory4.txtcp memory.txt memory5.txtelse break; fi a=0 b=0memfree=`cat memory.txt | awk 'NR==2{print}' | awk '{print$2}'` cached=`cat memory.txt | awk 'NR==4{print}' | awk '{print$2}'` if [[ $memfree -ge $free_min ]] && [[ $cached -lt $cach_max ]] #判断当前的free跟cach是否超过限制范围,若没超过则执行then部分进一步判断 then mv memory4.txt memory5.txtmv memory3.txt memory4.txt mv memory2.txt memory3.txtmv memory1.txt memory2.txtmv memory.txt memory1.txtcat /proc/meminfo > memory.txtfor i in $(seq 1 5) #当前的free跟cach与memory1.txt到memory5.txt对比 do memfreelast=`cat memory$i.txt | awk 'NR==2{print}' | awk '{print$2}'`#echo $memfreelast cachedlast=`cat memory$i.txt | awk 'NR==4{print}' | awk '{print$2}'`#echo $cachedlastif [ $memfree -ge $memfreelast ]then if [ $cached -le $cachedlast ]then echo `date`" : memory and cached OK"breakelse b=$(($b+1))fielse a=$(($a+1))fi i=$((i+1))doneif [ $a -eq 5 ];thenecho `date`" : memfree continue leak:false"fiif [ $b -eq 5 ];thenecho `date`" : cached continue leak:false"fielse echo `date`"memory overflow,please chech memfree and cached : false "fi
#!/bin/sh#top.txt sed -n '1,20p' top.txt > topsed1.txt #把top.txt的前1-20行另存为 topsed1.txt(太多行会破坏格式,所以保留的20行) sed 's/,/;/g ' topsed1.txt > topsed2.txt #把topsed1.txt中的 “,”都换成“;”另存到 topsed2.txt中 (因为csv是把“,”当成换单元格,所以把内容中的“,”替换掉以保持格式便于查看) sleep 1 sed '1i"' topsed2.txt > topsed3.txt #在topsed2.txt的第一行插入符号" sleep 1 sed '$a"' topsed3.txt > topsed4.txt #在topsed3.txt的最后一行插入符号 " sed 'H;$!d;${x;s/^\n//;s/\n/\r\n/g}' topsed4.txt > top_final.txt # 在topsed4.txt 把换行符由原来的“\n”改成“\r\n”(excel的换行符是\r\n,这样在window打开可以保持top.txt输出的换行效果)#如果有其他txt内容需要改造,按照top.txt这个模式copy改造即可,如下#df.txt sed 's/,/;/g ' df.txt > dfsed1.txt sleep 1 sed '1i"' dfsed1.txt > dfsed2.txt sleep 1 sed '$a"' dfsed2.txt > dfsed3.txt sed 'H;$!d;${x;s/^\n//;s/\n/\r\n/g}' dfsed3.txt > df_final.txt#cpu.txt sed 's/,/;/g ' cpu.txt > cpu1.txt sleep 1 sed '1i"' cpu1.txt > cpu2.txt sleep 1 sed '$a"' cpu2.txt > cpu3.txt sed 'H;$!d;${x;s/^\n//;s/\n/\r\n/g}' cpu3.txt > cpu_final.txt#memory.txt sed 's/,/;/g ' memory.txt > memory1.txt sleep 1 sed '1i"' memory1.txt > memory2.txt sleep 1 sed '$a"' memory2.txt > memory3.txt sed 'H;$!d;${x;s/^\n//;s/\n/\r\n/g}' memory3.txt > memory_final.txtecho "`date`"",""`cat df_final.txt`"",""`cat top_final.txt`"",""`cat calls_final.txt`"",""`cat memory_final.txt`">> stabilitycsv$PBX_IP.csv #如果要新加入单元格内容,在此添加,记得","换单元格
#!/usr/bin/expect set PBX_IP [lindex $argv 0] ;#取自命名后带的第一个参数值,设置为连接的ip,参数值之间以空格隔开; [lindex $argv 0]表示执行命令行带的第一个参数值 set password [lindex $argv 1] ;#取自命令后待的第二个参数值,设置为连接的密码;无该参数值表示密码为空 spawn ftp $PBX_IPexpect "Name" send "root\r"expect "Password:" send "$password\r"expect "ftp>" send "bin\r"expect "ftp>" send "get df.txt\r"expect "ftp>" send "get cpu.txt\r"expect "ftp>" send "bye\r"
转载于:https://www.cnblogs.com/cixiafeibixia/p/10712660.html
使用jenkins实现监控嵌入式设备稳定性之二----脚本部分相关推荐
- 技巧:结合Zabbix与SNMP监控嵌入式设备
在如何利用Zabbix监控网络设备三篇文章的前两篇中,我们介绍了如何通过Zabbix代理监控网络设备.但有些设备无法安装Zabbix代理,需要采用其他方法监控.需要考虑无法安装软件的嵌入式设备或应用程 ...
- 三种常见嵌入式设备通信协议
关注.星标公众号,直达精彩内容 嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种: 从上表可以看到,一般嵌入式设备内存和运算性能都有限,因此固 ...
- 通用计算机(PC)和手机是否属于嵌入式设备?(嵌入式的定义)-杂谈
我们身边的很大一部分电子产品,其实都可以称之为嵌入式设备.除去一些简单的收音机,普通的耳机和音响,普通充电插座,功能单一的读卡器U盘之类的,较为简单的不带控制功能的产品外.它们可以可以称为电子产品,但 ...
- 嵌入式设备显示屏相关概念汇总
嵌入式设备常用的显示屏接口 LCD 接口:是一种常见的数字电路接口,支持多种显示器件,如字符型液晶显示器和点阵型液晶显示器等. VGA 接口:是一种视频接口标准,用于连接显示器和计算机.该接口提供模拟 ...
- 嵌入式设备web服务器比较
现在在嵌入式设备中所使用的web服务器主要有:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生 ...
- OpenWrt项目:针对嵌入式设备的Linux操作系统
欢迎来到OpenWrt项目 OpenWrt项目是针对嵌入式设备的Linux操作系统.OpenWrt不会尝试创建单个静态固件,而是提供具有包管理功能的完全可写文件系统.这使您从供应商提供的应用程序选择和 ...
- 嵌入式设备的发展—应对复杂的开发设计挑战
在物联网出现之前,嵌入式设备的设计相对简单.随着智能手机的推出,我们的设备更加智能化.可升级并可通过互联网访问.安全不是可选的–如果不认真对待安全,数据.品牌声誉和收入流都将受到影响.此外,嵌入式系统 ...
- 嵌入式设备和固件中的自动漏洞检测(二):动态分析与符号执行技术
原文链接:Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomi ...
- 嵌入式设备web服务器
操作系统:ubuntu10.04 前言: 为了提高对设备的易操作性,很多设备中提供pc机直接通过浏览器操作设备的功能.这就需要在设备中实现web服务器. 现在在嵌入式设备中所使用的we ...
最新文章
- 苹果被罚3.1635亿元,因不愿开放第三方支付!
- php 将内容中的图片的域名,php给编辑器中的图片地址添加域名
- 【ABAP】 汇票收款自动过账FM
- 51nod1743-雪之国度【最小生成树,LCA,并查集】
- git保存账号密码_Altium Designer 通过Git实现版本控制
- [HAOI2010]软件安装(树形背包,tarjan缩点)
- OpenShift 4 - 多云管理(1) - 安装 RHACM、导入已有集群、配置观察功能
- 用python画四叶草-python turtle工具绘制四叶草的实例分享
- Elasticsearch之settings和mappings(图文详解)
- 【多媒体封装格式详解】---MKV【2】
- PyQt5 实现类似海康的设备搜索工具
- 股票交易费用精确计算器
- 【SAS系列】SAS入门书籍推荐
- vs2010+Silverlight4+wcf开发部署全过程
- 转行做程序员,培训or自学?过来人亲身经历良心分享
- 中国科学家首次解析人脑“中央处理器”,领先美国脑计划
- 将字符串转换成对应的数
- 解线性方程组的各种情况
- 卸载landesk的方法
- uboot源码学习(8)DDR内存时序参数