1、编写脚本实现传入进程pid,查看对应进程/proc下CPU、内存指标.

脚本内容:

#!/bin/sh
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2019-12-12 16:36
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 7-1.sh
# Description  :
# ******************************************************cat <<EOF
一键查询进程信息
版本:Ver 1.32  复合版
功能:输入PID号码可以查询进程使用了多少CPU、内存资源,输入quit可以退出查询
本软件仅供学习交流,严禁用于商业用途,请于24小时内删除。
支持正版,人人有责|||||||||||||
╭| ━ ━ |╮
╰| • • |╯找女朋友中……………………  ╰╭╮-╭╮╯
EOF
sleep 1while :do#用户输入的进程号赋值给后面的 Pid_Num 变量read -p '请输入需要查询的进程PID号,或者输入quit退出:' Pid_Numcase $Pid_Num in#这里要先判断$Pid_Num 是否是quitquit)echo '已退出'exit 1;;#这里我忘了case语句 )这儿怎么表示多位数的数字,先在这儿用*,再在语句里面判断*)#用 expr 计算和 $? 取是否是正常值 0expr $Pid_Num + 0 &> /dev/null && echo $? >/dev/null#如果 $?等于 0 并且 /proc/$Pid_Num 目录存在,就打印这个进程使用的CPU、内存指标if [ $? -eq 0 -a -d /proc/$Pid_Num ];thencat /proc/$Pid_Num/statuselseecho '系统没有这个进程号'fi;;esac
done

执行结果:

执行结果 :
[root@localhost mage]# sh  7-1.sh
一键查询进程信息
版本:Ver 1.32  复合版
功能:输入PID号码可以查询进程使用了多少CPU、内存资源,输入quit可以退出查询
本软件仅供学习交流,严禁用于商业用途,请于24小时内删除。
支持正版,人人有责|||||||||||||
?| ━ ━ |?
?| ? ? |?找女朋友中……………………  ???-???  请输入需要查询的进程PID号,或者输入quit退出:1
Name:   systemd
Umask:  0000
State:  S (sleeping)
Tgid:   1
Ngid:   0
Pid:    1
PPid:   0
TracerPid:  0
Uid:    0   0   0   0
Gid:    0   0   0   0
FDSize: 64
Groups:
VmPeak:   256236 kB
VmSize:   190832 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      3720 kB
VmRSS:      3720 kB
RssAnon:        1156 kB
RssFile:        2564 kB
RssShmem:          0 kB
VmData:   148424 kB
VmStk:       132 kB
VmExe:      1412 kB
VmLib:      3728 kB
VmPTE:       120 kB
VmSwap:        0 kB
Threads:    1
SigQ:   0/14588
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 7be3c0fe28014a03
SigIgn: 0000000000001000
SigCgt: 00000001800004ec
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
Seccomp:    0
Speculation_Store_Bypass:   thread vulnerable
Cpus_allowed:   f
Cpus_allowed_list:  0-3
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    95684
nonvoluntary_ctxt_switches: 4256
请输入需要查询的进程PID号,或者输入quit退出:2
Name:   kthreadd
Umask:  0000
State:  S (sleeping)
Tgid:   2
Ngid:   0
Pid:    2
PPid:   0
TracerPid:  0
Uid:    0   0   0   0
Gid:    0   0   0   0
FDSize: 64
Groups:
Threads:    1
SigQ:   0/14588
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffffffffff
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
Seccomp:    0
Speculation_Store_Bypass:   thread vulnerable
Cpus_allowed:   f
Cpus_allowed_list:  0-3
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    2936
nonvoluntary_ctxt_switches: 0
请输入需要查询的进程PID号,或者输入quit退出:ew33
系统没有这个进程号
请输入需要查询的进程PID号,或者输入quit退出:233weew
系统没有这个进程号
请输入需要查询的进程PID号,或者输入quit退出:1qe
系统没有这个进程号
请输入需要查询的进程PID号,或者输入quit退出:1..2
系统没有这个进程号
请输入需要查询的进程PID号,或者输入quit退出:quit
已退出

2、编写脚本实现每分钟检查一个主机端口是否存活(提示使用nmap),如果检查到端口不在线,sleep 10s,如果三次都不存在,记录到日志

脚本内容:

#!/bin/sh
# Last modified: 2019-12-15 13:13
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 7-2.sh
# Description  :
# ******************************************************#ip_geshi=`grep -o "\<\([0-9]\{1,3\}\.\)\{3\}\([0-9]\{1,3\}\)\>"`#nmap_ceshi 变量目的是过滤出 open
nmap_ceshi=`nmap $1 -p $2 | sed -n '6p' |cut -d' ' -f2`
for i in `seq 1 3`;doif [ $nmap_ceshi != "open" ];thensleep 10fi[ $i -eq 3 ] && echo "Port $2 with IP address $1 does not exist for 3 consecutive times" >> /var/log/ip_duankou.log
done

执行结果:

3、编写脚本/root/bin/excute.sh,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件

vim /root/bin/excute.sh

脚本内容:

#!/bin/sh
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2019-12-14 21:56
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : excute.sh
# Description  :
# ******************************************************rrr=`echo "$1" |sed -n 's/.*\(\.sh\)/\1/g'`if [[ $rrr =~ .sh  ]];thenchmod o+x $1
elseecho $1'不是脚本文件'
fi

执行结果:

4、编写/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统

vim /root/bin/nologin.sh

nologin.sh 脚本内容:

#!/bin/sh
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2019-12-14 19:20
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : nologin.sh#变量,自定义登录状态
Login_Status=/sbin/nologinwhile : doread -p '请输入你需要禁止用户登录系统的用户名,退出请输入quit.:' NoLoginif [[ $NoLogin =~ quit ]];thenecho '已成功退出。'exit 1else#这里用id 命令来判断输入的是否是用户名id $NoLogin &> /dev/null#如果 $? 等于0,那么输入的就是用户名if [ $? -eq 0 ];then#这里用sed来取值更改 /etc/passwd 文件后面的登录状态#注:我这儿用的是变量来控制 输入的用户名 和 要更改的登录状态,如果分隔符用的是 / ,那么sed 命令会报错,错误信息为:sed: -e expression #1, char 22: unknown option to `s'  #解决方法:把 sed 的分隔符由 / 改为 @ 或者 # 符号等。sed -i 's@\(^'''$NoLogin''':.*:\).*@\1'''$Login_Status'''@g' /etc/passwdecho "$NoLogin现在已经禁止登录系统。"else#否则打印提示信息 echo "系统里没有用户名$NoLogin"fifi
done

____________________________________________________

vim /root/bin/login.sh

login.sh 脚本内容:

#!/bin/sh
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2019-12-14 19:20
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : login.sh#变量,自定义登录状态
Login_Status=/bin/bashwhile : doread -p '请输入你需要用户登录系统的用户名,退出请输入quit.:' Loginif [[ $Login =~ quit ]];thenecho '已成功退出。'exit 1else#这里用id 命令来判断输入的是否是用户名id $Login &> /dev/null#如果 $? 等于0,那么输入的就是用户名if [ $? -eq 0 ];then#这里用sed来取值更改 /etc/passwd 文件后面的登录状态#注:我这儿用的是变量来控制 输入的用户名 和 要更改的登录状态,如果分隔符用的是 / ,那么sed 命令会报错,错误信息为:sed: -e expression #1, char 22: unknown option to `s'  #解决方法:把 sed 的分隔符由 / 改为 @ 或者 # 符号等。sed -i 's@\(^'''$Login''':.*:\).*@\1'''$Login_Status'''@g' /etc/passwdecho "$Login现在已经可以登录系统。"else#否则打印提示信息 echo "系统里没有用户名$Login"fifi
done

执行结果 :

5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件的第10个用户和第20个用户的ID之和

vim /root/bin/sumid.sh

脚本内容:

#!/bin/sh
# ******************************************************
# Author       :suika_xiaoyuzhenren
# Last modified: 2019-12-13 21:18
# Email        : 2429366765@qq.com
# blog         : https://blog.csdn.net/suika_xiaoyuzhenren
# Filename     : 7-5.sh
# Description  :
# ******************************************************
a=`sed -n '10s/.*:x:\([0-9]\+\):.*/\1/gp' /etc/passwd`
b=`sed -n '20s/.*:x:\([0-9]\+\):.*/\1/gp' /etc/passwd`echo '第十个用户和第二十个用户ID之和为'$(($a+$b))

执行结果:

第七周作业——第三种相关推荐

  1. 2019年春季学期第七周作业

    A Q 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 2019春第七周作业 我在这个课程的目标是 尽可能了解并且应用指针及文件和数组的知识 这个作业在那个具体方面帮助我实现目标 大致掌 ...

  2. 2017-2018-2 20179215《密码与安全新技术》第七周作业

    2017-2018-2 20179215 <密码与安全新技术> 第七周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 袁琳 学号:20179215 上课教师:谢 ...

  3. 学号20189220余超 2018-2019-2 《密码与安全新技术专题》第七周作业

    学号20189220 余超 2018-2019-2 <密码与安全新技术专题>第七周作业--论文学习及报告总结 课程:<密码与安全新技术专题> 班级: 1892 姓名: 余超 学 ...

  4. 20189200余超 2018-2019-2 移动平台应用开发实践第七周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第七周作业 布局 在这一节中首先学习了java的页面布局,在此基础之上来进行了编程. 图片如下: 代码如下: *** 使用代码进行登录 ...

  5. 厚基础Linux——第七周作业

    文章目录 厚基础Linux--第七周作业 1.自建yum仓库,分别为网络源和本地源 环境规划 技术要求 需求分析 server端 client端 操作步骤 系统安装 server操作步骤 clinet ...

  6. 2019春第七周作业

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 要求我们掌握指针,可以更好的运用它 我在这个课程的目标是  学懂C语言,会编程一些简单的小应用 这个作业在那个具体方面帮助我实现目标  这 ...

  7. 20169211《移动平台开发实践》第七周作业

    教材学习内容总结 一.常见控件 Android控件的可见属性:所有的Android控件都具有这个属性,可以通过android:visibility进行指定,可选值有三种,visible.invisib ...

  8. 20162302 第七周作业

    20162302 2016-2017-2 <程序设计与数据结构>第七周学习总结 教材学习总结 复习以前的内容,修正代码中的错误 学习多态的用法 学习接口的相关内容,并创建多态引用 教材学习 ...

  9. 移动开发作业:三种近场通信技术的特点及对其未来应用场景的分析预测

    本次作业的内容为:请分析三种近场通信技术的特点,对未来近场通信技术的应用场景进行分析与预测: 近场通信 现在所说的近场通信技术,往往指的是Near Field Communication,简称NFC, ...

最新文章

  1. Python:urllib2模块Handler处理器 和 自定义Opener
  2. ESXi6.5环境搭建(二:ESXi 6.5环境的安装及配置)
  3. 产品设计体会(3000)项目与文档,系列说明
  4. JavaScript onerror事件
  5. 如何利用Gitlab-CI持续部署到远程机器?
  6. POJ2941 SDUT2371Homogeneous squares
  7. LeetCode 2177. 找到和为给定整数的三个连续整数
  8. 云图说|初识云数据库GaussDB(for Cassandra)
  9. centos7的网络配置
  10. www.12306.cn是安抚群众心灵的吧?
  11. SpringBoot学习(三)YAML语法、JSR303校验、多环境开发切换
  12. Oozie的安装及使用
  13. 【应用推荐】常见资源管理器整理,内含使用体验和个人使用推荐
  14. nginx加强安全模块
  15. 神经网络模型的实际案例,神经网络模型应用实例
  16. 初探iOS项目使用MVP模式
  17. Android中的UI组件
  18. easyUi input标签的失去焦点事件
  19. 操作系统:浅谈实模式,保护模式与长模式
  20. 计算机科学与技术学习路线编程基础四大件应用实践编程(含C++学习路线)

热门文章

  1. Natural Supervised Hashing
  2. 报错解决:加载数据库驱动报错-Loading class `com.mysql.jdbc.Driver‘. The new driver class is `com.mysql.cj.jdb
  3. 命令行窗口怎么使用快捷键关闭?
  4. python新手多多包涵
  5. 初创公司如何搭建开发框架_我帮助初创企业构建和部署数据科学的框架
  6. 最简单的冒泡法实现(python)
  7. IE浏览器设置兼容性
  8. 虚拟货币经济体的技术问题和非技术问题
  9. 英语六级高频词汇速记 + 2020-9听力 Day10
  10. 基于Javaweb的电量监控系统