【Linux】shell简易脚本收录(保持更新)

1.实现批量添加 20 个用户,用户名为:user1-20,密码为 user 后面跟着 5 个随机字符或数字

[root@localhost ~]# cat useradd.sh
#!/bin/bash 
name="user" 
for number in $(seq 1 20) 
do 
	password=$(cat /dev/urandom | head -1 | md5sum | head -c 5) 
	useradd $name$number 
	echo "user$password" | passwd --stdin user$number &> /dev/null
    echo "$name$number user$password" >> userinfo.txt 
done

执行脚本之后 可以 cat /etc/passwd 查看有没有创建成功

2.脚本计算 1+2+3…. +100=?

[root@localhost ~]# cat number.sh
#!/bin/bash 
num=1 
sum=0 
while [ $num -le 100 ] 
do 
	sum=$(expr $sum + $num) 
	let num++ 
done 
echo "1+2+3...+100="$sum 
[root@localhost ~]# sh number.sh 
1+2+3...+100=5050

3、将/usr/local/test 目录下大于 100K 的文件转移到/tmp 目录下

第一种方法: 使用find

find /usr/local/test -type f -size +100k -exec mv {} /tmp/

第二种方法:

#!/bin/bash
filelist=$(ls /usr/local/test/ -l | grep "^-" | awk '{print $9}')
filepath="/usr/local/test/"
for file in $filelist
do
        filesize=$(du -s $filepath$file |awk '{print $1}')
        if [ $filesize -gt 100 ]
        then
          mv $filepath$file /tmp/
        fi
done

执行后, cd /tmp/ 查看有没有大于100k的文件被移动到这里

4.测试IP能不能ping通

第一种方法:

#!/bin/bash
IP_LIST="10.0.0.40 10.0.0.32 10.0.0.50"
for IP in $IP_LIST
do
	FALL_COUNT=0
	for ((i=1;i<=3;i++))
	do
	    if ping -c 1 $IP >/dev/null
	    then
		echo "$IP Ping is successful"
	        break
	    else
		let FALL_COUNT++
        fi
	done
	if [ $FALL_COUNT -eq 3 ]
	then
	      echo "$IP ping is failure!"
	fi
done

第二种方法:

#!/bin/bash
PING_IP() {
     if ping -c 1 $IP >/dev/null
     then
	  echo "$IP is SUCCESSFUL"
	  continue
     fi
}
IP_LIST="10.0.0.50 10.0.0.33 10.0.0.40"
for IP in $IP_LIST
do
	PING_IP
	PING_IP
	PING_IP
	echo "$IP is FAILFURE"
done

5.猜数字

#!/bin/bash

echo -e "游戏开始"
while true
do
	count=3
	RANDOM_NUM=$(($(($RANDOM%100))))
	#echo $RANDOM_NUM     //执行时可以先取消注释,查看数字用来方便测试

	for i in $(seq 3)
	do
	     let count=$count-1
	     read -p "请输入你猜的数字大小:" NUMBER

	     if [ $RANDOM_NUM -gt $NUMBER ]
	     then	
		   echo "你输入的数字太小了,还有 $count 次机会。"

	     elif [ $RANDOM_NUM -lt $NUMBER ]
	     then
		   echo "你输入的数字太大了,还有 $count 次机会"
         else
		  read -p "恭喜猜对了,是否继续(y/n)" choose

		  if [ $choose == "Y" -o $choose == "y" ]
		  then
		       break
		  else
		       echo "欢迎大佬下次再来玩"
		       exit
		  fi
	     fi
	
	if [ $count -eq 0 ]
	then	
	      read -p "对不起你的游戏次数已经用尽,是否继续(y/n)" choose

              if [ $choose == "Y" -o $choose == "y" ]
	      then
		     break
	      else
		     echo "欢迎大佬下次再来玩"
		     exit
	      fi
	fi	
	done	
done

6、系统巡检脚本(精简版)

\1. 检测系统内存总容量
\2. 检测并输出剩余内存容量
\3. 检测并输出磁盘总容量
\4. 检测并输出剩余磁盘总容量
\5. 检测并输出CPU核心
\6. 检测并输出CPU型号及数量

#!/bin/bash

function cpu() {
echo "###############CPU信息#############"
CPUID=`grep 'physical id' /proc/cpuinfo | uniq | sort |wc -l`
CPUCORE=`grep 'cores' /proc/cpuinfo | sort | uniq |awk -F: '{print $2}'`
CPUMODE=`grep 'model name' /proc/cpuinfo | sort | uniq |awk -F: '{print $2}'`

echo "  CPU数量:$CPUID"
echo "  CPU核心: $CPUCORE"
echo "  CPU型号: $CPUMODE"

FREE_ONE=`free -m | grep Mem | awk '{print $2}'`
FREE_TWO=`free -m | grep Mem | awk '{print $7}'`

echo "  内存总容量:$FREE_ONE"
echo "  剩余内存容量:$FREE_TWO"

size=0
CIR=`free|grep Swap|awk '{print $2}'`
CIS=`df -T|sed 1d|egrep -v "tmpfs"|awk '{print $3}'`
for i in ${CIS[*]}
do
size=`expr $size + $i`
done
((disktotal=\($size + $CIR\)/1024/1024))

echo "  磁盘总容量:${disktotal}GB"
size2=0
one=`free | grep Swap | awk '{print $4}'`
two=`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk '{print $5}'`
for i in ${two[*]}
do
size2=`expr $size2 + $i`
done
((skt=\($size2 + $one\)/1024/1024))
echo "  剩余磁盘容量: ${skt}GB"
}
cpu
发布了38 篇原创文章 · 获赞 6 · 访问量 3356

猜你喜欢

转载自blog.csdn.net/SKTONE_SHUAI/article/details/104406666