前言
#! /bin/bash # Function: 根据用户输入的PID,过滤出该PID所有的信息 read-p"请输入要查询的PID: "P n=`ps -aux| awk'$2~/^'$P'$/{print $11}'|wc -l` if[$n-eq 0 ];then echo"该PID不存在!!" exit fi echo"--------------------------------" echo"进程PID:$P" echo"进程命令:`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"请输入要查询的进程名:"NAME N=`ps -aux | grep$NAME| grep -v grep | wc -l`##统计进程总数 if[$N-le 0 ];then echo"该进程名没有运行!" fi i=1 while[$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"***************************************************************" letN-- i++ done
三、根据用户名查询该用户的相关信息
#! /bin/bash # Function:根据用户名查询该用户的所有信息 read-p"请输入要查询的用户名:"A echo"------------------------------" n=`cat /etc/passwd | awk -F:'$1~/^'$A'$/{print}'| wc -l` if[$n-eq 0 ];then echo"该用户不存在" 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"------------------------------" fi fi
四、加固系统的一些配置
#! /bin/bash # Function:对账户的密码的一些加固 read-p"设置密码最多可多少天不修改:"A read-p"设置密码修改之间最小的天数:"B read-p"设置密码最短的长度:"C read-p"设置密码失效前多少天通知用户:"D sed -i'/^PASS_MAX_DAYS/cPASS_MAX_DAYS '$A''/etc/login.defs sed -i'/^PASS_MIN_DAYS/cPASS_MIN_DAYS '$B''/etc/login.defs sed -i'/^PASS_MIN_LEN/cPASS_MIN_LEN '$C''/etc/login.defs sed -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 ];then sed -i'/%PAM-1.0/aauth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300'/etc/pam.d/sshd fi echo"已设置禁止root用户远程登录!!" sed -i'/PermitRootLogin/cPermitRootLogin no'/etc/ssh/sshd_config read-p"设置历史命令保存条数:"E read-p"设置账户自动注销时间:"F sed -i'/^HISTSIZE/cHISTSIZE='$E''/etc/profile sed -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/su n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l` if[$n-eq 0 ];then echoSU_WHEEL_ONLY yes >> /etc/login.defs fi echo"即将对系统中的账户进行检查...." echo"系统中有登录权限的用户有:" awk -F:'($7=="/bin/bash"){print $1}'/etc/passwd echo"********************************************" echo"系统中UID=0的用户有:" awk -F:'($3=="0"){print $1}'/etc/passwd echo"********************************************" N=`awk -F:'($2==""){print $1}'/etc/shadow|wc -l` echo"系统中空密码用户有:$N" if[$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 letN-- done M=`awk -F:'($2==""){print $1}'/etc/shadow|wc -l` if[$M-eq 0 ];then echo"恭喜,系统中已经没有空密码用户了!" else echo"系统中还存在空密码用户:$M" fi fi echo"即将对系统中重要文件进行锁定,锁定后将无法添加删除用户和组" read-p"警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:"i case$iin [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/n" esac
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Linux
+关注
关注
87文章
11219浏览量
208879 -
PID
+关注
关注
35文章
1471浏览量
85280 -
Shell脚本
+关注
关注
0文章
36浏览量
7964
原文标题:【经典shell脚本分享】几个Linux高效运维shell脚本!
文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
100个Linux Shell脚本总结
不知道大家有没有发现,会编写shell脚本的运维,工资不会低,并且他的工作会很轻松!今天浩道跟大家分享每一个Linux
运维常用的34个Linux Shell脚本
Shell 脚本编程是在 Linux 下学习或练习编程的最简单的方式。尤其对运维工程师处理着自动化任务,且要开发新的简单的实用程序或工具等(
Linux Shell脚本经典案例分享
作为一名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell
发表于 06-16 14:03
•631次阅读
评论