您的位置:首页 > 运维架构 > Shell

脚 本 练 习 题(三)

2015-10-30 22:11 555 查看
一,写个脚本,计算100以内所有奇数的和以及所有偶数的和,分别显示出来;

#! bin/bash
sum=0
sum2=0
for i in `seq 1 100`;do
if [ $((i%2)) -eq 0 ];then
sum=$[$i+$sum]
else
sum2=$[$i+$sum2]
fi
done
echo $sum
echo $sum2
二,写个脚本,利用RANDOM生成10个随机数,并找出其中的最大值和最小值;

#!/bin/bash
MAXnum=0
MINnum=100000
for i in {1..10}
do
number[$i]=$RANDOM
echo ${number[$i]}
if [ ${number[$i]} -gt $MAXnum ]
then
MAXnum=${number[$i]}
else
MAXnum=$MAXnum
fi
if [ ${number[$i]} -lt $MINnum ]
then
MINnum=${number[$i]}
else
MINnum=$MINnum
fi
done
echo "the max number of RANDOM list is $MAXnum ,the min is $MINnum !"
#! /bin/bash
#Date:2014-12-18 23:00
#Author:Jianghongxi
#-----------------------------#
rm -f suijishu.txt
for i in `seq 1 10`;do echo $RANDOM>>suijishu.txt
done
sort -nr suijishu.txt -o suijishu.txt
cat suijishu.txt
echo The min number is :
sed -n '10'p suijishu.txt
echo The max number is :
sed -n '1'p suijishu.txt

三,写一个脚本,检查普通用户的家目录是否存在,比如apache用户存在,输出“apache's homedir is exist,very good”,如apache用户不存在,输出“apache's homedir isn't exist,so bad”

read -p "Input a user : " user
awk -F: '$1=="$user"' /etc/passwd > 1.txt
或者 grep  '$user'  /etc/passwd > 1,txt
n=`du 1.txt | awk -F " " '{print $1}'`
if [ $n -eq 0 ]
then
echo "$user's homedir isn't exist,so bad"
else
echo "$user's homedir is exist,very good"
fi
rm -f 1.txt
四,写一个脚本,完成以下任务

1.添加5个用户,user1,...,user5
2.每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令执行结果信息;
3.每个用户添加完成后,都要显示用户某某已经添加成功;
#!/bin/bash
for i in `seq 1 5`;do
if cat /etc/passwd | awk -F : '{print $1}'|grep user$i;then
echo user$i " already exists"
else
useradd user$i
echo user$i | passwd --stdin user$i
echo user$i "add sucess"
fi
done
五,写一个脚本: 计算100以内所有能被3整除的正整数的和

#!/bin/bash
sum=0
for i in {1..100};do
if [ $[$i%3] -eq 0 ];then
sum=$[$i+$sum]
fi
done
echo "sum:$sum"
#########################ccccc
#include <stdio.h>
int main(void)
{
int i, sum = 0;
for (i = 3; i <= 100; i += 3)
sum += i;
printf("%d\n", sum);
return 0;
}
六,当前MySQL服务的root密码为123456,写脚本检测MySQL服务是否正常,并检测一下当前的MySQL服务是主还是从,如果是从,请判断它的主从服务是否异常。如果是主,则不需要做什么;

#!/bin/bash
DBuser=root
DBpasswd=123456
Mail="wang@163.com"
Result=/tmp/mysql.txt
State=`netstat -lnpt | grep 3306`
if [ -z "$State" ]
then
#    mail -s "Can't connect to Mysql database" $Mail < /dev/null
echo "Can't connect to Mysql database"
else
mysql -u$DBuser -p$DBpasswd -e "show slave status\G" > $Result 2> /dev/null
Slave_IO_Running=`grep -i slave_io_running $Result | cut -d : -f 2`
Slave_SQL_Running=`grep -i slave_sql_running $Result | cut -d : -f 2`
if [ "$Slave_IO_Running" != ' Yes' -o "$Slave_SQL_Running" != ' Yes' ]
then
#      mail -s "Mysql replication has stopped" $Mail < $Result
echo "Mysql replication has stopped"
fi
fi
七,假如你服务器上跑的是httpd,那请写一个监控脚本,每分钟检查一次httpd进程是否存在,若是发现不在了,那么就启动它。

#/bin/bash
server='netstat -lnp | grep httpd'
if [ -z $server ];then
echo "the httpd server is stoping"
/usr/local/apache2/bin/apachectl start
else
echo "the service is running"
fi

sleep 60
done
或用计划任务代替sleep;
八,有时候网站访问超级慢,用top查看发现负载挺高的,然后ps看一下进程,发现许多任务计划在跑;写脚本杀掉这些在跑的进程;另外写脚本杀掉启东的脚本;

ps aux |awk -F'' '$8=="R" {print $2}' |xargs kill -9;
ps aux |awk -F'' '$11=="/bin/sh" {print $2}' |xargs kill -9
九,写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次:

2014-09-29 10:11
eth0 input: 1000bps
eth0 output : 200000bps
################
2014-09-29 10:12
eth0 input: 1000bps
eth0 output : 200000bps
#!/bin/bash
#Writen at 2014-09-30
while :;
do
d=`date +%F\ %H:%M`
sar=/tmp/sar.txt
sar -n DEV 1 59 >$sar
input=`grep 'Average' $sar|awk '$2~/eth0/{print $5}'|awk -F'.' '{print $1}'`
output=`grep 'Average' $sar|awk '$2~/eth0/{print $6}'|awk -F'.' '{print $1}'`
echo $d>>sar.log
echo "eth0 input:`expr $input \* 8 \* 1000`bps">>sar.log
echo "eth0 output:`expr $output \* 8 \* 1000`bps">>sar.log
echo "####################">>sar.log
done
#!/bin/bash
touch networkflow.log
while : ;do
data +%F' '%H:%m>>networkflow.log
sar -n DEV 1 59 |awk '/Average/&&/eth*/{print $2" input:" $5*8*1024"bps";print$2" output:" $6*8*1024"bps"}'>>networkflow.log
echo "################">>networkflow.log
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell