博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell训练营Day16
阅读量:7036 次
发布时间:2019-06-28

本文共 2241 字,大约阅读时间需要 7 分钟。

练习21

计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。例如a.txt内容如下:
12aa*lkjskdj
alskdflkskdjflkjj
我们脚本名字为 ncount.sh, 运行它时:
bash ncount.sh a.txt
输出结果应该为:
2
0
sum:2

#!/bin/bash

sum=0
while read line
do
line_n=echo $line|sed 's/[^0-9]//g'|wc -L
echo $line_n
sum=$[$sum+$line_n]
done < $1
echo "sum:$sum"

练习22

有两台Linux服务器A和B,假如A可以直接ssh到B,不用输入密码。A和B都有一个目录叫做/data/web/ 这下面有很多文件,

当然我们不知道具体有几层子目录,假若之前A和B上该目录下的文件都是一模一样的。

但现在不确定是否一致了。固需要我们写一个脚本实现这样的功能,检测A机器和B机器/data/web/目录下文件的异同,我们以A机器上的文件作为标准。

比如,假若B机器少了一个a.txt文件,那我们应该能够检测出来,或者B机器上的b.txt文件有过改动,我们也应该能够检测出来(B机器上多了文件不用考虑)。

#!/bin/bash

dir=/data/web
[ -f /tmp/md5.list ] && rm -f /tmp/md5.list
find $dir/ -type f > /tmp/file.list
while read line
do
md5sum $line >> /tmp/md5.list
done < /tmp/file.list

scp /tmp/md5.list B:/tmp/

[ -f /tmp/check_md5.sh ] && rm -f /tmp/check_md5.sh

cat >/tmp/check_md5.sh << EOF

#!/bin/bash
dir=/data/web
n=`wc -l /tmp/md5.list|awk '{print \$1}'`
for i in `seq 1 \$n`
do
file_name=`sed -n "\$i"p /tmp/md5.list |awk '{print \$1}'`
md5=`sed -n "\$i"p /tmp/md5.list|awk '{print \$2}'`
if [ -f \$file_name ]
then
md5_b=`md5sum \$file_name`
if [\$md5_b != \$md5 ]
then
echo "\$file_name changed."
fi
else
echo "\$file_name lose."
fi
done
EOF
scp /tmp/check_md5.sh B:/tmp/
ssh B "/bin/bash /tmp/check_md5.sh"

练习23

写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次(只需要统计外网网卡,假设网卡名字为eth0):
 
2017-08-04 01:11
eth0 input: 1000bps
eth0 output : 200000bps

2017-08-04 01:12

eth0 input: 1000bps
eth0 output : 200000bps

#!/bin/bash

logdir=/tmp/sar_log
file=$logdir/date +%d%H.log
t=date +"%F %H:%M"

[ -d $logdir ] || mkdir -p $logdir

LANG=en
sar -n DEV 1 5 |grep eth0 |grep "Average" > /tmp/sar.tmp

exec >>$file

echo "$t"
awk '{print "eth0 input:",$58000"bps""\n""eth0 output:",$68000"bps"}' /tmp/sar.tmp
echo "#### ###################"

练习24

#!/bin/bash
for pid in ps aux |grep clearnen.sh |awk '{print $2}'
do
echo $pid
kill -9 $pid
done

练习25

写一个脚本判断你的Linux服务器里是否开启web服务?(监听80端口)如果开启了,请判断出跑的是什么服务,是httpd呢还是nginx又或者是其他的什么?

#!/bin/bash

n=netstat -lntp |grep ':80 '|wc -l
if [ $n -eq 0 ]
then
echo "It not listen port 80"
else
ser=netstat -lntp |grep ':80 '|awk -F '/' '{print $NF}'|sed 's/ //g'
echo "It is listenning port 80, and the service is $ser."
fi

转载于:https://blog.51cto.com/12898947/2340019

你可能感兴趣的文章
android WiFi ASSOC_REJECT 流程跟踪
查看>>
Visual自动添加CSS兼容前缀
查看>>
TPerlRegEx, delphi 下的正则表达式
查看>>
Boost核心类库精讲
查看>>
C协程使用举例
查看>>
过程日志定位疑难问题
查看>>
rails3 unicorn部署
查看>>
织梦开发——相关阅读likeart应用
查看>>
理解eclipse(java工程)的工作目录
查看>>
德国"反黑客"法出炉:拥有黑客工具是非法的
查看>>
OEM解析:WayOs PC、ISP、BCM等各版本OEM的大概过程
查看>>
如何在ToolBar中显示文字和图标,自定义图标大小,并和MenuItem关联
查看>>
sql 分页查询
查看>>
between and 相关
查看>>
android Fragments详解七:fragement示例
查看>>
VC++错误 'OnLButtonDown' : member function not declared in 'CYx2_31View'
查看>>
linq sum where
查看>>
系统性能优化一例
查看>>
【背景建模】混合高斯模型的改进
查看>>
startActivityForResult()的用法 转
查看>>