一、four.sh输出用户从健盘输入的任意2个数的四则运算结果

    如果用户有一个数值没有输入,就终止脚本


#!/bin/bash

read -p "请输入第一个数:"  num1

read -p "请输入第二个数:"  num2

[ -z $num1 ] && exit

[ -z $num2 ] && exit

sum=`expr $num1 + $num2`

jian=`expr $num1 - $num2`

cheng=`expr $num1 \* $num2`

chu=`expr $num1 / $num2 `

echo "$num1 + $num2 = $sum"

echo "$num1 - $num2 = $jian"

echo "$num1 * $num2 = $cheng"

echo "$num1 / $num2 = $chu"


2、four_2.sh 把计算的任意两个数通过位置变量的方式传递给脚本计算,如果

   执行脚本时,不给脚本加位置参数或者只加一个位置参数,脚本都不执行


#!/bin/bash

[ -z $1 ] && exit

[ -z $2 ] && exit

sum=`expr $1 + $2`

jian=`expr $1 - $2`

cheng=`expr $1 \* $2`

chu=`expr $1 / $2`

echo "$1 + $2 = $sum"

echo "$1 - $2 = $jian"

echo "$1 * $2 = $cheng"

echo "$1 / $2 = $chu"

#sh four_2.sh 3 5



3、very.ser.sh(检查任意一个服务的运行状态)


   只检查服务vsftpd httpd sshd crond、mysql中任意一个服务的状态,如果不是这5个中的服务,

   就提示用户能够检查的服务名并退出脚本


   如果服务是运行着的就输出 "服务名 is running"


   如果服务没有运行就启动服务



方法1:使用read写脚本

#!/bin/bash

read -p "请输入你的服务名:" service

if [ $service != 'crond' -a $service != 'httpd' -a $service != 'sshd' -a $service != 'mysqld' -a $service != 'vsftpd' ];then

        echo "只能够检查'vsftpd,httpd,crond,mysqld,sshd"

        exit 5

fi

service $service  status &> /dev/null


if [ $? -eq 0 ];thhen

                echo "服务在线"

        else

                service $service start

fi



方法2:使用位置变量来写脚本

if [ -z $1 ];then

echo "You mast specify a servername!"

echo "Usage: `basename$0` servername"

exit 2

fi

if [ $1 == "crond" ] || [ $1 == "mysql" ] || [ $1 == "sshd" ] || [ $1 == "httpd" ] || [ $1 == "vsftpd" ];then

service $1 status &> /dev/null

if [ $? -eq 0 ];then

echo "$1 is running"

else

service $1 start

fi

else

echo "Usage:`basename $0` server name"

echo "But only check for vsftpd httpd sshd crond mysqld" && exit2

fi


4、three_server.sh此脚本能够依次检查mysql crond sshd 3个服务的运行状态


#!/bin/bash

m=mysqld

c=crond

s=sshd


service $m status &> /dev/null


if [ $? -eq 0 ];then


        echo "mysqld服务在线"

else

        echo “mysqld服务不在线”

fi


service $c status &> /dev/null


if [ $? -eq 0 ];then


        echo "crond服务在线"

else

        echo “crond服务不在线”

fi


service $s status &> /dev/null



if [ $? -eq 0 ];then


        echo "sshd服务在线"

else

        echo “sshd服务不在线”

fi



5、根据学生输入的成绩判断学生成绩优劣

   学生成绩的分数范围在1-100区间

   成绩分数大于等于1且小于60  输出不及格

   成绩分数大于等于60且小于80 输出良好

   成绩分数大于等于80且小于等于100 输出优秀

   如果输入的成绩超出的1-100,就输出提示信息 成绩的分数范围在1-100区间


#!/bin/bash

read -p "请输入你的成绩:" fenshu

if [ -z $fenshu  ];then

        echo "成绩不能为空"

        exit

elif [ $fenshu -ge 1 -a $fenshu -lt 60 ];then

        echo “不及格”

elif [ $fenshu -ge 60 -a $fenshu -lt 80 ];then

        echo "良好"

elif [ $fenshu -ge 80 -a $fenshu -le 100 ];then

        echo "优秀"

else

        echo "成绩的分数范围在1-100区间"

fi



6、pri-pc5.sh   把192.168.1.0网段主机的ip地址输出到屏幕上


#!/bin/bash

for i in `seq 254` 

do

        echo $IP.$i

done


7、pri-binlog.sh  把当前已有的binlog日志输出到屏幕上(mysqld-bin.000001.),并拷备到根文夹件上

#!/bin/bash

for i in `cat /var/lib/mysql/*.index`

do

        i=`echo $i | awk -F"/" '{print $2}' `

        cd /var/lib/mysql

        cp $i /

done



8、binlogbackup.sh

   备份新生成的binlog文件,

   备份数据库服务器新生成的binlog日志文件到系统的/logbak目录下,(备过的不备)

   正在使用的binlog日志文件不备份


方法1:

#!/bin/bash

#备份数据库服务器新生成的binlog日志文件到系统的/logbak目录下;

#正在使用的binlog文件不备份

binlogurl=`cat /var/lib/mysql/mysqld-bin.index | awk -F"/" '{print $2}'`    #获取数据库名字

newlog=`cat /var/lib/mysql/mysqld-bin.index | awk -F"/" '{print $2}' | tail -1`  #获取数据库最后一行正在使用的binlog文件名字

x=`cat /var/lib/mysql/mysqld-bin.index | wc -l`   #获取日志文件的行数

y=`ls /logbak | wc -l`  #获取备份目录的行数

z=`expr $x - $y` #日志文件行数-备份的文件目录行数

dblog=`cat /var/lib/mysql/mysqld-bin.index | awk -F"/" '{print $2}' | tail -$z`   #获取没备份的数据库名字

if [ ! -e /logbak ];then

mkdir /logbak

for bl in $binlogurl

do

cp /var/lib/mysql/$bl /logbak

done

rm -rf /logbak/$newlog

else

for bl in $dblog

do

cp /var/lib/mysql/$bl /logbak

done

rm -rf /logbak/$newlog

fi



方法2:

#!/bin/bash

datadir=/var/lib/mysql

backdir=/logbak

lastfilename=`tail -1 $datadir/mysqld-bin.index | awk -F"/" '{print $2}'`

if [  ! -e $backdir ];then

        mkdir $backdir

fi

for logname in `cat $datadir/mysqld-bin.index`

do

        filename=`echo $logname | awk -F"/" '{print $2}'`

        if [ "$filename" == "$lastfilename" ];then

                echo "$lastfilename 正在使用下次再备份" > /dev/null

        else

                if [ ! -e $backdir/$filename ];then

                        cp $datadir/$filename $backdir

                else

                        echo "$filename 已经备份了" > /dev/null

                fi

        fi

done


9、 pc_noline.sh

    输出192.168.1.0/24网段内在线主机的ip地址

    统计不在线主机的台数,

    并把不在线主机的ip地址和不在线时的时间保存到/tmp/ip.txt文件里


#!/bin/bash

ip=192.168.1.

j=0

for i in `seq 10 12`

do

        ping -c 3 $ip$i &> /dev/null

        if [ $? -eq 0 ];then

                echo 在线的主机有:$ip$i

        else

                let j++

                echo $ip$i >> /tmp/ip.txt

                date >> /tmp/ip.txt

        fi

done

echo 不在线的主机台数有 $j



10、输出1到10之间的偶数和奇数的个数

j=0

#!/bin/bash

for i in `seq 10`

do

if [`expr $i % 2` -eq 0 ];then

echo $i

esle

let j++

fi

done

echo $j



11、添加十个用户和密码


#!/bin/bash

j=wsyht

m=abcd

for i  in `seq 3`

do

        useradd $j$i

        echo $m$i | passwd --stdin $j$i

done