shenll 案例1

1.通过位置变量创建 Linux 系统账户及密码

#!/bin/bash
# 通过位置变量创建系统账户及密码
# $# 表示脚本后面接了多少个参数 $n 表示第几个参数 && 逻辑与
if [ $# -eq 0 -o $# -eq 1 ];then
        echo "usage: ./addUser.sh 添加的账户 设置账户密码"
        exit 0;
fi
# $0 表示执行的脚本 $1 表示执行脚本后面接的第一个参数 $2 表示第二个参数
# 双引号中的$保留特殊含义,会输出转换成变量的值;单引号中的任何值都不会做特殊解释,$也不会转换成变量的值
useradd "$1"
# 管道符后面命令为更改用户密码,加上--stdin是接受echo后面的字符串($2)作为密码
echo "$2" | passwd --stdin "$1"

  

 

传参数建立账户和密码

 

 


2.每周 5 使用 tar 命令备份/var/log 下的所有日志文件

]# vim /root/logbak.sh
tar -czf log-`date +%Y%m%d`.tar.gz /var/log

]# crontab -e -u root
00 03 * * 5 /root/logbak.sh

  

第一个*:一小时中的第几分钟【0-59】

第二个*:一天中的第几个小时【0-23】

第三个*:一个月当中的第几天【1-31】

第四个*:一年中的的第几月【1-12】

第五个*:一周当中对的星期几【0-7 0和7都表示 周日】

 

 

3.监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M
时,发送报警邮件给 root 管理员

#!/bin/bash
aa=`df | awk '{print $4}'|sed -n '2p'` #根分区剩余
bb=`free | awk '{print $4}'|sed -n '2p'` #内存
echo $aa
echo $bb
if [ $aa -gt 512000  -a $bb -gt 100000 ];then
mail -s bayi1604@126.com  <<EOF
Insufficient resources,资源不足
EOF
fi

  

 

4.脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
猜小了或猜大了,直至用户猜对脚本结束。

#!/bin/bash
#RANDOM 为系统自带的系统变量,值为 0-32767 的随机数
a=$[RANDOM%100+1]
echo $a
while :
do
    read -p "计算机生成了一个 1-100 的随机数,你猜: " num
    if [ $num -eq $a ];then
         echo "恭喜,猜对了"
         exit
    elif [ $num -gt $a ];then
         echo "猜大了"
    else
        echo "猜小了"
    fi
don

  

5.检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
是,则提示您非管理员(使用字串对比版本)

if [ $USER == 'root' ]
then
yum ‐y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi

  

6.依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

#!/bin/bash
read -p "请输入一个整数:" num1
read -p "请输入一个整数:" num2
read -p "请输入一个整数:" num3
#不管谁大谁小,最后都打印 echo "$num1,$num2,$num3"
#num1 中永远存最小的值,num2 中永远存中间值,num3 永远存最大值

tmp=0
if [ $num1 -gt $num2 ];then
    tmp=$num1
    num1=$num2
    num2=$tmp
fi

if [ $num1 -gt $num3 ];then
    tmp=$num1
    num1=$num3
    num3=$tmp
fi

if [ $num2 -gt $num3 ];then
    tmp=$num2
    num2=$num3
    num3=$tmp
fi
echo "排序后数据为:$num1,$num2,$num3"

  

7.编写脚本测试 10.0.0.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)

#!/bin/bash
for i in {1..99}
do
  ping -c2 -i0.3 -W1 10.0.0.$i &>/dev/null
  if [ $? -eq 0 ];then
     echo "10.0.0.$i is up"
  else
     echo "10.0.0.$i is down"
  fi
done

  

8.编写批量修改扩展名脚本

#!/bin/bash
read -p "\\给出想修改的扩展名 " exname
read -p "\\给出新的扩展名 " new
read -p "\\给出文件所在目录  " dir
cd $dir
for file in $(ls $dir | grep .$exname)

do
name=`ls $file | cut -d. -f1`
mv $file ${name}.$new
done

  

#!/bin/bash
for i in `ls *.$1`
do
        name=`echo $i |awk -F '.' '{print $1}'`
        echo $name
        mv $i $name.$2

done

  

9.检测 MySQL 数据库连接数量,超过2个时报警并发送邮件给自己邮箱(自己测试)

#!/bin/bash
a=`mysqladmin -uroot  status|awk '{print $4}'`
if [ $a -eq 2  ];then
mail -s 'mysql' 自己的邮箱地址 <<EOF
        Insufficient resources,资源不足
EOF
fi

  

授权一个mysql用户权限让别的IP可以登陆

 

 

 

10.切割nginx日志

logs="/usr/local/nginx/logs/"

mv ${logs}access.log ${logs}access_$(date +"%Y-%m-%d").log

echo "00 00 * * * /bin/bash /root/shell/nginx_log.sh"  >> /var/spool/cron/root

  

posted @ 2020-01-07 09:05  Armored-forces  阅读(178)  评论(0)    收藏  举报