Shell Script - Livret (1)

1.for - créer des utilisateurs par lots

[root@Kiro for]# vim useradd.sh

#!/bin/bash
user=`cat /root/shell/users2.txt`

for name in $user
do
        useradd $name
        echo "123456"|passwd --stdin $name &> /dev/null
done

insérez la description de l'image ici

2.for - quatre-vingt-dix-neuf table de multiplication

[root@Kiro for]# vim 99.sh
#!/bin/bash
for i in {
    
    9..1..-1}
do
  for j in `seq $i`
  do
  echo -e -n "${i}x${j}=$[ $i * $j ]\t"
  done
echo
done

insérez la description de l'image ici

3. Trois chances de deviner le mot de passe

[root@Kiro for]# vim passwd.sh

#!/bin/bash
init=123456
for i in {
    
    1..3}
do
read -p "请输入密码:" pass
        if [ $pass == $init ];then
        echo "密码正确"
        exit
        fi
done

insérez la description de l'image ici

4. Vérifiez l'état de l'hôte en fonction de la liste d'adresses IP

#!/bin/bash

IPLIST=$(cat /root/shell/ip.txt)
for IP in $IPLIST
do
ping -c 3 -i 0.5 $IP &> /dev/null
        if [ $? -eq 0 ];then
        echo "host $IP is up."
      else
        echo "host $IP is down."
      fi
done

insérez la description de l'image ici

5. Déterminez s'il existe un service httpd, sinon installez-le immédiatement

#!/bin/bash

#案例:查看是否有httpd服务,没有的话下载并打开
ps -aux | grep httpd |grep -v grep &>/dev/null

if [ $? -ne 0 ];then
        if [[ "$(rpm -q httpd )"=="未安装软件包 httpd" ]];then
        echo "正在启动Apache服务..."  &>/dev/null
        yum install -y httpd  &>/dev/null
        systemctl restart httpd
        echo "Apache服务已经启动"
        else
        systemctl restart httpd
        fi
else
        echo "httpd is running"
fi

insérez la description de l'image ici

6. Déterminer si l'utilisateur actuel est un super utilisateur

#!/bin/bash
--------字符方式---------
if [ $USER = '/root' ];then
        echo "您为超级用户,准备安装vsftpd"
        yum install -y vsftpd &>/dev/null
        systemctl start vsftpd
        echo "正在启动vsftpd服务........"
else
        echo "您不是管理员!"
fi
--------UID方式---------
if [ $UID -eq 0  ];then
        echo "当前用户超级用户!"
        yum install -y vsftpd &> /dev/null
        systemctl start vsftpd
        echo "正在启动vsftpd服务中........"
else
    echo "您不是超级用户!"
fi

insérez la description de l'image ici

7. Identifier les saisons par mois

#!/bin/bash

read -p "输入月份判别季节:" month

case $month in
[1-3])
  echo "$month月 是春天!"
;;

[4-6])
  echo "$month月 是夏天!"
;;

[7-9])
  echo "$month月 是秋天!"
;;

1[0-2])
  echo "$month月 是冬天!"
;;

*)
echo "输入有误!请输入1-12!"
esac

insérez la description de l'image ici
insérez la description de l'image ici

8. Trouvez des fichiers dans /var/log et comptez le nombre

#!/bin/bash
cd /var/log/
num=`ls -l | wc -l`
echo "$num"
a=0
for ((i=0;i<$num;i++))
do
   file=`find /var/log -name "*.log" -type f `
   if [ $? -eq 0 ];then
       let ++a
   else
       echo "无此类日志文件"
   fi
done
echo "所有的日志文件:$file"
echo "文件数量:$a"  

insérez la description de l'image ici

9. Vérifiez l'état de la connexion de l'hôte sur lequel se trouve le segment de réseau


#!/bin/bash
net=192.168.61

for i in {
    
    1..254}
do
        ping -c 3 -i 0.3 $net.$i &> /dev/null
if  [ $? -eq 0 ];then
        echo "$net.$i is up."
        else
        echo "$net.$i is dowm."
fi
done

insérez la description de l'image ici

10. Numéro de fichier de statistiques de chemin d'entrée

#/bin/bash
read -p "请输入路径(直接换行表示当前目录):" fpath

if [ "$fpath" = "" ]
then
    fpath=$(pwd)
fi

directory()
{
    
    
    echo "您输入的路径为:$fpath"
    let "filenum = 0"
    let "dirnum = 0"
    for dir in ${fpath}/*
    do
        if [ -d "$dir" ]
        then
        let "dirnum+=1"
        elif [ -f "$dir" ]
        then
        let "filenum+=1"
        fi
    done
    echo "当前目录下文件夹的个数: $dirnum"
    echo "当前目录下文件的个数: $filenum"
}
directory       

insérez la description de l'image ici

11. Devinez le prix

#!/bin/bash
price=$[RANDOM%1000]
times=0
echo "猜猜价格!"
while true 
do
        read -p "输入你猜测的价格:" num
        let times++
        if [ $num -eq $price ];then
          echo "恭喜你答对啦!"
          echo "你总共猜了$times次"
        break
        elif [ $num -lt $price ];then
          echo "有点小了!再猜猜!"
        elif [ $num -gt $price ];then
          echo "有点大了!再猜猜!"
        else
          echo "输入有误!"
        fi
done

insérez la description de l'image ici

12. Générer un mot de passe aléatoire

==Pour utiliser la commande mkpasswd, vous devez d'abord installer expect

[root@Kiro homework]# vim 1.sh

#!/bin/bash
#!/bin/bash
mkpasswd -l 6 -s 1 -C 1 -c 1 -d 1
#  -c:定义在密码中小写字母字符的最小数目,默认值是2
#  -C:定义在密码中大写字母字符的最小数目,默认值是2
#  -s:定义在密码中特殊字符的最小数目,默认值是1
#  -p:指定程序来设置密码,默认情况下,如果存在使用/etc/yppasswd,否则使用/bin/passwd
#  -d:定义密码的最小数目,默认值为2
#  -l:定义口令的长度,默认值为9
#  -v:导致密码设置互动可见

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/m0_61744194/article/details/124454357
conseillé
Classement