开箱即用的shell脚本(一)

目录

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

 二、初始化脚本

三、nginx启动脚本

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

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

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

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

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

九、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

十、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)

十一、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while 版本)

十二、创建多个用户

​十三、删除多个有规律的用户

​十四、九九乘法表

 十五、剪子包袱锤

 十六、猜大小

 十七、关于$*与$@的验证

​编辑 十八、使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

十九、现有学生成绩与对应等级:0~60:D、61~80 C、81~90 B、91~100 A,编写脚本实现当输入范围区间内的数字时打印出对应的等级,输入其他字符时提示“请输入正确数字”并退出脚本?


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

vim  useradd.sh

#!/bin/bash
#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
useradd "$1"
echo "$2" | passwd --stdin "$1"    

开箱即用的shell脚本(一)_第1张图片                      

 二、初始化脚本

#!/bin/bash
#init(初始化) environment(环境)

#firewalld configure
fw(){
    systemctl status firewalld  >> /dev/zero
    if [ $? -ne 0 ];then
        echo "Firewalld is disabled!"
    else
        systemctl stop firewalld
        sleep 3
        echo "Firewalld stop successful!"
    fi
}
#network configure
net(){
    nic=`ifconfig | awk -F : 'NR==1{print $1}'`
    systemctl status NetworkManager > /dev/zero
    if [ $? -ne 0 ];then
        echo "NetworkManager is disabled!"
    else
        systemctl stop NetworkManager
        sleep 3
        echo "NetworkManager stop successful!"
    fi
    cat << eof > /etc/sysconfig/network-scripts/ifcfg-$nic
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=$nic
    DEVICE=$nic
    ONBOOT=yes
    IPADDR=192.168.100.1
    PREFIX=24
    GATEWAY=192.168.100.254
    DNS1=192.168.100.254
eof
    systemctl restart network > /dev/zero
    sleep 2
    echo "IP address be OK!"
}
#selinux configure
se(){
    text=`awk -F = '/SELINUX=e/{print $2}' /etc/selinux/config`
    if [ -z $text ];then
        echo "selinux is disable"
    else
        sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
        sleep 2
        echo "selinux is OK!"
    fi
}

#yum configure
yum(){
    yumPath="/etc/yum.repos.d"
    if ! [ -d $yumPath/backup ];then
        mkdir $yumPath/backup
        mv $yumPath/CentOS-* $yumPath/backup
        cat << e > $yumPath/local.repo
        [local]
        name=local
        baseurl=file:///mnt
        enabled=1
        gpgcheck=0
e
        umount /mnt
        mount /dev/sr0 /mnt > /dev/zero
        sleep 2
        echo "yum configure is OK!"
    else
        echo "$yumPath/backup is existed!"
    fi
}
#kernel configure
kernel(){
    ktext=`grep "net.ipv4.ip_forward" /etc/sysctl.conf`
    if ! [ -z $ktext ];then
        echo "route be config!"
    else
        echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
        sysctl -p  >> /dev/zero
        sleep 2
        echo "route is OK"
    fi
}

#configing
fw
net
se
yum
kernel

三、nginx启动脚本

#!/bin/bash
nginx_cmd="/usr/local/nginx/sbin/nginx"
two=$2
start(){
     if [ -z $two ];then
                $nginx_cmd -c /usr/local/nginx/conf/nginx.conf
        else
                $nginx_cmd -c $two
        fi
}
stop(){
    if [ -z $two ];then
        $nginx_cmd -s stop -c /usr/local/nginx/conf/nginx.conf
    else
        $nginx_cmd -s stop -c $two
    fi
}
case $1 in
start)
    start
;;
stop)
    stop
;;
reload)
    if [ -z $2 ];then
        $nginx_cmd -s reload -c /usr/local/nginx/conf/nginx.conf
    else
        $nginx_cmd -s reload -c $2
    fi
;;
restart)
    stop
    start
;;    
*)
    echo 'USEAGE: $1:start|stop|reload;$2:/usr/loca/nginx/conf/nginx.conf(default) OR other configure path!'
;;
esac

#注意:此脚本为编译安装nginx之后的脚本

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

#vim  /root/logbak.sh
#编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
#注意 date 命令需要使用反引号括起来,反引号在键盘键上面
tar    -czf    log-`date +%Y%m%d`.tar.gz    /var/log
# crontab ‐e                             #编写计划任务,执行备份脚本
00    03    *    *    5      /root/logbak.sh

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

#!/bin/bash
memFree=`free-m | awk 'NR==2{print $4}'`     #memory  内存
diskFree=`df -m | awk '/\//{print $4}'`
while true
do
if [ $memFree -lt 500 ] || [ $diskFree -lt 1000 ];then
        echo "memory or disk is not enough! please check the mail for root!"
        mail -s warning root << e
        SOS
e
fi
done

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

#!/bin/bash
#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数
#使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
#使用 read 提示用户猜数字
#使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小
于等于)
while  :
do
      read ‐p  "计算机生成了一个 1‐100 的随机数,你猜: "  cai
      if   [  $cai  ‐eq   $num  ];then
             echo   "恭喜,猜对了"
             exit
      elif  [  $cai   ‐gt   $num  ];then
             echo   "Oops,猜大了"
      else
             echo   "Oops,猜小了"
      fi
done

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

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

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

#!/bin/bash
if  [  $UID  ‐eq  0  ];then
         yum  ‐y  install   vsftpd
else
        echo "您不是管理员,没有权限安装软件"
fi

九、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

#!/bin/bash
read -p "Please input username:" un
read -p "please input password:" up
if [ -z $un ];then
        echo "Please input username!"
        exit
else
        if [ -z $up ];then
                useradd $un
                echo "123456" | passwd --stdin $un   >> /dev/zero
                echo "Your username is $un,Your password is 123456"
        else
                useradd $un
                echo $up | passwd --stdin $un  >> /dev/zero
                echo "Your username is $un,Your password is $up"
        fi
fi

十、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)

#!/bin/bash
for i in `seq 1 254`
do
        ping -c 3 -w 1 192.168.4.$i >> /dev/zero
        if [ $? -eq 0 ];then
                echo "192.168.4.$i is up"  >> /opt/up.txt
        else
                echo "192.168.4.$i is down" >> /opt/down.txt
        fi
done

十一、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while 版本)

#!/bin/bash
i=1
while  [  $i  ‐le  254 ]
do
          ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i  &>/dev/null
         if  [ $? –eq 0 ];then
               echo "192.168.4.$i is up"
         else
               echo  "192.168.4.$i is down"
         fi
         let i++
done

十二、创建多个用户

vim    for.sh

开箱即用的shell脚本(一)_第2张图片

开箱即用的shell脚本(一)_第3张图片 

开箱即用的shell脚本(一)_第4张图片 十三、删除多个有规律的用户

vim   user_del.sh

开箱即用的shell脚本(一)_第5张图片

十四、九九乘法表

方法一:

开箱即用的shell脚本(一)_第6张图片

 方法二:

开箱即用的shell脚本(一)_第7张图片

#`-e`:启用转义字符,如`\n`表示换行符、`\t`表示制表符等。

#`-n`:不输出末尾的换行符。

 结果:

开箱即用的shell脚本(一)_第8张图片

 #注意:外层循环控制行,里层循环控制列

 十五、剪子包袱锤

开箱即用的shell脚本(一)_第9张图片

开箱即用的shell脚本(一)_第10张图片

 十六、猜大小

开箱即用的shell脚本(一)_第11张图片

结果:

开箱即用的shell脚本(一)_第12张图片

 十七、关于$*与$@的验证

开箱即用的shell脚本(一)_第13张图片

开箱即用的shell脚本(一)_第14张图片 十八、使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

#!/bin/bash
#本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息
for  i  in  `cat  user.txt`
do
         useradd  $i
         echo "123456" | passwd ‐‐stdin $i
done

十九、现有学生成绩与对应等级:0~60:D、61~80 C、81~90 B、91~100 A,编写脚本实现当输入范围区间内的数字时打印出对应的等级,输入其他字符时提示“请输入正确数字”并退出脚本?

开箱即用的shell脚本(一)_第15张图片

 

 

 

你可能感兴趣的:(linux,运维,服务器)