因为不同服务的管理方法不同,上次关闭了ssh的外网登录以后,各地不断有服务器报出这样那样的问题。
于是退而求其次,定期监控日志文件大小吧。这回expect只要du -sh一下就行了,方便的很。问题在下一步的分析。
第一步,是用如下脚本,可以做到提取日志达到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登录的提示信息不一而无法统一,只能放弃。 |