常见的Linux高效运维shell脚本介绍

前言
一、根据pid过滤进程所有信息
#! /bin/bash# function: 根据用户输入的pid,过滤出该pid所有的信息read -p 请输入要查询的pid:  pn=`ps -aux| awk '$2~/^'$p'$/{print $11}'|wc -l`if [ $n -eq 0 ];then echo 该pid不存在!! exitfiecho --------------------------------echo 进程pid: $pecho 进程命令:`ps -aux| awk '$2~/^'$p'$/{print $11}'`echo 进程所属用户: `ps -aux| awk '$2~/^'$p'$/{print $1}'`echo cpu占用率:`ps -aux| awk '$2~/^'$p'$/{print $3}'`%echo 内存占用率:`ps -aux| awk '$2~/^'$p'$/{print $4}'`%echo 进程开始运行的时刻:`ps -aux| awk '$2~/^'$p'$/{print $9}'`echo 进程运行的时间:`ps -aux| awk '$2~/^'$p'$/{print $10}'`echo 进程状态:`ps -aux| awk '$2~/^'$p'$/{print $8}'`echo 进程虚拟内存:`ps -aux| awk '$2~/^'$p'$/{print $5}'`echo 进程共享内存:`ps -aux| awk '$2~/^'$p'$/{print $6}'`echo --------------------------------  
二、根据进程名过滤进程信息
会显示出该进程名包含的所有线程
#! /bin/bash# function: 根据输入的程序的名字过滤出所对应的pid,并显示出详细信息,如果有几个pid,则全部显示read -p 请输入要查询的进程名: namen=`ps -aux | grep $name | grep -v grep | wc -l` ##统计进程总数if [ $n -le 0 ];then  echo 该进程名没有运行!fii=1while [ $n -gt 0 ]do  echo 进程pid: `ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $2}'`  echo 进程命令:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $11}'`  echo 进程所属用户: `ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $1}'`  echo cpu占用率:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $3}'`%  echo 内存占用率:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $4}'`%  echo 进程开始运行的时刻:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $9}'`  echo 进程运行的时间:` ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $11}'`  echo 进程状态:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $8}'`  echo 进程虚拟内存:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $5}'`  echo 进程共享内存:`ps -aux | grep $name | grep -v grep | awk 'nr=='$i'{print $0}'| awk '{print $6}'`  echo ***************************************************************  let n-- i++done  
三、根据用户名查询该用户的相关信息
#! /bin/bash# function:根据用户名查询该用户的所有信息read -p 请输入要查询的用户名: aecho ------------------------------n=`cat /etc/passwd | awk -f: '$1~/^'$a'$/{print}' | wc -l`if [ $n -eq 0 ];thenecho 该用户不存在echo ------------------------------else  echo 该用户的用户名:$a  echo 该用户的uid:`cat /etc/passwd | awk -f: '$1~/^'$a'$/{print}'|awk -f: '{print $3}'`  echo 该用户的组为:`id $a | awk {'print $3'}`  echo 该用户的gid为:`cat /etc/passwd | awk -f: '$1~/^'$a'$/{print}'|awk -f: '{print $4}'`  echo 该用户的家目录为:`cat /etc/passwd | awk -f: '$1~/^'$a'$/{print}'|awk -f: '{print $6}'`  login=`cat /etc/passwd | awk -f: '$1~/^'$a'$/{print}'|awk -f: '{print $7}'`  if [ $login == /bin/bash ];then  echo 该用户有登录系统的权限!!  echo ------------------------------  elif [ $login == /sbin/nologin ];then  echo 该用户没有登录系统的权限!!  echo ------------------------------  fifi  
四、加固系统的一些配置
#! /bin/bash# function:对账户的密码的一些加固read -p 设置密码最多可多少天不修改: aread -p 设置密码修改之间最小的天数: bread -p 设置密码最短的长度: cread -p 设置密码失效前多少天通知用户: dsed -i '/^pass_max_days/cpass_max_days '$a'' /etc/login.defssed -i '/^pass_min_days/cpass_min_days '$b'' /etc/login.defssed -i '/^pass_min_len/cpass_min_len '$c'' /etc/login.defssed -i '/^pass_warn_age/cpass_warn_age '$d'' /etc/login.defs echo 已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!sed -i '/pam_pwquality.so/cpassword requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth echo 已对密码进行加固,如果输入错误密码超过3次,则锁定账户!!n=`cat /etc/pam.d/sshd | grep auth required pam_tally2.so |wc -l`if [ $n -eq 0 ];thensed -i '/%pam-1.0/aauth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshdfi echo  已设置禁止root用户远程登录!!sed -i '/permitrootlogin/cpermitrootlogin no'  /etc/ssh/sshd_config read -p 设置历史命令保存条数: eread -p 设置账户自动注销时间: fsed -i '/^histsize/chistsize='$e'' /etc/profilesed -i '/^histsize/atmout='$f'' /etc/profile echo 已设置只允许wheel组的用户可以使用su命令切换到root用户!sed -i '/pam_wheel.so use_uid/cauth required pam_wheel.so use_uid ' /etc/pam.d/sun=`cat /etc/login.defs | grep su_wheel_only | wc -l`if [ $n -eq 0 ];thenecho su_wheel_only yes >> /etc/login.defsfi echo 即将对系统中的账户进行检查....echo 系统中有登录权限的用户有:awk -f: '($7==/bin/bash){print $1}' /etc/passwdecho ********************************************echo 系统中uid=0的用户有:awk -f: '($3==0){print $1}' /etc/passwdecho ********************************************n=`awk -f: '($2==){print $1}' /etc/shadow|wc -l`echo 系统中空密码用户有:$nif [ $n -eq 0 ];then echo 恭喜你,系统中无空密码用户!! echo ********************************************else i=1 while [ $n -gt 0 ] do    none=`awk -f: '($2==){print $1}' /etc/shadow|awk 'nr=='$i'{print}'`    echo ------------------------    echo $none    echo 必须为空用户设置密码!!    passwd $none    let n-- done m=`awk -f: '($2==){print $1}' /etc/shadow|wc -l` if [ $m -eq 0 ];then  echo 恭喜,系统中已经没有空密码用户了! elseecho 系统中还存在空密码用户:$m fifi echo 即将对系统中重要文件进行锁定,锁定后将无法添加删除用户和组read -p 警告:此脚本运行后将无法添加删除用户和组!!确定输入y,取消输入n;y/n: icase $i in      [y,y])            chattr +i /etc/passwd            chattr +i /etc/shadow            chattr +i /etc/group            chattr +i /etc/gshadow            echo 锁定成功!;;      [n,n])            chattr -i /etc/passwd            chattr -i /etc/shadow            chattr -i /etc/group            chattr -i /etc/gshadow            echo 取消锁定成功!!;;       *)            echo 请输入y/y or n/nesac


42Gears获Zebra Technologies互操作性验证
物联网初创公司Lightapp正在帮助工厂运营的各个方面降低能耗
艾拉物联继续向智能硬件的深度延伸
基于Arduino的RGB矩阵LED测试仪的制作
8月要闻回顾:华为MateX2采用像三星的内折设计 柔性显示、车载显示成为热点
常见的Linux高效运维shell脚本介绍
拷问特斯拉遭遇密集起火:电动车只是虚假繁荣?
在Nios II嵌入式平台上uClinux的移植研究
高性能实时应用:DSP内核+ARM核成首选
远景集团建设20GWh的储能及动力电池项目以及产业链生态项目
不得不关注的六个LED照明技术细节
全国首条智慧地下电缆线路的监控信息正式接入
助力低碳,深耕低温锡膏技术引领行业工艺发展
有哪些平价的蓝牙耳机?四款适合学生的平价蓝牙耳机推荐
冠层分析仪的作用是什么,它有哪些应用
传感器前级信号处理
UWB室内定位高精度定位应用的宠儿
ADI新数字隔离器封装确保医疗和工业应用安全
基于A2DP框架的近距离无线音频通信研究
联发科公布第三季财报 营收达670亿元并表示对AI的投入已有相当的成果