shell习题第22题:

【题目要求】

加入A服务器可直接ssh到B,不用输入密码。A和B都有一个目录是/data/web/这下有很多文件,我们不知道这下面有多少层目录,但是之前的目录结构和文件是一模一样的。但是现在不确定是否一致。

所以以A为标准,检测AB不同的文件,看看哪些文件是被修改过的

【核心要点】

md5sum file

【脚本】

#!/bin/bash

dir=/data/web
[ -f /tmp/md5.list ] && rm -f /tmp/md5.list

while read line
do
    md5sum $line >> /tmp/md5.list
done < /tmp/md5.list

# 拷贝到B服务器
echo "scp /tmp/md5.list B:/tmp"

# 嵌入文档 EOF
[ -f /tmp/check_md5.sh ] && rm -f /tmp/check_md5.sh

cat > /tmp/check_md5.sh << EOF
#!/bin/bash
dir=/data/web
while read line
do
    file_name=`echo \$line | awk ‘{print $2}‘`
    md5=`echo \$line | awk ‘{print $1}`
    if [ -f $file_name ]; then
        md5_b=`md5sum \$file_name`
        if [ \$md5_b != \$md5_b ]; then
            echo "\$file_name changed."
        fi
    else
        echo "\$file_name lose."
    fi
done < /tmp/md5.list
EOF

echo "scp /tmp/check_md5.sh B:/tmp/"
echo ‘ssh B "/bin/bash /tmp/check_md5.sh"‘

原文地址:https://www.cnblogs.com/dingzp/p/10991551.html

时间: 2024-11-05 15:30:22

shell习题第22题:的相关文章

shell习题第10题:打印每个单词的字数

[题目要求] 用shell打印下面这句话中字母数小于6的单词. Bash also interprets a number of multi-character options. [核心要点] for循环遍历所有单词 wc -L获取字符串长度 [脚本] #!/bin/bash c="Bash also interprets a number of multi-character options." n=`echo $c|awk -F '[ +-.]' '{print NF}'` for

shell习题第27题:带选项的增删用户脚本

[题目要求] 写一个支持选项的增加或删除用户的shell脚本 #!/bin/bash if [ $# -eq 0 ]; then echo "Wrong, use bash $0 --add username, or bash $0 --del username or bash $0 -- help" exit fi exist_user() { if ! id $1 2>/dev/null >/dev/null then echo $i not exist fi } ca

shell习题第2题:统计ip访问量

[题目要求] 有日志1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)” 61.147.76.5

shell习题第13题:监控nginx进程

[题目要求] 在服务器上写一个脚本,要求如下 1. 每隔10秒去检查而一次服务器上的nginx进程数,如果>=500的时候,就需要自动重启一下nginx服务,并检测启动是否成功 2. 如没有正常启动还要再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且之后不需要再检测 3. 如果启动成功之后,1分钟后再次检测nginx进程,若正常则重复之前的操作(每隔10秒检查一次),若还是>=500,那放弃重启并需要发邮件给管理员,然后自动退出脚本.假设发邮件脚本为mail.py [核心要点]

shell习题第24题:杀进程

[题目要求] 一台机器负载高,top查看到有很多sh的进程,然后top -c查看可以看到对应的进程命令是sh -c /bin/clear.sh 经分析后发现是因为该脚本执行时间太长,导致后续执行时,上次的脚本还未执行结束,写一个脚本批量杀死所有的sh的进程 [核心要点] kill -9 pid [脚本] #!/bin/bash for p in `ps aux | grep clear.sh|awk '{print $2}'` do kill -9 $p done #或者 ps aux | gr

shell习题第25题:判断是否开启web服务

[题目要求] 写一个脚本判断我的linux服务器是否开启web服务?监听80端口 [核心要点] netstat -lntp | grep '80' [脚本] #!/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}'

shell习题第26题:监控mysql服务

[题目要求] 假设mysql密码是123456. 写脚本监控mysql服务是否正常,比如是否可以执行show processlist,并检测一下当前的mysql服务是主还是从.如果是从,请判断他的主从服务是否正常.如果是主,则不需要做什么 [核心要点] mysql -uroot -p123456 -e "show processlist" show slave status [脚本] #!/bin/bash mysql="/usr/local/mysql/bin/mysql

linux shell习题训练

shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2306 打印当前sshd的端口和进程id,处理结果: sshd Port&&pid: 22 5412 输出本机创建20000个目录所用的时间,处理结果: real 0m3.367s user 0m0.066s sys 0m1.925s 打印本机的交换分区大小,处理结果: Swap:1024M

OCP读书笔记(22) - 题库(ExamB)

101.Identify two situations in which you can use Data Recovery Advisor for recovery. (Choose two.) A. The user has dropped an important table that needs to be recovered. B. The database files are corrupted when the database is open. C. You are not ab