0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_TEuU2tls 来源:浩道linux 作者:浩道linux 2022-10-13 09:36 次阅读

前言

一、根据PID过滤进程所有信息

#! /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
    PID
    +关注

    关注

    35

    文章

    1471

    浏览量

    85280
  • Shell脚本
    +关注

    关注

    0

    文章

    36

    浏览量

    7964

原文标题:【经典shell脚本分享】几个Linux高效运维shell脚本!

文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    几个经典高效linux脚本

    今天浩道跟大家分享硬核shell干货,以下几个脚本皆为经典高效linux脚本,拿来即用!
    发表于 10-21 09:04 1453次阅读

    Linux Shell脚本入门到实战详解

    Linux Shell脚本入门到实战详解
    发表于 02-17 15:03 624次阅读

    Linux shell脚本分享

    今天浩道跟大家分享几个Linux中常用到的shell脚本
    发表于 07-18 09:53 546次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>分享

    Linux中常用的MySQL脚本

    Linux中,使用MySQL进行常见任务时,可以编写一些脚本来简化操作。以下是一些常用的MySQL
    发表于 09-07 09:49 734次阅读

    Linux中常用的Shell脚本示例

    当谈论一线工作中的常用 Shell 脚本时,以下是一些实用的例子。
    发表于 09-08 09:42 605次阅读

    100个Linux Shell脚本总结

    不知道大家有没有发现,会编写shell脚本,工资不会低,并且他的工作会很轻松!今天浩道跟大家分享每一个Linux
    的头像 发表于 12-05 09:28 1193次阅读

    Linux都要会哪些shell技能

    在充斥着各种的互联网+的数字时代,Linux也越来越趋于自动化方向发展,越来越多的工作者奔跑在了自动化
    发表于 11-30 17:38

    shell脚本的相关资料分享

    脚本提供数组、循环、条件判断的等功能shell脚本一般是Linux或者系统管理员要掌握的,作
    发表于 12-23 06:17

    Linux常见调用shell脚本的三种方法

    编写Linux下的应用程序时有时需要调用Linux的相关shell脚本,在这些脚本中通过调用Linux
    的头像 发表于 06-28 14:28 8400次阅读

    Linux Shell脚本编程基础和相关资料合集免费下载

    本文档的主要内容详细介绍的是Linux Shell脚本编程基础和相关资料合集免费下载。
    发表于 05-24 17:53 26次下载
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>编程基础和相关资料合集免费下载

    Linux系统命令及shell脚本实践指南

    Linux系统命令及shell脚本实践指南资料下载。
    发表于 06-01 14:47 28次下载

    常用的34个Linux Shell脚本

    Shell 脚本编程是在 Linux 下学习或练习编程的最简单的方式。尤其对工程师处理着自动化任务,且要开发新的简单的实用程序或工具等(
    的头像 发表于 05-09 15:26 1486次阅读

    Linux开发_Makefile规则与Shell脚本语言

    介绍Linux下Makefile编程知识点,Shell脚本知识点。
    的头像 发表于 09-17 15:40 1236次阅读

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    Linux Shell脚本经典案例分享

    ​ 作为一名 Linux 工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell
    发表于 06-16 14:03 631次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享