前言
大家好,这里是浩道linux,主要给大家分享linux、python、网络通信相关的it知识平台。
今天浩道跟大家分享这两天对实习生阶段考核时给他布置的5道shell脚本题目,虽然花了两天时间调试完成,但是质量还是不错的,决定加鸡腿,顺便分享给大家看看!
1、检测两台服务器指定目录下的文件一致性
#!/bin/bash######################################检测两台服务器指定目录下的文件一致性######################################通过对比两台服务器上文件的md5值,达到检测一致性的目的dir=/data/webb_ip=192.168.88.10#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中find dir -type f|xargs md5sum>/tmp/md5_a.txtsshb_ip find dir -type f|xargs md5sum>/tmp/md5_b.txtscpb_ip:/tmp/md5_b.txt /tmp#将文件名作为遍历对象进行一一比对for f in `awk '{print 2} /tmp/md5_a.txt'`do#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果if grep -qw f /tmp/md5_b.txtthenmd5_a=`grep -w f /tmp/md5_a.txt|awk '{print 1}'`md5_b=`grep -w f /tmp/md5_b.txt|awk '{print 1}'`#当文件存在时,如果md5值不一致则输出文件改变的结果if [md5_a != md5_b ]thenecho f changed.fielseecho $f deleted.fidone
2、定时清空文件内容,定时记录文件大小
#!/bin/bash#################################################################每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件################################################################logfile=/tmp/`date +%h-%f`.logn=`date +%h`if [ n -eq 00 ] || [n -eq 12 ]then#通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作for i in `find /data/log/ -type f`dotrue > idoneelsefor i in `find /data/log/ -type f`dodu -shi >> $logfiledonefi
3、检测网卡流量,并按规定格式记录在日志中
#!/bin/bash########################################################检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次#日志格式如下所示:#2019-08-12 20:40#ens33 input: 1234bps#ens33 output: 1235bps######################################################3while :do#设置语言为英文,保障输出结果是英文,否则会出现buglang=enlogfile=/tmp/`date +%d`.log#将下面执行的命令结果输出重定向到logfile日志中exec >> $logfiledate +%f %h:%m#sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8sar -n dev 1 59|grep average|grep ens33|awk '{print $2, ,input:, ,$5*1000*8,bps,,$2, ,output:, ,$6*1000*8,bps}'echo #####################因为执行sar命令需要59秒,因此不需要sleepdone
4、计算文档每行出现的数字个数,并计算整个文档的数字总数
#!/bin/bash##########################################################计算文档每行出现的数字个数,并计算整个文档的数字总数#########################################################使用awk只输出文档行数(截取第一段)n=`wc -l a.txt|awk '{print $1}'`sum=0#文档中每一行可能存在空格,因此不能直接用文档内容进行遍历for i in `seq 1 $n`do#输出的行用变量表示时,需要用双引号line=`sed -n $ip a.txt`#wc -l选项,统计最长行的长度n_n=`echo $line|sed s'/[^0-9]//'g|wc -l`echo $n_nsum=$[$sum+$n_n]doneecho sum:$sum杀死所有脚本#!/bin/bash#################################################################有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况,#导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。################################################################ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9
5、从 ftp 服务器下载文件
#!/bin/bashif [ $# -ne 1 ]; then echo usage: $0 filenamefidir=$(dirname $1)file=$(basename $1)ftp -n -v << eof # -n 自动登录open 192.168.1.10 # ftp服务器user admin passwordbinary # 设置ftp传输模式为二进制,避免md5值不同或.tar.gz压缩包格式错误cd $dirget $fileeof
一文看懂,无线射频识别技术及其应用发展趋势
微信热更新将被苹果强制下架?腾讯张军:想象力太大应该去做编剧
华为P10怎么样?华为P10最新消息:华为P10闪存门事件后,官网终于降价只需3588元
一种新型偏振发光异质结材料
IOTA技术将会如何改变物联网设计?
5个shell脚本实例分享
YunOS 2016目标破亿,助力小企业打造大品牌
Marvell成后起之秀:聆听需求是芯片商制胜之道
噪声系数测量—超量程方法
宇树科技工业级机器狗去宝钢“上班”了
漏电保护器测试仪的技术参数及测量方法
复位IC为汽车和工业用设备安全保驾护航
驱动器领域技术上的一个重点和难点
13位专家深度点评2021年“十大突破性技术”
软通动力成为开放原子开源基金会成员:坚持开源开放,繁荣生态
为什么要建北斗?有哪些卫星导航系统?
从AI玩具到AI工具,钉钉大模型改造的200天
MB39C601:恒流AC-DC LED驱动器快速入门及特性介绍
三星s8/华硕手机还在在围绕骁龙835首发做文章?小米6都小批量了!
2011-2016年流程产业的以太网节点有望增长近一倍