shell脚本实用案列

shell脚本实用案列

  1. 添加用户
#!/bin/bash
useradd $1
echo $2 | passwd --stdin $1 &> /dev/null
2、打包log
#!/bin/bash
tar -zcvf /root/log/log-`date +%Y%m%d-%H:%M:%S`.tar.gz  /var/log
  1. 打包/var/log 文件加时间戳 加入crontab
#!/bin/bash
tar -zcvf /root/log/log-`date +%Y%m%d-%H:%M:%S`.tar.gz  /var/log

Crontab -e
0 0 * * *



| | | | |

| | | | ±---- 星期 (0 - 7) (Sunday=0 or 7)

| | | ±--------- 月 (1 - 12)

| | ±-------------- 日 (1 - 31)

| ±------------------- 时 (0 - 23)

±------------------------ 分 (0 - 59)
3. 硬盘内存报警

  #!/bin/bash
  disk_size=$(df  | awk '/\/$/{print $4}')
  echo $disk_size
  mem_size=$(free | awk '/Mem/{print $4}')
  echo $mem_size
  while :
  do
  	if [ $disk_size -le 512000 -o $mem_size -le 1024000 ]; then
   
              echo "资源不足"
       else
              echo "ok"
       fi
  done
  1. 100取余随机数猜数字
   #!/bin/bash
   num=$[RANDOM%100+1]
   echo $num
   while :
   do
       read -p "计算一个100内的随机数:" cai
       if [ $cai -eq $num ];then
           echo "猜对了"
       elif  [ $cai -gt $num ];then
          echo "猜大了"
      else
          echo "猜小了"
      fi
  done 
  1. 判断是否为root用户并安装open-server
#!/bin/bash
if [ $USER == "root" ];then
    yum -y install open-server
else
    echo "不是超级管理员"
fi
  1. 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。
#!/bin/bash
read -p "输入账户:" user

read -p "输入密码:" pass

if [ -z $user ];then
    echo "必须输入账号"
    exit 2
fi

if [ -z $pass ];then
    pass=123456
    useradd $user
    echo $pass | passwd --stdin  $user
else
    useradd $user
    echo $pass | passwd --stdin  $user
fi

  1. 输入三个数并进行升序排序
#!/bin/bash
read -p "输入数字"  a
read -p "输入数字"  b
read -p "输入数字"  c

tem=0
if [ $a -gt $b ];then
    tem=$a
    a=$b
    b=$tem

fi
echo $a, $b, $c

if [ $b -gt $c ];then
    tem=$b
    b=$c
    c=$tem

fi
echo $a, $b, $c

if [ $a -gt $b ];then
    tem=$a
    a=$b
    b=$tem
fi
echo $a, $b, $c

  1. 石头、剪刀、布游戏
#!/bin/bash
game=(石头 剪刀 不)

#nu=$(($RANDOM%3))
while :
do
    game1=${game[$(($RANDOM%3))]}
  
    read -p "输入石头剪刀布:" cai

    if [ $cai == $game1 ];then
        echo "猜对了"
        break
    else
        echo "猜错了,继续"
    fi
done
  1. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)
#!/bin/bash
for ip in 192.168.0.{1..254}
do
    echo $ip
    ping -c 2 -W 1 $ip &>/dev/null

    if [ $? -eq 0 ];then
        echo "$ip is up"
    else
        echo "$ip is down"
    fi
done
wait

  1. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)
#!/bin/bash
# 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机
# 状态(多进程版)
 
#定义一个函数,ping 某一台主机,并检测主机的存活状态
myping(){
ping ‐c 2 ‐i 0.3 ‐W 1 $1  &>/dev/null
if  [ $? -eq 0 ];then
	echo "$1 is up"
else
	echo "$1 is down"
fi
}
for i in {1..254}
do
   	myping 192.168.4.$i &
done
# 使用&符号,将执行的函数放入后台执行
# 这样做的好处是不需要等待ping第一台主机的回应,就可以继续并发ping第二台主机,依次类推。
————————————————
版权声明:本文为CSDN博主「baiduoWang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yugemengjing/article/details/82469785
  1. 编写脚本,显示进度条

$0 :shell文件本身名

这里拓展以下:

$$    Shell本身的PID(ProcessID)

$!    Shell最后运行的后台Process的PID

$?    最后运行的命令的结束代码(返回值)

$-    使用Set命令设定的Flag一览

” ∗         所 有 参 数 列 表 。 如 ” ”*    所有参数列表。如”     *”用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。

@         所 有 参 数 列 表 。 如 ” @    所有参数列表。如” @    @”用「”」括起来的情况、以”$1″ “ 2 ” … “ 2” … “ 2n” 的形式输出所有参数。

$#    添加到Shell的参数个数

$0    Shell本身的文件名

1 ~ 1~ 1n  添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

#!/bin/bash
#显示$! 必须赋予脚本可执行权限,
progress_bar(){

    while :
    do
        echo -n "#"
        sleep 0.2
    done

}
progress_bar &  #后台运行
pid=$! #查看后台运行的pid
cp -a /etc /backup
sleep 5
kill $pid   #删除后台运行函数 progress_bar
echo "ok"

  1. 进度条,动态时针版本;定义一个显示进度的函数,屏幕快速显示| / ‐ \
#!/bin/bash
count=0
    while :
    do
        count=`expr $count + 1`
        case $count in
            1)
                echo -e "-""\b\c"
                sleep $time
                ;;
            2)  
                echo -e '\\'"\b\c"
                sleep $time
                ;;
            3)  
                echo -e  "|""\b\c"
                sleep $time
                ;;
            4)  
                echo -e  "/""\b\c"
                sleep $time
                ;;
            *)  
                count=0
        esac            
    done    
}
dongtai

  1. 9*9 乘法表
#!/bin/bash
for((i=1;i<=9;i++))
do
    for((j=1;j<=i;j++))
    do
        echo -e "$j*$i""\t\c"
    done
    echo ""
done
  1. 使用死循环显示 eth0 网卡发送的数据包流量
#!/bin/bash
while :
do
    rx=$(ifconfig ens33 | grep "RX packets" | awk '{print $3}')
    tx=$(ifconfig ens33 | grep "TX packets" | awk '{print $3}')

    echo "RX:$rx"
    echo "TX:$tx"
    sleep 2

done

  1. 使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息
    for版本
#!/bin/bash
for i in `cat /root/shell/user.txt`
do
   
    useradd $i
    echo "123456" | passwd --stdin $i
done

while版本

#!/bin/bash
cat user.txt | while read line
do

    useradd $i
    echo "123456" | passwd --stdin $i
done

while版本

#!/bin/bash
while read line
do
    echo $line
done < user.txt
  1. List item
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值