一、根据PID过滤进程所有信息
#!/bin/bash
#Function:根据用户输入的PID,过滤出该PID所有的信息
read-p"请输入要查询的PID:"P
n=`ps-aux|awk'$2~/^'$P'$/{print$11}'|wc-l`
if[$n-eq0];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-vgrep|wc-l`##统计进程总数
if[$N-le0];then
echo"该进程名没有运行!"
fi
i=1
while[$N-gt0]
do
echo"进程PID:`ps-aux|grep$NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$2}'`"
echo"进程命令:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$11}'`"
echo"进程所属用户:`ps-aux|grep$NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$1}'`"
echo"CPU占用率:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$3}'`%"
echo"内存占用率:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$4}'`%"
echo"进程开始运行的时刻:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$9}'`"
echo"进程运行的时间:` ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$11}'`"
echo"进程状态:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$8}'`"
echo"进程虚拟内存:`ps -aux | grep $NAME|grep-vgrep|awk'NR=='$i'{print$0}'|awk'{print$5}'`"
echo"进程共享内存:`ps -aux | grep $NAME|grep-vgrep|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-eq0];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/cpasswordrequisitepam_pwquality.sotry_first_passlocal_users_onlyretry=3authtok_type=difok=1minlen=8ucredit=-1lcredit=-1dcredit=-1'/etc/pam.d/system-auth
echo"已对密码进行加固,如果输入错误密码超过3次,则锁定账户!!"
n=`cat/etc/pam.d/sshd|grep"authrequiredpam_tally2.so"|wc-l`
if[$n-eq0];then
sed-i'/%PAM-1.0/aauthrequiredpam_tally2.sodeny=3unlock_time=150even_deny_rootroot_unlock_time300'/etc/pam.d/sshd
fi
echo"已设置禁止root用户远程登录!!"
sed-i'/PermitRootLogin/cPermitRootLoginno'/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.souse_uid/cauthrequiredpam_wheel.souse_uid'/etc/pam.d/su
n=`cat/etc/login.defs|grepSU_WHEEL_ONLY|wc-l`
if[$n-eq0];then
echoSU_WHEEL_ONLYyes>>/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-eq0];then
echo"恭喜你,系统中无空密码用户!!"
echo"********************************************"
else
i=1
while[$N-gt0]
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-eq0];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/yorN/n"
esac
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
PID
+关注
关注
35文章
1471浏览量
85281 -
脚本
+关注
关注
1文章
387浏览量
14829 -
运维
+关注
关注
1文章
251浏览量
7540
原文标题:优秀运维脚本鉴赏
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Linux运维常用脚本整理
在日常工作过程中,经常要对服务器进行一些操作,整理了一些常用的一句话shell命令,使运维人员工作起来更加得心应手,如果您有什么好的一句话脚本,欢迎留言! 1、查找当前目录下占用为0字节的文件并删除
发表于 10-02 21:51
学习Linux运维发展方向
及丢失等)、对网站的故障进行监控、解决网站运行的潜在安全问题、开发自动化脚本程序提高工作效率、规划网站架构、程序发布流程和规范,制定运维工作制度和规范、配合开发人员部署并调试产品研发需要的测试环境、代码
发表于 07-25 17:15
何为智能运维?
一、何为智能运维?生产设备/装备是工业的重要生产工具,其可靠性、性能对工业生产有重大影响。随着工业大数据推进,设备的智能运维被定义为一个重要的应用领域。但何为智能
发表于 07-12 06:34
优秀运维工程师应当具备哪些技能
对于我们这些刚入门的运维小白来说,极强的好奇心总会驱使我们去涉猎各种技术,弄到最后很可能该学的知识半懵半解,知识体系混乱,学习毫无章法。因此,我们学习时要有一个明确的目标和知识体系(也是我学习的目标),下面大概向大家介绍以下优秀
运维常用的34个Linux Shell脚本
Shell 脚本编程是在 Linux 下学习或练习编程的最简单的方式。尤其对运维工程师处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。
这5个常见运维场景,可以尝试用Python去解决!
当然,运维岗位的具体职责和要求可能因公司而异,有些公司可能并不要求运维工程师会使用 Python 脚本。但总的来说,学习 Python 可以
使用Python脚本实现自动化运维任务
许多运维工程师会使用 Python 脚本来自动化运维任务。Python 是一种流行的编程语言,具有丰富的第三方库和强大的自动化能力,适用于许多不同的领域。
软通动力集成运维方案,助力企业运维数智化升级
出席峰会,见证了华为行业运维服务解决方案Hi-OPS的全新升级,并分享了软通动力与华为联合运维方案优秀实践。 华为行业
评论