关键词:
一些想法
- 需要使用shell编写一个简单实用的系统工具箱脚本
- 一共想出了两套方案
- 本套综合了一些自己的想法不是很熟练大家看个乐 (^o ^ )
基本使用界面大概是这样
分析需要的功能
我的构思将其分成7个部分
- 磁盘挂载信息部分
- 内存使用部分
- CPU利用率和负载部分
- 网络端口信息部分
- 进程信息部分
- 磁盘每秒进程下的IO读、写请求数量部分
- 没有匹配项重新显示菜单部分
构建整体框架
1、定义了函数
#<-----------------------询问继续使用工具箱函数定义
whether () read -p "Continue to use[y],sign out[n]:" play
if [[ "$play" == "y" ]];then
clear
else
echo "Thank you for your use. Have a nice day!";exit
fi
#<-------------------------菜单显示函数定义
ToolboxMenu ()
echo -e "\\033[5;34m ========This is a system detection toolbox============\\033[0m"
echo -e "\\033[33m | 1.查看磁盘挂载信息 | \\033[0m"
echo -e "\\033[33m | 2.查看内存信息 | \\033[0m"
echo -e "\\033[33m | 3.查看CPU信息 | \\033[0m"
echo -e "\\033[33m | 4.查看网络端口信息 | \\033[0m"
echo -e "\\033[33m | 5.查看进程信息 | \\033[0m"
echo -e "\\033[33m | 6.磁盘每秒进程下的I0读写数量 | \\033[0m"
echo -e "\\033[33m | 7.Exit Toolbox | \\033[0m"
echo -e "\\033[33m | Current Time:$(date "+%Y-%m-%d %H:%M:%S") welcome!!engineer! |\\033[0m"
echo -e "\\033[5;34m =============System detection toolbox=================\\033[0m"
2、使用交互定义变量邀请用户输入
#<----------------邀请用户输入需要检测的信息
read -p "Please enter your choice![1..7]" number
3、使用while循环让工具箱一直使用
4、中间为case判断选项
5、最后一部分为没有匹配项的匹配
#<------------------没有匹配项重新显示菜单
*)
echo -e "\\033[31m Error redirecting to menu for you ! \\033[0m"
;;
着手完整代码
#!/bin/bash
#Author:Pakho
#Date:2021.5.21
#File:SystemToolbox.sh
#VersionNumber:v1.0.1
#https://blog.csdn.net/sixeleven611
#Demand:Write system toolbox
#——————————————————————————————————
#script start
#<-----------------------询问继续使用工具箱函数定义
whether () read -p "Continue to use[y],sign out[n]:" play
if [[ "$play" == "y" ]];then
clear
else
echo "Thank you for your use. Have a nice day!";exit
fi
#菜单显示函数定义
ToolboxMenu ()
echo -e "\\033[5;34m ========This is a system detection toolbox============\\033[0m"
echo -e "\\033[33m | 1.查看磁盘挂载信息 | \\033[0m"
echo -e "\\033[33m | 2.查看内存信息 | \\033[0m"
echo -e "\\033[33m | 3.查看CPU信息 | \\033[0m"
echo -e "\\033[33m | 4.查看网络端口信息 | \\033[0m"
echo -e "\\033[33m | 5.查看进程信息 | \\033[0m"
echo -e "\\033[33m | 6.磁盘每秒进程下的I0读写数量 | \\033[0m"
echo -e "\\033[33m | 7.Exit Toolbox | \\033[0m"
echo -e "\\033[33m | Current Time:$(date "+%Y-%m-%d %H:%M:%S") welcome!!engineer! |\\033[0m"
echo -e "\\033[5;34m =============System detection toolbox=================\\033[0m"
#<----------------邀请用户输入需要检测的信息
while :
do
ToolboxMenu
read -p "Please enter your choice![1..7]" number
case $number in
#<-----------------------------------------------------------磁盘挂载信息
1)
echo -e "\\033[5;34m ============Partition information$z============\\033[0m"
df -hT
whether
;;
#<------------------------------------------------------内存使用情况
2)
echo -e "\\033[5;34m ============Memory usage============\\033[0m"
free -h
n=1
for i in 1..3
do
echo -e "\\033[5;34m ============Memory usage$n============\\033[0m"
vmstat | awk 'if(NR==3)print "You have free memory left:" $4'
let ++n
sleep 1
done
whether
;;
#<-------------------------------------------------------CPU利用率和负载
3)
v=1
for i in 1..3
do
echo -e "\\033[5;34m ============CPU usage$v===========\\033[0m"
uptime
vmstat | grep 2 |awk 'if (100-$15<=10)print 100-$15 "%","您的CPU很安全"elseprint 100-$15 "%","您的CPU即将满载请留意"'
let ++v
sleep 1
done
whether
;;
#<---------------------------------------------------------------网络端口信息
4)
while :
do
echo -e "\\033[5;34m ============Network port information============\\033[0m"
read -p "Please enter the network port number you want to query:" Port
netstat -anpt | head -2
netstat -anpt | grep $Port
read -p "Do you want to check the port?[y/n]" see
if [[ ! $see == "y" ]];then
echo "Thank you for your use. Have a nice day!";exit
else
break
fi
done
whether
;;
#<----------------------------------------------------------------进程信息查询
5)
echo -e "\\033[5;34m ============Process information============\\033[0m"
read -p "Please enter the process information you want to query:" Process
ps aux | grep -v grep |grep $Process
whether
;;
#<-------------------------------------------磁盘每秒进程下的IO读、写请求数量
6)
b=1
for i in 1..3
do
echo -e "\\033[5;34m ============Number of IO read / write requests issued by the process$b============\\033[0m"
iostat | grep ^sd | awk 'print $1,$2'
let ++b
sleep 1
done
whether
;;
#<---------------------------------退出
7)
echo -e "\\033[36 Thank you for your use. Have a nice day!\\033[0m"
exit
;;
#<------------------没有匹配项重新显示菜单
*)
echo -e "\\033[31m Error redirecting to menu for you ! \\033[0m"
;;
esac
done
#script end
在centos系统上安装shell脚本检查工具shellcheck(代码片段)
...了。使用使用也很简单,格式如下:#格式shellcheck脚本名#例如shellchecktest.sh 查看详情
如何用xshell编写脚本
1、在编写shell脚本的时候一般会先查询服务器可以使用哪种脚本,并且查看服务器使用的默认脚本方式是哪一种。2、进入shell的方式也是linux系统中经常使用的终端工具,也可以是外部链接软件,这两种方式都是可以的。3、进入... 查看详情
shell编程总结
...一种功能相当强大的编程语言。一个Shell程序,通常称为脚本,它是一个由系统调用,命令工具,软件包和已编译的二进制包"粘合" 起来的极易使用的工具。事实上,整个UNIX系统命令,软件包和工具都能由一个shell脚本调用... 查看详情
shell脚本之awk工具的使用
...现相当复杂的文本操作,被我们运维人员广泛应用于shell脚本,完成各中自动化配置任务。awk可以直接处理目标文件,也可以和sed命令一样通过“-f”选项读取脚本对目标文件进行处理。awk的语法格式如下:sed命令常用于整行处... 查看详情
shell脚本基础
Shell脚本简介:Shell脚本是一种特殊的程序,它是用户与linux系统内核之间的一个接口,shell是一个工具程序,在用户登录后系统启动。它解释并运行由命令行或脚本文件输入的命令,从而实现用户与内核间的交互。Shell脚本:也... 查看详情
unix系统之shell脚本之源
导读世界上对shell脚本最好的概念性介绍来自一个老的AT&T培训视频。在视频中,BrianW.Kernighan(awk中的“k”),LorindaL.Cherry(bc作者之一)论证了UNIX的基础原则之一是让用户利用现有的实用程序来定制... 查看详情
搭建yum仓库脚本
Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够... 查看详情
linux系统shell工具打印输出
参考技术ALinux系统shell工具打印输出 shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。那么Linux系统shell工具如何打印输出呢?跟我一起来看看吧! 一般都会通过chmod授予shell脚本的可执行权限... 查看详情
远程shell脚本执行工具类
/***远程shell脚本执行工具类*/publicclassRemoteShellExecutorUtilsprivatestaticfinalLoggerlogger=LoggerFactory.getLogger(RemoteShellExecutorUtils.class);privateConnectionconn;/***服务器IP*/privateStringip;/***用户名* 查看详情
常用linux系统命令和shell脚本
1.ps-ef|grepmysql查看与mysql相关进程2.kill-9pid强制杀死该进程3.find/-namestu.txt通过文件名搜索文件4.free-m显示Linux系统中空闲的、已用的物理内存 -m指以MB为单位5.topLinux 性能分析工具 6. chmod修改文件或目录权限7. chown改变文件所有... 查看详情
对shell脚本进行加密
用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.同样,在shell脚本运行时会也泄露敏感信息.请问如何不影响脚本运行的前提下,对脚本进行加... 查看详情
shell学习---shell脚本的静态检查工具shellcheck(代码片段)
Shell脚本的静态检查工具shellcheckubuntu下aptinstallshellcheck,即可安装shellcheck.写完shell脚本,记得用它检查一下,能给你点建议的.要检查现有项目的所有的脚本,findyour_project_folder-name"*.sh"|xargs-ishellcheck即可实现批量检查 查看详情
求助:如何在shell脚本中添加写日志的功能
参考技术A如何编写一个shell脚本本文结合大量实例阐述如何编写一个shell脚本。 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而... 查看详情
shell脚本变量与运算符(代码片段)
Shell脚本(一)概述、解析器、脚本入门Shell脚本(二)变量与运算符Shell脚本(三)条件判断与流程控制Shell脚本(四)”read读取控制台输入”与“函数”Shell脚本(五)Shell工具及企业面试... 查看详情
友情链接
第10章shell基础知识shell脚本在日常的linux系统管理工作中是必不可少的,如果不会写shell脚本,你就不算是一个合格的管理员。11.1 什么是shellshell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,... 查看详情
kafka入门实战教程:常用的shell工具脚本
Kafka默认提供了多个命令行脚本,用于实现各种各样的功能和运维管理。从2.2版本开始,提供了多达30+个Shell脚本。本文总结了Kafka提供的两组最常用也最实用的工具Shell脚本,分别cover了测试生产和消费,以及压测生产和消费的... 查看详情
shell脚本——crontab命令(代码片段)
crond是Linux系统用以周期性执行某种任务或等待处理某些事件的一个守护进程;一、crond介绍当完成安装操作系统,默认安装此服务工具,并自动启动crond进程;crond进程每分钟定时检查是否有要执行的任务,若... 查看详情
一个自动生成awr报告的shell脚本
...完成awr报告的收集工作,方便系统出现问题时问题排查。脚本内容如下,系统收集每天开始时间6点结束时间20点的awr报告并存储在/u01/shell_t/awr/目录下#!/bin/shexportORACLE_SID=PROD1exportORACLE_BASE=/u01/app/oracleexportORACLE_HOME=/u01/app/orac 查看详情