#!/bin/bash######################################检测两台服务器指定目录下的文件一致性######################################通过对比两台服务器上文件的md5值,达到检测一致性的目的dir=/data/web
b_ip=192.168.88.10
#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中
find $dir-type f|xargs md5sum > /tmp/md5_a.txt
ssh $b_ip"find $dir -type f|xargs md5sum > /tmp/md5_b.txt"
scp $b_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.txt
then
md5_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]
then
echo"$f changed."
fi
elseecho"$f deleted."
fi
done
定时清空文件内容,定时记录文件大小
#!/bin/bash#################################################################每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件################################################################
logfile=/tmp/`date +%H-%F`.log
n=`date +%H`
if[$n-eq 00 ]||[$n-eq 12 ]
then
#通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作for i in `find /data/log/ -type f`
do
true > $i
done
elsefor i in `find /data/log/ -type f`
do
du -sh $i >> $logfile
done
fi
检测网卡流量,并按规定格式记录在日志中
#!/bin/bash########################################################检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次#日志格式如下所示:#2019-08-12 20:40#ens33 input: 1234bps#ens33 output: 1235bps######################################################3while :
do#设置语言为英文,保障输出结果是英文,否则会出现bug
LANG=en
logfile=/tmp/`date +%d`.log
#将下面执行的命令结果输出重定向到logfile日志中
exec >> $logfile
date +"%F %H:%M"#sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8
sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}'echo"####################"#因为执行sar命令需要59秒,因此不需要sleep
done
#!/bin/bashif[ $# -ne 1 ]; thenecho"Usage: $0 filename"
fi
dir=$(dirname $1)
file=$(basename $1)
ftp -n -v << EOF # -n 自动登录
open 192.168.1.10 # ftp服务器
user admin password
binary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误
cd $dir
get "$file"
EOF
从 FTP 服务器下载文件
#!/bin/bash if[ $# -ne 1 ]; then echo"Usage: $0 filename"
fi
dir=$(dirname $1)
file=$(basename $1)
ftp -n -v << EOF # -n 自动登录
open 192.168.1.10 # ftp服务器
user admin password
binary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误
cd $dir
get "$file"
EOF
连续输入5个100以内的数字,统计和、最小和最大
#!/bin/bash
COUNT=1
SUM=0
MIN=0
MAX=100
while[$COUNT-le 5 ];do
read -p "请输入1-10个整数:" INT
if[[!$INT =~ ^[0-9]+$ ]]; then
echo"输入必须是整数!"exit 1
elif [[$INT-gt 100 ]]; then
echo"输入必须是100以内!"exit 1
fi
SUM=$(($SUM+$INT))[$MIN-lt$INT] && MIN=$INT[$MAX-gt$INT] && MAX=$INT
let COUNT++
done
echo"SUM: $SUM"echo"MIN: $MIN"echo"MAX: $MAX"
批量修改文件名
方法1:
for file in $(ls*html);domv$file bbs_${file#*_} # mv $file $(echo $file |sed -r 's/.*(_.*)/bbs\1/') # mv $file $(echo $file |echo bbs_$(cut -d_ -f2)
方法2:
for file in $(find .-maxdepth 1 -name "*html");domv$file bbs_${file#*_}done
方法3:
# rename article bbs *.html
扫描主机端口状态
#!/bin/bash
HOST=$1
PORT="22 25 80 8080"for PORT in $PORT;doifecho &>/dev/null > /dev/tcp/$HOST/$PORT; then
echo"$PORT open"elseecho"$PORT close"
fi
done