shell训练计划30天之第二十八天

例85 统计迸发绘图

背景:需要统计网站的并发量,并绘图

说明:只需要写出shell脚本即可,不用关心zabbix的配置

假设日志路径/data/logs/www.aaa.com_access.log

日志格式如下

 

核心要点

查看 日志中1秒内日志的数量,即并发数(每秒请求多少次)

#!/bin/bash

t=`date -d "-1 second" +%d/%b/%Y:%`

log=/data/logs/www.aaa.com_access.log

tail -1000 $log |grep -c "$t"

 

 

 

 

例86 关闭服务

要求:在centos6系统里,我们可以使用ntsysv关闭不需要开机启动的服务,当然也可以使用chkconfig工具来实现

写一个shell脚本,用chkconfig工具把不常用的服务关闭。脚本需要写成交互式的,需要我们给它提供关闭服务的名字

要点:chkconfig -list

 

 

#!/bin/bash

while:

do

chkconfig --list | grep '3:on' |awk '{print $1}' > /tmp/on_sev.txt

echo -e "\033[32m系统里开起来这些服务:"

cat /tmp/on_sev.txt

echo

read -p "Please select a service from this list." s

if ! agrep -qw "$s" /tmp/on_sev.txt

then

echo -e "\033[31m 你提供的服务名并未开启"

continue

fi

chkconfig $s off

break

done

 

 

例87 彻底关闭tomcat

在生产环境中,经常遇到tomcat无法彻底关闭,也就是说用tomcat自带的shutdown.sh脚本无法将java进程关掉。所以,需要借助shell脚本,将进程杀死,然后再启动会

写一个shell脚本,实现上述功能。彻底杀死一个进程的命令是kill -9 pid

要点

kill -9 pid

 

 

 

#!/bin/bash

shut=/usr/local/tomcat/bin/

java_pc()

{

n=`pgrep java|wc -l`

}

 

 

cd $dir

./shutdown.sh

conut=0

while [ $conut - lt 5 ]

do

 

n=`jvava_pc`

if [ $n -gt 0 ]

then

killall java

count=$[$conut+1]

sleep 1

else

break

fi

done

 

 

n=`java_pc`

if [ $n -gt 0 ]

then

killall -9 java

fi

n=`java_pc`

if [ $n -gt 0 ]

then

echo "Tomcat无法强制杀死"

exit

fi

cd $dir

 

 

例88 去掉文件名后缀

要求:至少用两种方法,批量把当前目录下所有文件后缀名为.bak的后缀去掉,比如1.txt.bak去掉后为1.txt

要点:方法一:用sed把文件名结尾的.bak去掉

方法二:awk截取去掉后缀部分,赋值变量

 

#!/bin/bash

for f in `ls ./*.bak `

do

mv $f `echo $f|sed 's/*.bak$//'`

f1=`echo $f|awk -F '.bak$' '{print $1}'`

mv $f $f1

done

例89 查询域名是否过期

写一个脚本,查询指定域名的过期时间,并在到期前一周每天发一封提醒邮件

要点:可以在linux命令下使用“whois 域名”,如“whois apelearn.com”,来获取该域名的一些信息

 

 

#!/bin/bash

mail_u=admin@admin.com

t1=`date +%s`

is_install_whois()

{

whisch whois >/dev/null 2>/dev/null

if [ $? -ne 0 ]

then

yum install -y epel-release

yum install -y jwhois

fi

}

notify()

{

e_d=`whois $1|grep 'Expiry Dte'|awk '{print $4}'|cut -d 'T' -f 1`

if [ -z "$e_d" ]

then

e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'`

fi

e_t=`date -d "$e_d" +%s`

n=`echo "86400*7"|bc`

e_t1=$[$s_t-$n]

e_t2=$[$e_t+$n]

if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]

then

python mail.py $mail_u "Domanin $1 will to be expired." "Domanin $1 expire date is $e_d."

fi

if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ]

then

python mail.py $mail_u "Domanin $1 has been expired" "Domanin $1 expire date is $e_d."

fi

#!/bin/bash

mail_u=admin@admin.com

t1=`date +%s`

is_install_whois()

{

whisch whois >/dev/null 2>/dev/null

if [ $? -ne 0 ]

then

yum install -y epel-release

yum install -y jwhois

fi

}

notify()

{

e_d=`whois $1|grep 'Expiry Dte'|awk '{print $4}'|cut -d 'T' -f 1`

if [ -z "$e_d" ]

then

e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'`

fi

e_t=`date -d "$e_d" +%s`

n=`echo "86400*7"|bc`

e_t1=$[$s_t-$n]

e_t2=$[$e_t+$n]

if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]

then

python mail.py $mail_u "Domanin $1 will to be expired." "Domanin $1 expire date is $e_d."

fi

if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ]

then

python mail.py $mail_u "Domanin $1 has been expired" "Domanin $1 expire date is $e_d."

fi

#!/bin/bash

mail_u=admin@admin.com

t1=`date +%s`

is_install_whois()

{

whisch whois >/dev/null 2>/dev/null

if [ $? -ne 0 ]

then

yum install -y epel-release

yum install -y jwhois

fi

}

notify()

{

e_d=`whois $1|grep 'Expiry Dte'|awk '{print $4}'|cut -d 'T' -f 1`

if [ -z "$e_d" ]

then

e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'`

fi

e_t=`date -d "$e_d" +%s`

n=`echo "86400*7"|bc`

e_t1=$[$s_t-$n]

e_t2=$[$e_t+$n]

if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]

then

python mail.py $mail_u "Domanin $1 will to be expired." "Domanin $1 expire date is $e_d."

fi

if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ]

then

python mail.py $mail_u "Domanin $1 has been expired" "Domanin $1 expire date is $e_d."

fi

}

 

if pgrep whois &>/dev/null

then

kill -9 whois

fi

is_install_whois

 

for d in aaa.com bbb.com aaa.cn

do

notify $d &

done

 

 

 

例90 秘钥自动认证

 

写一个shell脚本,当我们执行时,提示要输入对方的ip和root密码,然后可以自动把本机的公钥增加到对方的机器上,从而实现秘钥认证

要点:expect

ssh-copy-id

 

#!/bin/bash

read -p "输入一个IP地址" ip

read -p "输入此机器的root密码" pasd

is_install()

{

if ! rpm -q $1 &>/dev/null

then

yum install -y $1

fi

}

is_install openssh-cliens

is_install expect

 

if [ ! -f ~/.ssh/id_rsa.pub ]

then

echo -e "\n" |ssh -keygen -P ''

fi

 

cat > key.expect <<EOF

#!/usr/bin/expect

set host [lindex $argv 0]

set passwd [lindex $argv 1]

spawn ssh-copy-id root$host

expect {

"yes/no"{ sed "yes\r"; exp_continue}

"password:" {send "$passwd\r"}

 

}

expect eof

EOF

chomd a+x key.expect

./key.expect $ip $pasd

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值