shell脚本——系统工具箱(systemtoolbox)(代码片段)

0611# 0611#     2023-01-01     182

关键词:

一些想法

  1. 需要使用shell编写一个简单实用的系统工具箱脚本
  2. 一共想出了两套方案
  3. 本套综合了一些自己的想法不是很熟练大家看个乐 (^o ^ )

基本使用界面大概是这样

分析需要的功能

我的构思将其分成7个部分

  1. 磁盘挂载信息部分
  2. 内存使用部分
  3. CPU利用率和负载部分
  4. 网络端口信息部分
  5. 进程信息部分
  6. 磁盘每秒进程下的IO读、写请求数量部分
  7. 没有匹配项重新显示菜单部分

构建整体框架

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 查看详情