LINUX系列-shell脚本篇

一 批量创建用户

[root@iZbp1el3hto8hhgtlih1m4Z test]# vi 1_useradd_piliang.sh
#!/bin/bash

#第一步获取到创建用户的名称,这里使用前台输入
USER_LIST=$@
#存放创建好的用户和密码
USER_FILE=./new_user.log

#开始进行循环
for USER in $USER_LIST;do
        if ! id $USER &>/dev/null;then
                PASS=$(echo $RANDOM | md5sum | cut -c 1-8)
                useradd $USER
                echo $PASS | passwd --stdin $USER
                echo "$USER--$PASS" >> $USER_FILE
                echo "$USER 用户创建成功!!!"
        else
                echo "$USER 用户是存在的!!!"

        fi

done

二 查询linux服务器cpu和内存top10

[root@iZbp1el3hto8hhgtlih1m4Z test]# vi 2_cpu_mem_top.sh
#!/bin/bash

echo "---------cpu top 10----------"
ps -eo ruser,pid,pcpu,pmem,args --sort=-pcpu | head -10
ps -aux --sort=-pcpu | head -10

echo "---------mem top 10----------"
ps -eo ruser,pid,pmem,pcpu,args --sort=-pmem | head -10
ps -aux --sort=-pmem | head -10

三 服务器磁盘、内存和cpu查看

[root@iZbp1el3hto8hhgtlih1m4Z test]# more 3_disk_cpu_mem.sh 
#!/bin/bash

#磁盘空间查看
disk(){ #disk函数
        cipan=$(df -h | awk '/^\/dev/{print $1}') #输出以dev开头的
        for cp in $cipan;do   #循环上面的列表
        mounted=$(df -h | awk -v bl=$cp '{if($1==bl)print $NF}')   #挂载 awk中一个变量等于for循环中的cp值,再进行判断是否相等,相等输出对应的值,$NF为最后一列的值
        size=$(df -h | awk -v bl=$cp '{if($1==bl)print $2}')  #总大小
        used=$(df -h | awk -v bl=$cp '{if($1==bl)print $3}')  #使用大小
        used_precent=$(df -h | awk -v bl=$cp '{if($1==bl)print $5}') #使用比例
                echo "磁盘-挂载点: $mounted , 总大小为:$size , 使用了 $used ,使用百分比为 : $used_precent" 
        done
}


#cpu大小查看

cpu(){
        util=$(vmstat | awk '{if(NR==3)print $13+$14}')
        iowait=$(vmstat | awk '{if(NR==3)print $16}')
        echo "cpu - 使用率为 $util,等待磁盘io使用率为 $iowait"

}


#内存大小查看

mem(){
        total=$(free | awk '{if(NR==2)printf "%.1f",$2/1024/1024}')
        used=$(free | awk '{if(NR==2)printf "%.1f",($2-$NF)/1024/1024}')
        available=$(free | awk '{if(NR==2)printf "%.2f",$NF/1024/1024}')
        echo "内存总大小为:$total G,内存使用了:$used G,内存可用: $available G"
}

#查看连接

tcp(){
        tcp=$(netstat -antp | awk '{a[$6]++}END{for (i in a) {print i,a[i]}}')
        echo "连接情况如下:$tcp"
}
disk
cpu
mem
tcp

四 批量删除用户

[root@iZbp1el3hto8hhgtlih1m4Z test]# more 4_userdel_piliang.sh
#!/bin/bash
USER_DEL=$(cat /etc/passwd | grep "bash$" | grep -v "root" | awk -F ":" '{print $1}')

for del_user in $USER_DEL;do
        userdel -r $del_user
        echo "$del_user 用户删除成功!!!"
done
posted @ 2023-06-06 12:50  laity_guan  阅读(12)  评论(0编辑  收藏  举报