免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2545 | 回复: 10
打印 上一主题 下一主题

请帮忙看看这个脚本如何实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-10 14:26 |只看该作者 |倒序浏览
本帖最后由 qianlicao412 于 2012-05-11 11:00 编辑

大家好
    希望大家能慷慨相助,直条明路。
目的:实现对目录/omp-data/logs/OMPROP1/下文件为YYMMDD.APX的实时监控并做出相应的操作。
120510.APX文件的内容:
======================================================
05/10/12 13:46:01 #435082

M 46 OP:ALARM
     
     CELL 133, CDM 1, 2 ANTENNA DIVERSITY IMBALANCE 2
     
     CELL 150, CDM 1, 2 ANTENNA DIVERSITY IMBALANCE 3
     
     CELL 175, ASMB 1 CABINET INTRUSION
     
     CELL 439, OOS
     
      DEVICE - TICLI 5

05/10/12 13:46:02 #435085
======================================================
由于该文件是系统运行自动产生并实时更新的,每天一个。所以打算用下面的命令来实现。只要发现 CELL *, OOS,立即取出CELL号码如:439
执行另一个脚本 ,将439当作变量。
tail -f /omp-data/logs/OMPROP1/`date +%y%m%d`.APX | grep "CELL * OOS" >> /hone/abc.txt
执行了好久但发现abc.txt里面无内容
后来又用下面的方法来试验还是失败了
tail -f /omp-data/logs/OMPROP1/`date +%y%m%d`.APX
whlie read line
do
$line >> /home/abc.txt
done


调用的脚本如:
echo cell2>input1
while read a
do
echo u>>input1
echo csno=$a>>input1
echo cstat=g>>input1
echo u>>input1
done
apxrcv -text -brief -ignwarn -txtelog err.out<input1
rm input1
     

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2012-05-10 14:46 |只看该作者
grep 用法错了。
  1. grep "CELL.*OOS"
复制代码
还有while loop 语句中,我没看到要输入的文件或者内容
  1. while ()
  2. do

  3. done < input
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-05-10 15:05 |只看该作者
回复 2# rdcwayx
这位好心大哥,首先谢谢你了。
第一个grep的问题我在试试,第二个while循环你指的是那个,如果是我最后的脚本,那个是没有问题的。 那个是我们厂家在SUN OS10.0上对数据库用SHELL操作的方法
apxrcv -text -brief -ignwarn -txtelog err.out<inpu1 其实这条是命令。 apxrcv是一个软件 将inpu1作为输入。

   

论坛徽章:
0
4 [报告]
发表于 2012-05-10 15:37 |只看该作者
omp > tail -f /omp-data/logs/OMPROP1/`date +%y%m%d`.APX | grep "CELL.*OOS" >> /home/........../abc.txt
貌似abc.txt里面还是没有内容

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
5 [报告]
发表于 2012-05-10 19:10 |只看该作者
先看看 grep "CELL.*OOS"  /omp-data/logs/OMPROP1/`date +%y%m%d`.APX  这个命令有没有内容输出

论坛徽章:
0
6 [报告]
发表于 2012-05-11 09:50 |只看该作者
本帖最后由 qianlicao412 于 2012-05-11 09:52 编辑

#!/usr/bin/bash
tail -f /omp-data/logs/OMPROP1/`date +%y%m%d`.APX | while read line
do
echo $line
echo $line >> /home/............./aaa.txt
done
我通过这个方法即可实时更新120511.APX的屏幕显示,并将结果写入到 /home/user/aaa.txt
下一步需要找出告警的关键字段并执行修改数据操作。现在又遇到新的问题如何精确匹配关键字并将CELL后面的号码提出赋值给接下来的执行修改的脚本呢?
=============================================================
05/11/12 09:38:00 #730537

M 38 OP:ALARM
     CELL 82, ASMB 1 CABINET INTRUSION
     
     CELL 83, ASMB 1 CABINET INTRUSION
     
     CELL 84, ASMB 1 CABINET INTRUSION
     
     CELL 86, ASMB 1 CABINET INTRUSION
     
     CELL 98, OOS     
CELL 98 TIME FREQUENCY UNIT (TFU) 1
     CELL 98, CDM 1 PRIMARY SIGNALING LINK
     CELL 98, CDM 1 ALTERNATE SIGNALING LINK
     CELL 98 CDMA RADIO CONTROLLER (CRC) 1
     CELL 98 CDMA RADIO CONTROLLER (CRC) 2
     CELL 98, CARRIER 1 CARRIER-VOICE-BHS, DCS 14, SM 2, PSU 0, BHS 2
     CELL 98, CARRIER 1 CARRIER-DATA-BHS, DCS 14, SM 2, PSU 0, BHS 2
     
      DEVICE - TICLI 32

05/11/12 09:38:00 #730538

05/11/12 09:30:03 #728160

M 30 OP:ALARM
     CELL 278, CDM 1, MLG 1, MLG BANDWIDTH REDUCE
     
     CELL 417, CDM 1, 2 ANTENNA DIVERSITY IMBALANCE 1
     
     CELL 442, ASMB 1 CABINET INTRUSION
     
     CELL 443, ASMB 1 CABINET INTRUSION
     
     CELL 446, ASMB 1 CABINET INTRUSION
     
     CELL 450, ASMB 1 CABINET INTRUSION
     
     CELL 451, ASMB 1 CABINET INTRUSION
     
     CELL 461, ASMB 1 CABINET INTRUSION
     
     CELL 467, ASMB 1 CABINET INTRUSION
     
     CELL 469, ASMB 1 CABINET INTRUSION
     
     CELL 471, ASMB 1 CABINET INTRUSION
     
     CELL 487, OOS     
      DEVICE - TICLI 14

05/11/12 09:30:03 #728161

论坛徽章:
0
7 [报告]
发表于 2012-05-11 10:07 |只看该作者
为什么要用tail -f打开文件?可以用cat打开文件试试

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2012-05-11 10:58 |只看该作者
roger_3301 发表于 2012-05-11 10:07
为什么要用tail -f打开文件?可以用cat打开文件试试


因为楼主的要求是实时监控。 cat 的话,只能对已经产生的日志监控。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2012-05-11 10:58 |只看该作者
qianlicao412 发表于 2012-05-11 09:50
#!/usr/bin/bash
tail -f /omp-data/logs/OMPROP1/`date +%y%m%d`.APX | while read line
do
首先精确匹配。
  1. $ sed -n '/OOS/s/.* \([0-9]\+\).*/\1/p' 120510.APX
  2. 439
复制代码
另外你要传递这个439到一个脚本执行?是吧?那你把这个当作是一个命令行参数,然后在那个要执行的脚本当中用$1,$2命令行参数进行处理这个439,不要搞那么多临时文件,很危险。
./your-shell-script.sh `sed -n '/OOS/s/.* \([0-9]\+\).*/\1/p' 120510.APX`
然后在your-shell-script.sh当中就可以使用$1对439进行处理。

论坛徽章:
0
10 [报告]
发表于 2012-05-11 11:03 |只看该作者
本帖最后由 qianlicao412 于 2012-05-11 11:03 编辑

找了个笨办法  搞定了。去试试9楼的方法。可行不。
> grep "CELL.*OOS$" 120511.APX | grep -v '3G-1x'
     CELL 98, OOS
     CELL 120, OOS
     CELL 321, OOS
     CELL 98, OOS
     CELL 120, OOS
     CELL 321, OOS
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP