目录

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

二、根据进程名过滤进程信息

三、根据用户名查询该用户的相关信息

四、加固系统的一些配置

五:实现磁盘分区的

六、使用一整块硬盘创建逻辑卷

七、将一块硬盘分区,然后分区设置为虚拟卷


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

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-10
  4. # Function: 根据用户输入的PID,过滤出该PID所有的信息
  5. read -p "请输入要查询的PID: " P
  6. n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l`
  7. if [ $n -eq 0 ];then
  8. echo "该PID不存在!!"
  9. exit
  10. fi
  11. echo "--------------------------------"
  12. echo "进程PID: $P"
  13. echo "进程命令:`ps -aux| awk '$2~/^'$P'$/{print $11}'`"
  14. echo "进程所属用户: `ps -aux| awk '$2~/^'$P'$/{print $1}'`"
  15. echo "CPU占用率:`ps -aux| awk '$2~/^'$P'$/{print $3}'`%"
  16. echo "内存占用率:`ps -aux| awk '$2~/^'$P'$/{print $4}'`%"
  17. echo "进程开始运行的时刻:`ps -aux| awk '$2~/^'$P'$/{print $9}'`"
  18. echo "进程运行的时间:`ps -aux| awk '$2~/^'$P'$/{print $10}'`"
  19. echo "进程状态:`ps -aux| awk '$2~/^'$P'$/{print $8}'`"
  20. echo "进程虚拟内存:`ps -aux| awk '$2~/^'$P'$/{print $5}'`"
  21. echo "进程共享内存:`ps -aux| awk '$2~/^'$P'$/{print $6}'`"
  22. echo "--------------------------------"

二、根据进程名过滤进程信息

会显示出该进程名包含的所有线程

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-10
  4. # Function: 根据输入的程序的名字过滤出所对应的PID,并显示出详细信息,如果有几个PID,则全部显示
  5. read -p "请输入要查询的进程名:" NAME
  6. N=`ps -aux | grep $NAME | grep -v grep | wc -l` ##统计进程总数
  7. if [ $N -le 0 ];then
  8. echo "该进程名没有运行!"
  9. fi
  10. i=1
  11. while [ $N -gt 0 ]
  12. do
  13. echo "进程PID: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $2}'`"
  14. echo "进程命令:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
  15. echo "进程所属用户: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $1}'`"
  16. echo "CPU占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $3}'`%"
  17. echo "内存占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $4}'`%"
  18. echo "进程开始运行的时刻:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $9}'`"
  19. echo "进程运行的时间:` ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
  20. echo "进程状态:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $8}'`"
  21. echo "进程虚拟内存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $5}'`"
  22. echo "进程共享内存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $6}'`"
  23. echo "***************************************************************"
  24. let N-- i++
  25. done

三、根据用户名查询该用户的相关信息

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-12
  4. # Function:根据用户名查询该用户的所有信息
  5. read -p "请输入要查询的用户名:" A
  6. echo "------------------------------"
  7. n=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}' | wc -l`
  8. if [ $n -eq 0 ];then
  9. echo "该用户不存在"
  10. echo "------------------------------"
  11. else
  12. echo "该用户的用户名:$A"
  13. echo "该用户的UID:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $3}'`"
  14. echo "该用户的组为:`id $A | awk {'print $3'}`"
  15. echo "该用户的GID为:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $4}'`"
  16. echo "该用户的家目录为:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $6}'`"
  17. Login=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $7}'`
  18. if [ $Login == "/bin/bash" ];then
  19. echo "该用户有登录系统的权限!!"
  20. echo "------------------------------"
  21. elif [ $Login == "/sbin/nologin" ];then
  22. echo "该用户没有登录系统的权限!!"
  23. echo "------------------------------"
  24. fi
  25. fi

四、加固系统的一些配置

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-11
  4. # Function:对账户的密码的一些加固
  5. read -p "设置密码最多可多少天不修改:" A
  6. read -p "设置密码修改之间最小的天数:" B
  7. read -p "设置密码最短的长度:" C
  8. read -p "设置密码失效前多少天通知用户:" D
  9. sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
  10. sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
  11. sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
  12. sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs
  13. echo "已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!"
  14. 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
  15. echo "已对密码进行加固,如果输入错误密码超过3次,则锁定账户!!"
  16. n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
  17. if [ $n -eq 0 ];then
  18. 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
  19. fi
  20. echo "已设置禁止root用户远程登录!!"
  21. sed -i '/PermitRootLogin/c\PermitRootLogin no' /etc/ssh/sshd_config
  22. read -p "设置历史命令保存条数:" E
  23. read -p "设置账户自动注销时间:" F
  24. sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
  25. sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
  26. echo "已设置只允许wheel组的用户可以使用su命令切换到root用户!"
  27. sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
  28. n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
  29. if [ $n -eq 0 ];then
  30. echo SU_WHEEL_ONLY yes >> /etc/login.defs
  31. fi
  32. echo "即将对系统中的账户进行检查...."
  33. echo "系统中有登录权限的用户有:"
  34. awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
  35. echo "********************************************"
  36. echo "系统中UID=0的用户有:"
  37. awk -F: '($3=="0"){print $1}' /etc/passwd
  38. echo "********************************************"
  39. N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
  40. echo "系统中空密码用户有:$N"
  41. if [ $N -eq 0 ];then
  42. echo "恭喜你,系统中无空密码用户!!"
  43. echo "********************************************"
  44. else
  45. i=1
  46. while [ $N -gt 0 ]
  47. do
  48. None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
  49. echo "------------------------"
  50. echo $None
  51. echo "必须为空用户设置密码!!"
  52. passwd $None
  53. let N--
  54. done
  55. M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
  56. if [ $M -eq 0 ];then
  57. echo "恭喜,系统中已经没有空密码用户了!"
  58. else
  59. echo "系统中还存在空密码用户:$M"
  60. fi
  61. fi
  62. echo "即将对系统中重要文件进行锁定,锁定后将无法添加删除用户和组"
  63. read -p "警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:" i
  64. case $i in
  65. [Y,y])
  66. chattr +i /etc/passwd
  67. chattr +i /etc/shadow
  68. chattr +i /etc/group
  69. chattr +i /etc/gshadow
  70. echo "锁定成功!"
  71. ;;
  72. [N,n])
  73. chattr -i /etc/passwd
  74. chattr -i /etc/shadow
  75. chattr -i /etc/group
  76. chattr -i /etc/gshadow
  77. echo "取消锁定成功!!"
  78. ;;
  79. *)
  80. echo "请输入Y/y or N/n"
  81. esac

五:实现磁盘分区的

只支持分配主分区和标准的linux文件系统(ext4/xfs)的分区

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-13
  4. # Function:对硬盘进行分区,得到一个标准的linux文件系统(ext4/xfs)的主分区
  5. cat /proc/partitions > old
  6. read -p "请输入你要分区的硬盘(写绝对路径,如:/dev/sda):" A
  7. if [ -e $A ];then
  8. echo "true"
  9. else
  10. echo "该设备不存在!!"
  11. exit
  12. fi
  13. read -p "请输入你要创建的磁盘分区类型(这里只能是主分区,默认按回车即可):" B
  14. read -p "请输入分区数字,范围1-4,默认从1开始,默认按回车即可:" C
  15. read -p "请输入扇区起始表号,默认按回车即可:" D
  16. read -p "请输入你要分区的分区大小(格式:如 +5G ):" E
  17. fdisk $A << EOF
  18. n
  19. p
  20. $C
  21. $D
  22. $E
  23. w
  24. EOF
  25. echo "一个标准的linux文件系统的分区已经建立好!!"
  26. partprobe $A
  27. echo "-------------------------------"
  28. cat /proc/partitions
  29. cat /proc/partitions > new
  30. F=`diff new old | grep "<" | awk '{print $5}'`
  31. echo "-------------------------------"
  32. echo $F
  33. echo "你想对新分区设定什么类型的文件系统?有以下选项:"
  34. echo "A:ext4文件系统"
  35. echo "B:xfs文件系统"
  36. read -p "请输入你的选择:" G
  37. case $G in
  38. a|A)
  39. mkfs.ext4 /dev/$F
  40. echo "该分区将被挂载在 "/mnt/$F" 下"
  41. m=`ls /mnt/|grep $F | wc -l`
  42. if [ $m -eq 0 ];then
  43. mkdir /mnt/$F
  44. fi
  45. n=`cat /etc/fstab | grep /dev/$F| wc -l`
  46. if [ $n -eq 0 ];then
  47. echo "/dev/$F /mnt/$F ext4 defaults 0 0" >> /etc/fstab
  48. else
  49. sed -i '/^\/dev\/$F/c\/dev/$F /mnt/$F ext4 defaults 0 0' /etc/fstab
  50. fi
  51. mount -a
  52. df -Th
  53. ;;
  54. b|B)
  55. mkfs.xfs -f /dev/$F
  56. echo "该分区将被挂载在 "/mnt/$F" 下"
  57. m=`ls /mnt/|grep $F | wc -l`
  58. if [ $m -eq 0 ];then
  59. mkdir /mnt/$F
  60. fi
  61. n=`cat /etc/fstab | grep /dev/$F | wc -l`
  62. if [ $n -eq 0 ];then
  63. echo "/dev/$F /mnt/$F xfs defaults 0 0" >> /etc/fstab
  64. else
  65. sed -i '/^\/dev\/$F/c\/dev/$F /mnt/$F xfs defaults 0 0' /etc/fstab
  66. fi
  67. mount -a
  68. df -Th
  69. ;;
  70. *)
  71. echo "你的输入有误!!"
  72. esac

六、使用一整块硬盘创建逻辑卷

  1. #!/bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-12
  4. # Function:使用一整块硬盘创建LVM逻辑卷
  5. read -p "请输入你要做成逻辑卷的硬盘(写绝对路径,如:/dev/sda):" path
  6. if [ -e $path ];then
  7. echo "true"
  8. else
  9. echo "该设备不存在!!"
  10. exit
  11. fi
  12. pvcreate $path
  13. echo "该硬盘已做成物理卷!"
  14. vgcreate myvg $path
  15. echo "该物理卷已加入卷组 myvg 中"
  16. vgs
  17. free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
  18. echo "该物理卷剩余的空间大小为:$free "
  19. read -p "请输入你要创建逻辑卷的大小(如:1G):" repy2
  20. lvcreate -L $repy2 -n mylv myvg
  21. echo "已成功创建逻辑卷mylv"
  22. echo "------------------------"
  23. lvs
  24. echo "------------------------"
  25. echo "你想对新分区设定什么类型的文件系统?有以下选项:"
  26. echo "A:ext4文件系统"
  27. echo "B:xfs文件系统"
  28. read -p "请输入你的选择:" repy3
  29. case $repy3 in
  30. a|A)
  31. mkfs.ext4 /dev/myvg/mylv
  32. echo "该分区将被挂载在 "/mnt/mylv" 下"
  33. m=`ls /mnt/|grep mylv | wc -l`
  34. if [ $m -eq 0 ];then
  35. mkdir /mnt/mylv
  36. fi
  37. echo "/dev/myvg/mylv /mnt/mylv ext4 defaults 0 0" >> /etc/fstab
  38. mount -a
  39. df -Th
  40. ;;
  41. b|B)
  42. mkfs.xfs -f /dev/myvg/mylv
  43. echo "该分区将被挂载在 "/mnt/mylv" 下"
  44. m=`ls /mnt/|grep mylv | wc -l`
  45. if [ $m -eq 0 ];then
  46. mkdir /mnt/mylv
  47. fi
  48. echo "/dev/myvg/mylv /mnt/mylv xfs defaults 0 0" >> /etc/fstab
  49. mount -a
  50. df -Th
  51. ;;
  52. *)
  53. echo "你的输入有误!!"
  54. esac

七、将一块硬盘分区,然后分区设置为虚拟卷

  1. #! /bin/bash
  2. # Author:谢公子
  3. # Date:2018-10-13
  4. # Function:新建一个分区,并做成逻辑卷
  5. cat /proc/partitions > old
  6. read -p "请输入你要分区的硬盘(写绝对路径,如:/dev/sda):" A
  7. if [ -e $A ];then
  8. echo "true"
  9. else
  10. echo "该设备不存在!!"
  11. exit
  12. fi
  13. read -p "请输入你要创建的磁盘分区类型(这里只能是主分区,默认按回车即可):" B
  14. read -p "请输入分区数字,范围1-4,默认从1开始,默认按回车即可:" C
  15. read -p "请输入扇区起始表号,默认按回车即可:" D
  16. read -p "请输入你要分区的分区大小(格式:如 +5G ):" E
  17. read -p "请输入你要划分为逻辑卷的分区盘符(默认回车即可):" Z
  18. fdisk $A << EOF
  19. n
  20. p
  21. $C
  22. $D
  23. $E
  24. t
  25. $Z
  26. 8e
  27. p
  28. w
  29. EOF
  30. echo "一个标准LVM的分区已经建立好!!"
  31. partprobe $A
  32. echo "-------------------------------"
  33. cat /proc/partitions
  34. cat /proc/partitions > new
  35. F=`diff new old | grep "<" | awk '{print $5}'`
  36. echo "-------------------------------"
  37. echo $F
  38. pvcreate /dev/$F
  39. echo "该硬盘已做成物理卷!"
  40. n=`vgs | grep myvg |wc -l`
  41. if [ $n -eq 0 ];then
  42. vgcreate myvg /dev/$F
  43. echo "该物理卷已加入卷组myvg中"
  44. else
  45. vgextend myvg /dev/$F
  46. echo "该物理卷已加入卷组myvg中"
  47. vgs
  48. free=`vgs| awk '$1~/myvg/{print}'|awk '{print $7}'`
  49. echo "该卷组剩余的空间大小为:$free "
  50. lvs
  51. exit
  52. fi
  53. vgs
  54. free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
  55. echo "该卷组剩余的空间大小为:$free "
  56. read -p "请输入你要创建逻辑卷的大小(如:1G):" repy2
  57. lvcreate -L $repy2 -n mylv myvg
  58. echo "已成功创建逻辑卷mylv"
  59. echo "------------------------"
  60. lvs
  61. echo "------------------------"
  62. echo "你想对新分区设定什么类型的文件系统?有以下选项:"
  63. echo "A:ext4文件系统"
  64. echo "B:xfs文件系统"
  65. read -p "请输入你的选择:" G
  66. case $G in
  67. a|A)
  68. mkfs.ext4 /dev/myvg/mylv
  69. echo "该分区将被挂载在 "/mnt/$F" 下"
  70. m=`ls /mnt/|grep $F | wc -l`
  71. if [ $m -eq 0 ];then
  72. mkdir /mnt/$F
  73. fi
  74. echo "/dev/myvg/mylv /mnt/$F ext4 defaults 0 0" >> /etc/fstab
  75. mount -a
  76. df -Th
  77. ;;
  78. b|B)
  79. mkfs.xfs -f /dev/myvg/mylv
  80. echo "该分区将被挂载在 "/mnt/$F" 下"
  81. m=`ls /mnt/|grep $F | wc -l`
  82. if [ $m -eq 0 ];then
  83. mkdir /mnt/$F
  84. fi
  85. echo "/dev/myvg/mylv /mnt/$F xfs defaults 0 0" >> /etc/fstab
  86. mount -a
  87. df -Th
  88. ;;
  89. *)
  90. echo "你的输入有误!!"
  91. esac

更多脚本:https://www.jb51.net/article/54488.htm

相关文章:应急响应系统之 Linux 主机安全检查

Linux运维比较常用的一些脚本的更多相关文章

  1. 97 条 Linux 运维工程师常用命令总结[转]

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...

  2. linux运维工程师常用命令

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a  列出包括.a开头的隐藏文件的所有文件-A  通-a,但不列出"."和".."-l  列 ...

  3. linux运维中常用的指令

    一.终端中常用的快捷键 man界面中的快捷键: ?keyword                 向上搜索关键词keyword,n向下搜索,N继续向上搜索 /keyword   向下搜索关键词keyw ...

  4. linux运维人员常用150个命令汇总

    命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...

  5. Python运维中常用的_脚本

    前言 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件. ...

  6. Linux运维最常用150个命令

    线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list ...

  7. linux运维笔记——常用命令详解diff

    1.diff 你可以把diff看成是linux上的文件比对工具 例子文件内容: [root@localhost disks]# cat test1.txt a b c d [root@localhos ...

  8. 详解linux运维工程师入门级必备技能

    详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...

  9. [ Linux运维学习 ] 路径及实战项目合集

    我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. ...

随机推荐

  1. c++:一个辅助类让内存泄漏现原形!

    前言 对于c++而言,如何查找内存泄漏是程序员亘古不变的话题:解决之道可谓花样繁多.因为最近要用到QT写程序,摆在我面前的第一个重要问题是内存防泄漏.如果能找到一个简单而行之有效的方法,对后续开发大有 ...

  2. Excel查分系统搭建小技巧

    推荐一个教师必备工具"Yichafen",是一个在线查分系统,全国8000所高校都在用,三分钟极速创建发布查分系统 在工作学习中,我们经常会遇到查分系统这样的问题.培根说过:读书足 ...

  3. FreeBSD 开发已经迁移至 git

    FreeBSD 开发已经迁移至 git 全部预计于 2021 年 3 月完成迁移. https://git.freebsd.org/src.git 或者 https://cgit.freebsd.or ...

  4. 推荐一款小众且好用的 Python 爬虫库 - RoboBrowser

    1. 前言 大家好,我是安果! 今天推荐一款小众轻量级的爬虫库:RoboBrowser RoboBrowser,Your friendly neighborhood web scraper!由纯 Py ...

  5. unbutu的dpkg被中断的解决办法

    直接sudo apt update进行重新配置就行

  6. 基础篇:JAVA引用类型和ThreadLocal

    前言 平时并发编程,除了维护修改共享变量的场景,有时我们也需要为每一个线程设置一个私有的变量,进行线程隔离,java提供的ThreadLocal可以帮助我们实现,而讲到ThreadLocal则不得不讲 ...

  7. ElasticSearch实战系列十: ElasticSearch冷热分离架构

    前言 本文主要介绍ElasticSearch冷热分离架构以及实现. 冷热分离架构介绍 冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配.ES集群的索引写入及查询速度 ...

  8. Python 实现自动化 Excel 报表

    Py 实现自动化Excel报表 好几个月没有写笔记了, 并非没有积累, 而是有点懒了. 想想还是要续上, 作为工作成长的一部分哦. 最近有做一些报表, 但一直找不到一个合适的报表工具, 又实在不想写前 ...

  9. kong 结合 istio demo

  10. 连续函数离散化-以SOGI为例

    0. 引言 0.1 本文内容 基于SOGI函数,将s域传递函数转换为离散的z域函数,并以m语言形式进行实现,在simulink中封装为m-function并进行验证 0.2 学到什么 离散化方法 函数 ...