第七周作业——第三种
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))
执行结果:
第七周作业——第三种相关推荐
- 2019年春季学期第七周作业
A Q 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 2019春第七周作业 我在这个课程的目标是 尽可能了解并且应用指针及文件和数组的知识 这个作业在那个具体方面帮助我实现目标 大致掌 ...
- 2017-2018-2 20179215《密码与安全新技术》第七周作业
2017-2018-2 20179215 <密码与安全新技术> 第七周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 袁琳 学号:20179215 上课教师:谢 ...
- 学号20189220余超 2018-2019-2 《密码与安全新技术专题》第七周作业
学号20189220 余超 2018-2019-2 <密码与安全新技术专题>第七周作业--论文学习及报告总结 课程:<密码与安全新技术专题> 班级: 1892 姓名: 余超 学 ...
- 20189200余超 2018-2019-2 移动平台应用开发实践第七周作业
20189200余超 2018-2019-2 移动平台应用开发实践第七周作业 布局 在这一节中首先学习了java的页面布局,在此基础之上来进行了编程. 图片如下: 代码如下: *** 使用代码进行登录 ...
- 厚基础Linux——第七周作业
文章目录 厚基础Linux--第七周作业 1.自建yum仓库,分别为网络源和本地源 环境规划 技术要求 需求分析 server端 client端 操作步骤 系统安装 server操作步骤 clinet ...
- 2019春第七周作业
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 要求我们掌握指针,可以更好的运用它 我在这个课程的目标是 学懂C语言,会编程一些简单的小应用 这个作业在那个具体方面帮助我实现目标 这 ...
- 20169211《移动平台开发实践》第七周作业
教材学习内容总结 一.常见控件 Android控件的可见属性:所有的Android控件都具有这个属性,可以通过android:visibility进行指定,可选值有三种,visible.invisib ...
- 20162302 第七周作业
20162302 2016-2017-2 <程序设计与数据结构>第七周学习总结 教材学习总结 复习以前的内容,修正代码中的错误 学习多态的用法 学习接口的相关内容,并创建多态引用 教材学习 ...
- 移动开发作业:三种近场通信技术的特点及对其未来应用场景的分析预测
本次作业的内容为:请分析三种近场通信技术的特点,对未来近场通信技术的应用场景进行分析与预测: 近场通信 现在所说的近场通信技术,往往指的是Near Field Communication,简称NFC, ...
最新文章
- Python:urllib2模块Handler处理器 和 自定义Opener
- ESXi6.5环境搭建(二:ESXi 6.5环境的安装及配置)
- 产品设计体会(3000)项目与文档,系列说明
- JavaScript onerror事件
- 如何利用Gitlab-CI持续部署到远程机器?
- POJ2941 SDUT2371Homogeneous squares
- LeetCode 2177. 找到和为给定整数的三个连续整数
- 云图说|初识云数据库GaussDB(for Cassandra)
- centos7的网络配置
- www.12306.cn是安抚群众心灵的吧?
- SpringBoot学习(三)YAML语法、JSR303校验、多环境开发切换
- Oozie的安装及使用
- 【应用推荐】常见资源管理器整理,内含使用体验和个人使用推荐
- nginx加强安全模块
- 神经网络模型的实际案例,神经网络模型应用实例
- 初探iOS项目使用MVP模式
- Android中的UI组件
- easyUi input标签的失去焦点事件
- 操作系统:浅谈实模式,保护模式与长模式
- 计算机科学与技术学习路线编程基础四大件应用实践编程(含C++学习路线)
热门文章
- Natural Supervised Hashing
- 报错解决:加载数据库驱动报错-Loading class `com.mysql.jdbc.Driver‘. The new driver class is `com.mysql.cj.jdb
- 命令行窗口怎么使用快捷键关闭?
- python新手多多包涵
- 初创公司如何搭建开发框架_我帮助初创企业构建和部署数据科学的框架
- 最简单的冒泡法实现(python)
- IE浏览器设置兼容性
- 虚拟货币经济体的技术问题和非技术问题
- 英语六级高频词汇速记 + 2020-9听力 Day10
- 基于Javaweb的电量监控系统