Shell

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Shell >

使用expect进行日志分析

来源:网络整理  作者:网友投稿  发布时间:2020-12-28 23:29
接着上次expect脚本那事儿继续往下走。 因为不同服务的管理方法不同,上次关闭了ssh的外网登录以后,各地不断有服...

接着上次expect脚本那事儿继续往下走。
因为不同服务的管理方法不同,上次关闭了ssh的外网登录以后,各地不断有服务器报出这样那样的问题。
主管要求:“全面检查!” 在检查中,还真发现不少问题。
最突出的问题是:很多本应该上传到中心服务器的日志居然一直留在本机没动弹!时不时发作出来,就撑爆了根分区——这当然有分区规划不合理的问题。但在线业务,磁盘划分修改起来就不是那么方便了。

于是退而求其次,定期监控日志文件大小吧。这回expect只要du -sh一下就行了,方便的很。问题在下一步的分析。
摘举exp.log中一次循环的执行结果:
The authenticity of host '1.2.3.4 (1.2.3.4)' can't be established.
RSA key fingerprint is
bb:d5:81:e1:84:09:c5:32:f6:fb:e1:b3:d3:de:c3:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '1.2.3.4' (RSA) to the list of known hosts.
[email protected]'s password:
4.0K /home/apache2/logs/access_log

第一步,是用如下脚本,可以做到提取日志达到50M大小的服务器IP。
 

复制代码 代码如下:

#!/bin/bash
nk=`sed -n -e "/50M/=" exp.log`
nnk=`expr $nk - 1`
sed -n "$nnk"p"" exp.log|awk -F"'" '{print $1}'|awk -F"@" '{print $2}'

但问题是:如果同时有两台到50M呢?或者在运行到它时,已经到50M以上呢? 于是我想,以ls -sh显示大小,人眼好看,电脑不好认啊。如果用du -b,那大小相同的几率就应该小很多很多了。然后定一个阀值,进行比较循环就可以了。
最后脚本如下:
 

复制代码 代码如下:

#!/bin/bash
for ip in `cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
bs=400
size=`grep access exp.log | awk '{if ($1>'"$bs"'){print $1}}'`
for so in $size
do
nk=`sed -n -e "/$so/=" exp.log`
nnk=`expr $nk - 1`
sed -n "$nnk"p"" exp.log | awk -F"'" '{print $1}'|awk -F@ '{print $2}'
done

本来想用sed ‘N;s/n//g’ exp.log来合并行尾,省得调行号,但exp日志的格式因为ssh登录的提示信息不一而无法统一,只能放弃。
试验性的在ip.lst中输入了15个IP,运行结果显示出来了两个,成功。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/shell/10419.shtml

相关文章
最新文章
Centos下PHP5升级为PHP7的方法 Centos下PHP5升级为PHP7的方法

时间:2021-01-03

在php当中常量和变量的区 在php当中常量和变量的区

时间:2020-12-29

PHP中经典的四大排序算法 PHP中经典的四大排序算法

时间:2020-12-29

dw怎么运行php文件? dw怎么运行php文件?

时间:2020-12-29

PHP PHP_EOL 换行符 PHP PHP_EOL 换行符

时间:2020-12-29

Python3爬虫进阶:MongoDB存储 Python3爬虫进阶:MongoDB存储

时间:2020-12-29

python如何运行一个python程 python如何运行一个python程

时间:2020-12-29

用PHP写一个计算器(附完 用PHP写一个计算器(附完

时间:2020-12-29

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

使用expect进行日志分析

2020-12-28 编辑:网友投稿

接着上次expect脚本那事儿继续往下走。
因为不同服务的管理方法不同,上次关闭了ssh的外网登录以后,各地不断有服务器报出这样那样的问题。
主管要求:“全面检查!” 在检查中,还真发现不少问题。
最突出的问题是:很多本应该上传到中心服务器的日志居然一直留在本机没动弹!时不时发作出来,就撑爆了根分区——这当然有分区规划不合理的问题。但在线业务,磁盘划分修改起来就不是那么方便了。

于是退而求其次,定期监控日志文件大小吧。这回expect只要du -sh一下就行了,方便的很。问题在下一步的分析。
摘举exp.log中一次循环的执行结果:
The authenticity of host '1.2.3.4 (1.2.3.4)' can't be established.
RSA key fingerprint is
bb:d5:81:e1:84:09:c5:32:f6:fb:e1:b3:d3:de:c3:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '1.2.3.4' (RSA) to the list of known hosts.
[email protected]'s password:
4.0K /home/apache2/logs/access_log

第一步,是用如下脚本,可以做到提取日志达到50M大小的服务器IP。
 

复制代码 代码如下:

#!/bin/bash
nk=`sed -n -e "/50M/=" exp.log`
nnk=`expr $nk - 1`
sed -n "$nnk"p"" exp.log|awk -F"'" '{print $1}'|awk -F"@" '{print $2}'

但问题是:如果同时有两台到50M呢?或者在运行到它时,已经到50M以上呢? 于是我想,以ls -sh显示大小,人眼好看,电脑不好认啊。如果用du -b,那大小相同的几率就应该小很多很多了。然后定一个阀值,进行比较循环就可以了。
最后脚本如下:
 

复制代码 代码如下:

#!/bin/bash
for ip in `cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
bs=400
size=`grep access exp.log | awk '{if ($1>'"$bs"'){print $1}}'`
for so in $size
do
nk=`sed -n -e "/$so/=" exp.log`
nnk=`expr $nk - 1`
sed -n "$nnk"p"" exp.log | awk -F"'" '{print $1}'|awk -F@ '{print $2}'
done

本来想用sed ‘N;s/n//g’ exp.log来合并行尾,省得调行号,但exp日志的格式因为ssh登录的提示信息不一而无法统一,只能放弃。
试验性的在ip.lst中输入了15个IP,运行结果显示出来了两个,成功。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/jiaob/shell/10419.shtml

相关文章

风云图片

推荐阅读

返回Shell频道首页