优秀运维脚本鉴赏

159 篇文章 0 订阅
158 篇文章 1 订阅

一、根据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 "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"  
  let N-- 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/c\\PASS\_MAX\_DAYS '$A'' /etc/login.defs  
sed -i '/^PASS\_MIN\_DAYS/c\\PASS\_MIN\_DAYS '$B'' /etc/login.defs  
sed -i '/^PASS\_MIN\_LEN/c\\PASS\_MIN\_LEN '$C'' /etc/login.defs  
sed -i '/^PASS\_WARN\_AGE/c\\PASS\_WARN\_AGE '$D'' /etc/login.defs  
  
echo "已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!"  
sed -i '/pam\_pwquality.so/c\\password 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/a\\auth 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/c\\PermitRootLogin no'  /etc/ssh/sshd\_config  
  
read -p "设置历史命令保存条数:" E  
read -p "设置账户自动注销时间:" F  
sed -i '/^HISTSIZE/c\\HISTSIZE='$E'' /etc/profile  
sed -i '/^HISTSIZE/a\\TMOUT='$F'' /etc/profile  
  
echo "已设置只允许wheel组的用户可以使用su命令切换到root用户!"  
sed -i '/pam\_wheel.so use\_uid/c\\auth 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  
echo SU\_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  
    let N--  
 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 $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/n"  
esac


—END—

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]


在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
在这里插入图片描述

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值