写一个shell脚本,通过curl -I 返回的状态码来判定所访问的网站是否正常。 比如,当状态码为200时,才算正常。

#!/bin/bash url="http://www.baidu.com" mail_user=123@qq.com code=curl -I $url 2>/tmp/curl.err |head -1|awk '{$2}' if [ -z "$code" ] then python mail.py $mail_user "$url访问异常" "cat /tmp/curl.err" exit elif [ $code != "200" ] then python mail.py $mail_user "$url访问异常,状态码$code" "cat /tmp/curl.log" fi

用户家目录(考虑到执行脚本的用户可能是普通用户也可能是root)下面小于5KB的文件打包成tar.gz的压缩包,并以当前日期为文件名前缀,例如,2018-03-15.tar.gz。

#!/bin/bash t=date +%F cd $HOME tar czf $t.tar.gz find ./ -type f -size -5k |xargs

一个同学不小心用iptables规则把sshd端口22给封掉了,结果不能远程登陆,要想解决这问题,还要去机房,登录真机去删除这规则。 问题来了,要写个监控脚本,监控iptables规则是否封掉了22端口,如果封掉了,给打开。 写好脚本,放到任务计划里,每分钟执行一次。

#!/bin/bash iptables -nvL INPUT --line-numbers |grep -w 'dpt:22' |awk '$4~/REJECT|DROP/ {print $1}'>/tmp/iptables.log n=wc -l /tmp/iptables.log

if [ $n -gt 0 ] then for n in tac /tmp/iptables.log #倒序 由大到小 do iptables -D INPUT $n done fi

已知nginx访问的日志文件在/usr/local/nginx/logs/access.log内,请统计下早上10点到12点 来访ip最多的是哪个?

export LANG=en log="/usr/local/nginx/logs/access.log" t=date +%d/%b/%Y:1[01]:[0-5][0-9]: egrep "$t" $log|awk '{print $1}' |sort -n |uniq -c |sort -n |tail -1 |awk '{print $2}'

写一个shell脚本。提示输入一个暂停的数字,然后从1打印到该数字。然后询问是否继续。继续的话再输入一个数字接着打印,否则退出脚本。

例:如果输入的是5,打印1 2 3 4 5,然后继续输入15,然后打印6 7 …14 15 以此类推。

#!/bin/bash read -p "Please input a number: " n n1=echo $n |sed 's/[0-9]//g' if [ -n "$n1" ] then echo "Please input a number." exit fi

for i in seq 1 $n do echo $i done

read -p "If continue? y/n" c

case $c in n|N) exit ;; y|Y) read -p "Please input a number: " n2 n3=echo $n2|sed 's/[0-9]//g' if [ -n "$n3" ] then echo "Please input a number." exit fi if [ $n2 -le $n ] then echo "$n2 should grater than $n." exit fi for i in seq $[$n+1] $n2 do echo $i done ;; *) echo "Please input y or n." ;; esac