shell小脚本练习

  1. 用户猜数字
# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
# 使用取余算法将随机数变为 1‐100 的随机数

#!/bin/bash

num=$[RANDOM%100+1]

while :
        do
                read -p "计算机生成一个1-100的随机数,你猜: " cai
                if [ $cai -eq $num ]
                then
                        echo "恭喜,猜对了"
                        exit
                elif [ $cai -gt $num ]
                then
                        echo "太大了"
                else
                        echo "太小了"
                fi
        done
  1. 查看远程的IP连接数量
# 使用 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
  1. 细狗
function example{
    echo "细狗,你行不行"
}
example
  1. 九九乘法表
#!/bin/bash

for i in `seq 9`
do
    for j in `seq $i`
    do
        echo -n "$j*$i=$[i*j] "
    done
        echo
done
  1. 剪刀石头布游戏
#!/bin/bash

game=(石头 剪刀 布)
num=$[RANDOM%3]
me=${game[$num]}

echo "请根据下列提示选择"
echo "1.石头"
echo "2.剪刀"
echo "3.布"

read -p "请选择1-3: " person
case $you in
1)
    if [ $num -eq 0]
    then
        echo "就这,也没有赢啊"
    elif [ $num -eq 1]
    then
        echo "算你厉害"
    else
        eecho "细狗,你行不行啊"
    fi;;
2)
    if [ $num -eq 0 ]
    then
        echo "细狗,你行不行啊"
    elif [ $num -eq 1 ]
    then
        echo "就这,也没有赢啊"
    else
        echo "算你厉害"
    fi;;
3)
    if [ $num -eq 0 ]
    then
        echo "算你厉害"
    elif [ $num -eq 1 ]
    then
        echo "细狗,行不行啊"
    else
        echo "就这,你也没有赢"
    fi;;
*)
    echo "必须输入1-3的数字"
esac
  1. 检查当前用户是否是超级管理员
#!/bin/bash

if [ $USER == "root" ]
then
    echo "当前用户是超级管理员"
else
    echo "当前用户不是管理员"
fi
  1. 脚本 杀掉 tomcat 进程并重新启动
#!/bin/bash

#kill tomcat pid

pidlist=`ps -ef|grep apache-tomcat-7.0.75|grep -v "grep"|awk '{print $2}'`  #找到tomcat的PID号

echo "tomcat Id list :$pidlist"  //显示pid

kill -9 $pidlist  #杀掉改进程

echo "KILL $pidlist:" //提示进程以及被杀掉

echo "service stop success"

echo "start tomcat"

cd /opt/apache-tomcat-7.0.75

pwd 
 
rm -rf work/*

cd bin

./startup.sh #;tail -f ../logs/catalina.out
  1. 统计可以登录计算机的用户个数
grep "bash$" /etc/passwd | wc -l
  1. 测试网段中主机开放状态
#!/bin/bash

for i in {1..254}
do
    ping -c 2 -i 0.3 -W 1 192.168.1.$i &>/dev/null
    if [ $? -eq 0 ]
    then
        eccho "192.168.1.$i is up"
    else
        echo "192.168.1.$i is down"
        fi
done
  1. 脚本创建用户
#!/bin/bash
# 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户
# 不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默
# 认的 123456 作为默认密码。

read -p "请输入用户名: " user
#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为 2
#没有输入用户名脚本退出后,使用$?查看的返回码为 2
if [ -z $user ]
then
    echo "你需要输入账号名"
    exit 2
fi
#使用 stty ‐echo 关闭 shell 的回显功能
#使用 stty  echo 打开 shell 的回显功能
stty -echo
read -p "请输入密码: " pass
stty echo
pass=${pass:-123456}
useradd "$user"
echo "$pass" | passwd --stdin "$user"
  1. 三个数的比较
read -p "请输入一个整数: " num1
read -p "请输入一个整数:  " num2
read -p "请输入一个整数:  " num3

temp=0

if [ $num1 -gt $num2 ]
then
    temp=$num1
    num1=$num2
    num2=$temp
fi

if [ $num1 -gt $num3 ]
then
    temp=$num1
    num1=$num3
    num3=$temp
fi

if [ $num2 -gt $num3 ]
then
    temp=$num2
    num2=$num3
    num3=$temp
fi

echo "排序后数据(从小到大)为:$num1,$num2,$num3"
  1. 每周5使用tar命令备份/var/log下的所有日志文件
#!/bin/bash
tar -czf loog-`date +%Y%m%d`.tar.gz /var/log
crontab -e 
00 00 * * 5 /home/wenmin/datas/logbak.sh
  1. 函数运算
#!/bin/bash

function sum()
{
    s=0
    s=$[$1+$2]
    echo $s
}
read -p "input first num: " num1
read -p "input second num: " num2

sum $num1 $num2

num1=1
num2=3
let v3=$num1+$num2
echo $3
  1. 监控内存和硬盘
#!/bin/bash

disk_size=$(df / awk '/\//{print $4}')

mem_size=$(free | awk '/Mem/{print $4}')

while :
do
    if [ $disk_size -le 512000 -a $mem_size -le 1024000 ]
    then
        mail -s "Waring" root << EOF
        Insufficient resources,资源不足
        EOF
    fi
done
  1. 检查是否存在对应的文件
#!/bin/bash
read -p "input you want  search file: " file
if [ -f /root/$file ]
then
    echo "file exists
fi
posted @   kalixcn  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示