SHELL-脚本

作者dmxsp

11月 9, 2023

用户猜数字

[root@shell ~]# cat /server/num.sh
#!/bin/bash
# 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
# 猜小了或猜大了,直至用户猜对脚本结束。
# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
# 使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
echo "$num"
# 使用 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

查看有多少远程的 IP 在连接本机

[root@shell ~]# cat /server/ip.sh
#!/bin/bash

#!/bin/bash
# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计)

# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
netstat -atn | awk '{print $5}' | awk '{print $1}' | sort -nr | uniq -c

脚本编写 剪刀 、 石头、布游戏

if

#!/bin/bash
# 随机选择电脑的拳头
computer=$[$RANDOM%3+1]
# 提示用户选择拳头
echo "请选择你的出拳(1.石头 2.剪刀 3.布)"
read user
# 判断输赢
if [ $computer -eq $user ]; then
    echo "平局"
elif [ $computer -gt $user ]; then
     echo "你输了"
elif [ $user -gt 3 ]; then
      echo "输入错误"
else
   echo "你赢了"   
fi

case

[root@shell /server/scripts]$ cat shi1.sh 
#!/bin/bash

# 随机选择计算机出的拳
comp=$((RANDOM%3))

# 提示用户选择拳
echo "请选择:0-布,1-石头,2-剪刀"
read choice

# 判断用户的选择
case $choice in
    0)
       if [ $comp -eq 0 ]; then
           echo "平局"
       elif [ $comp -eq 1 ]; then
           echo "你赢了"
       else
           echo "计算机赢了"
       fi
       ;;
   1)
       if [ $comp -eq 1 ]; then
            echo "平局"
       elif [ $comp -eq 2 ]; then
            echo "你赢了"
       else
            echo "计算机赢了"
       fi
       ;;
    2)
       if [ $comp -eq 2 ]; then
          echo "平局"
       elif [ $comp -eq 0 ]; then
           echo "你赢了"
       else
           echo "计算机赢了"
        fi
        ;;
    *)
        if [ $choice -gt 2 ]; then
            echo "输入无效,请输入0、1或2"
        fi
esac

Nginx启动脚本

[root@shell /server/scripts]$ cat nginx.sh
#!/bin/sh
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
result=$1
Te(){
                 if [ $? -eq 0 ];then
                    action “Nginx is $result”   /bin/true
                 fi
}
case $1 in
start)
       pid=`ps axu|grep nginx|grep master|awk ‘{print $2}’|wc -l`
             if [ $pid -eq 0 ];then
         /usr/sbin/nginx
Te
     else
                echo  “Nginx已经在运行中………”
             fi
;;
stop)
    /usr/sbin/nginx -s stop
      Te
;;
restart)
    /usr/sbin/nginx -s stop
    sleep 1
    /usr/sbin/nginx
     Te
        ;;
        reload)
    /usr/sbin/nginx -s reload
     Te
;;
status)
    Port=`netstat -tnulp|grep nginx|grep master|awk ‘{print $4}’|head -1`
    Pid=`ps axu|grep nginx|grep master|awk ‘{print $2}’`
            echo “当前Nginx的端口号: ” $Port
            echo “当前Nginx的PID: ” $Pid
;;
*)
echo “USAGE: $0 [start|stop|restart|reload|status]”
esac

Te()函数通常用于在脚本中执行某个动作,并根据其返回的状态来决定下一步的操作。这种模式常用于自动化脚本中,特别是在需要根据前一步骤的成功与否来决定后续步骤的情况下

Te()函数在Shell脚本中的具体作用取决于它在脚本中的上下文。一般来说,它可能是一个自定义的函数,用于执行特定的命令或脚本,并通过返回的状态来影响脚本的流程。

在提供的脚本片段中,Te()函数被用在了一个nginx的管理脚本中,这个脚本用于启动、停止、重启等操作nginx服务。当执行某个操作(如启动nginx)时,脚本会调用Te()函数,该函数会检查上一条命令的退出状态(通过$?获取),如果退出状态为0(意味着上条命令成功执行),则执行/bin/true,否则执行/bin/false。这样做的目的是为了在脚本中根据命令的执行情况做出相应的逻辑判断。

脚本首先检查是否存在/etc/init.d/functions文件,如果存在,则加载该文件以获取必要的环境配置和函数定义。随后,脚本定义了一个名为Te的函数,该函数用于执行实际的Nginx管理操作,并在操作成功完成后输出相关信息。

Te函数接受一个参数$1,该参数决定了要执行的具体操作。脚本使用case语句来匹配$ 1与预期的动作,并对每个动作执行相应的命令。

jumpserver跳板机脚本

[root@shell /server/scripts]$ cat jumpserver.sh
#!/bin/bash
WEB01=10.0.0.45
WEB02=10.0.0.145
WEB03=10.0.0.9
MySQL=10.0.0.51
NFS=10.0.0.31
BACKUP=10.0.0.41
trap “echo 不要乱按” HUP INT TSTP
while true
do
au(){
cat<<EOF
      1.运维
      2.开发
EOF
}
au
OPS(){
cat<<EOF
1.WEB01=10.0.0.45
2.WEB02=10.0.0.145
3.WEB03=10.0.0.9
4.MySQL=10.0.0.51
5.NFS=10.0.0.31
6.BACKUP=10.0.0.41
        7.显示菜单
        8.返回上一级菜单
9.休息一下
EOF
}
DEV(){
cat<<EOF
                        1.WEB01=10.0.0.45
                        2.BACKUP=10.0.0.41
        3.显示菜单
EOF
}
read -p “请输入你的身份你是运维还是开发请选择:[1:2] ” num
if [ $num -eq 1 ];then
   while true
   do
   read -s -p “请输入运维的密码: ” pass
           let i++
           if [ $i -eq 4 ];then
               echo “密码输入错误次数过多 2秒后重试”
         sleep 2
               #read -p “请输入邮箱找回密码: ” p
              # if [ `grep -w $p|mail.txt|wc -l` -eq 1  ];then
       #  echo “1 > sendmail $p”
               #fi
           fi
   if [ $pass = “1” ];then
while true
do
   OPS
   read -p “请输入你要连接服务器的编号或者IP地址: ” num1
   case $num1 in
      1)
ssh root@$WEB01
      ;;
      2)
ssh root@$WEB02
      ;;
      yunwei)
exit
      ;;
      8)
break 2
      ;;
      9)
exit
      ;;
      *)
   esac
done
    else
echo “密码输入错误请重新输入”
continue
    fi
    done
else
   while true
   do
   read -s -p “请输入开发的密码: ” pass
           let i++
           if [ $i -eq 4 ];then
               echo “密码输入错误次数过多 2秒后重试”
         sleep 2
               #read -p “请输入邮箱找回密码: ” p
              # if [ `grep -w $p|mail.txt|wc -l` -eq 1  ];then
       #  echo “1 > sendmail $p”
               #fi
           fi
   if [ $pass = “12” ];then
while true
do
   DEV
   read -p “请输入你要连接服务器的编号或者IP地址: ” num1
   case $num1 in
      1)
ssh root@$WEB01
      ;;
      2)
ssh root@$WEB02
      ;;
      woshikaifa)
exit
      ;;
      *)
   esac
done
    else
echo “密码输入错误请重新输入”
continue
    fi
    done
fi
done

中午吃什么

[root@shell /server/scripts]$ cat zwcsm1.sh
#!/bin/bash

# 生成一个1到10之间的随机数
random_num=$((RANDOM % 10 + 1))

for shu in {1..10}
do
if [ $shu -eq $random_num ]; then
if [ $shu -eq 1 ]; then
echo “中午吃水饺…….”
elif [ $shu -eq 2 ]; then
echo “中午吃牛肉粉……”
elif [ $shu -eq 3 ]; then
echo “中午吃炒饼……”
elif [ $shu -eq 4 ]; then
echo “中午吃板面……”
elif [ $shu -eq 5 ]; then
echo “中午吃小火锅……”
elif [ $shu -eq 6 ]; then
echo “中午吃米饭……”
elif [ $shu -eq 7 ]; then
echo “中午吃包子……”
elif [ $shu -eq 8 ]; then
echo “中午吃炒面……”
elif [ $shu -eq 9 ]; then
echo “中午吃随缘……”
elif [ $shu -eq 10 ]; then
echo “减肥”
fi
break
fi
done

[root@shell /server/scripts]$ cat zwcsm2.sh
#!/bin/bash

# 生成1到10之间的随机数
shu=$((RANDOM % 10 + 1))

for ((i = 1; i <= 1; i++)); do
if [ $shu -eq 1 ]; then
echo “中午吃水饺…….”
elif [ $shu -eq 2 ]; then
echo “中午吃牛肉粉……”
elif [ $shu -eq 3 ]; then
echo “中午吃炒饼……”
elif [ $shu -eq 4 ]; then
echo “中午吃板面……”
elif [ $shu -eq 5 ]; then
echo “中午吃小火锅……”
elif [ $shu -eq 6 ]; then
echo “中午吃米饭……”
elif [ $shu -eq 7 ]; then
echo “中午吃包子……”
elif [ $shu -eq 8 ]; then
echo “中午吃炒面……”
elif [ $shu -eq 9 ]; then
echo “中午吃随缘……”
elif [ $shu -eq 10 ]; then
echo “减肥”
fi
done

 

[root@shell /server/scripts]$ cat zwcsm.sh
while true
do
shu=`echo $((RANDOM%10+1))`
case $shu in
1)
echo “中午吃水饺…….”
exit
;;
2)
echo “中午吃牛肉粉……”
exit
;;
3)
echo “中午吃炒饼……”
exit
;;
4)
echo “中午吃板面……”
exit
;;
5)
echo “中午吃小火锅……”
exit
;;
6)
echo “中午吃米饭……”
exit
;;
7)
echo “中午吃包子……”
exit
;;
8)
echo “中午吃炒面……”
exit
;;
9)
echo “中午吃麻辣烫……”
exit
;;

*)
echo “中午减肥”
exit
esac
done

 

作者 dmxsp

发表回复

您的电子邮箱地址不会被公开。