shell写的检测linux系统硬件信息的脚本

合集下载

Linux系统安全审计脚本使用Shell脚本对系统进行安全审计

Linux系统安全审计脚本使用Shell脚本对系统进行安全审计

Linux系统安全审计脚本使用Shell脚本对系统进行安全审计一、引言随着互联网的快速发展,计算机系统安全问题越来越突出。

为了保护系统不受恶意攻击的侵害,我们需要对系统的安全性进行审计与监控。

本文将介绍如何使用Shell脚本来对Linux系统进行安全审计,以提高系统的安全性。

二、背景知识1. Shell脚本Shell脚本是一种程序设计语言,它以命令行解释器的形式存在。

通过编写Shell脚本,可以实现对系统的自动操作与管理。

2. Linux系统安全审计Linux系统安全审计是指对系统进行全面检查,发现系统中存在的安全漏洞、弱点和风险,以及制定相应的措施来防范和解决这些问题。

三、Linux系统安全审计脚本编写为了实现对Linux系统进行安全审计,我们可以使用Shell脚本编写一个用于自动化审计的工具。

下面是一个简单的Linux系统安全审计脚本示例:```shell#!/bin/bash# 定义输出函数function print_result {echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" }# 输出系统信息print_result "系统信息:"uname -a# 检查系统是否正常运行print_result "系统运行状态:"service apache2 statusservice mysql status# 检查系统安全漏洞print_result "系统安全漏洞检查:"apt-get updateapt-get upgrade --dry-run# 检查系统日志print_result "系统日志检查:"cat /var/log/syslog# 检查网络连接print_result "网络连接检查:" netstat -tuln# 检查后门print_result "后门检查:"ps -ef | grep backdoor# 检查异常登录print_result "异常登录检查:" last# 检查磁盘空间print_result "磁盘空间检查:" df -h# 检查文件权限print_result "文件权限检查:" ls -l /etc/passwdls -l /etc/shadow# 检查系统补丁print_result "系统补丁检查:"apt list --installed```四、脚本使用方法1. 将上述脚本保存为一个文件,例如`security_audit.sh`;2. 在终端中使用`chmod +x security_audit.sh`命令给脚本添加执行权限;3. 执行脚本:`./security_audit.sh`。

Linux系统性能测试脚本使用Shell脚本实现对Linux系统性能的压力测试和评估

Linux系统性能测试脚本使用Shell脚本实现对Linux系统性能的压力测试和评估

Linux系统性能测试脚本使用Shell脚本实现对Linux系统性能的压力测试和评估在开发和运维过程中,评估和测试系统性能是至关重要的。

这有助于发现可能存在的瓶颈和问题,以便及时采取措施进行优化和改进。

Linux系统提供了丰富的工具和命令来评估和测试系统性能,而其中使用Shell脚本来实现性能测试可以更加方便和有效。

一、性能测试的目的和重要性性能测试是为了评估计算机系统或软件在特定条件下的运行性能。

它可用于评估系统的稳定性、可靠性、可扩展性、响应时间等指标。

通过性能测试,我们可以发现系统的瓶颈,优化资源的利用,提高系统的吞吐量和响应速度。

二、Shell脚本的优势Shell脚本是Linux系统中常用的脚本语言,具有以下优势:1. 简单易用:Shell脚本语法相对简单,易于理解和学习,而且可以直接在终端运行,不需要编译和链接过程。

2. 灵活性高:Shell脚本可以通过调用系统命令和工具来实现各种功能,包括性能测试。

并且可以结合其他脚本语言进行更复杂的操作。

3. 命令丰富:在Linux系统中,有大量的命令和工具可供使用,可以通过Shell脚本集成这些命令和工具来完成性能测试任务。

三、Shell脚本实现性能测试的步骤1. 设定测试环境:在开始性能测试之前,需要准备适当的环境,并安装必要的工具和软件。

例如,可以使用yum命令安装sysstat工具和其他性能测试工具。

2. 编写Shell脚本:Shell脚本负责执行性能测试的具体步骤和命令。

可以使用循环结构和计时器来模拟实际的压力测试情况。

3. 运行脚本:通过运行Shell脚本,可以执行性能测试并获取测试结果。

测试结果可以保存到文件中以便后续分析和比较。

4. 分析测试结果:根据测试结果,可以进行性能评估和分析,找出性能瓶颈,并提出相应的优化建议。

四、Shell脚本示例下面是一个简单的Shell脚本示例,用于实现Linux系统的CPU、内存和磁盘性能测试。

```bash#!/bin/bash# 测试CPU性能echo "CPU性能测试开始..."sysbench --test=cpu --cpu-max-prime=20000 runecho "CPU性能测试结束。

Linux系统巡检脚本编写

Linux系统巡检脚本编写

Linux系统巡检脚本编写介绍:在使用Linux操作系统时,经常需要对系统进行巡检以确保其正常运行。

本文将介绍如何编写一个适用于Linux系统的巡检脚本,以便在检查系统运行状况时提供便捷和高效的方式。

脚本的目标:- 检查系统的硬件和网络连接是否正常。

- 检查系统的运行状态,包括CPU、内存和磁盘使用情况。

- 检查关键服务的运行状态,例如HTTP服务器、数据库等。

- 检查系统的安全性,包括防火墙和用户权限等。

脚本编写:#!/bin/bash# 定义函数用于检查硬件和网络连接function check_hardware() {echo "检查硬件和网络连接..."# 在此处添加检查硬件和网络连接的命令# 检查硬件状态,如CPU、内存、磁盘# 检查网络连接状态,如ping一个外部地址echo "检查硬件和网络连接完毕。

"echo}# 定义函数用于检查系统运行状态function check_system_status() {echo "检查系统运行状态..."# 在此处添加检查系统运行状态的命令# 检查CPU使用情况,使用top或者ps命令# 检查内存使用情况,使用free命令# 检查磁盘使用情况,使用df命令echo "检查系统运行状态完毕。

"echo}# 定义函数用于检查关键服务的运行状态function check_service_status() {echo "检查关键服务的运行状态..."# 在此处添加检查关键服务的运行状态的命令# 检查HTTP服务器的运行状态,如Apache或Nginx# 检查数据库的运行状态,如MySQL或PostgreSQL echo "检查关键服务的运行状态完毕。

"echo}# 定义函数用于检查系统安全性function check_security() {echo "检查系统安全性..."# 在此处添加检查系统安全性的命令# 检查防火墙的状态,如iptables# 检查用户权限,如root权限echo "检查系统安全性完毕。

Linux命令行中的硬件信息查看和驱动管理

Linux命令行中的硬件信息查看和驱动管理

Linux命令行中的硬件信息查看和驱动管理在Linux命令行中,我们可以通过一些命令来查看硬件信息和管理驱动,这对于系统维护和故障排除非常重要。

本文将介绍几个常用的命令及其用法,帮助您快速获取硬件信息和管理驱动。

1. 查看硬件信息1.1 lshw命令lshw(或者lswhw)是一个用于查看硬件信息的命令,可以列出系统中所有硬件的详细信息,包括处理器、内存、硬盘、网卡等。

使用示例:```$ sudo lshw```运行以上命令后,您将看到完整的硬件信息列表,可以通过滚动查看或者使用管道和grep命令过滤感兴趣的部分。

1.2 lspci命令lspci命令用于列出系统中所有PCI设备的信息,包括显卡、网卡、声卡等。

使用示例:```$ lspci```该命令会输出PCI设备的详细信息,可以通过管道和grep进行过滤。

1.3 lsusb命令lsusb命令用于列出系统中所有USB设备的信息。

使用示例:```$ lsusb```该命令会输出USB设备的详细信息,可以通过管道和grep进行过滤。

2. 管理驱动2.1 modprobe命令modprobe命令用于加载和卸载Linux内核模块,包括驱动程序。

使用示例:```$ sudo modprobe <module_name> // 加载模块$ sudo modprobe -r <module_name> // 卸载模块```其中,`<module_name>`为要加载或卸载的模块名称。

2.2 lsmod命令lsmod命令用于列出当前已加载的内核模块。

使用示例:```$ lsmod```该命令会输出已加载模块的列表,包括模块名称、使用次数等信息。

2.3 rmmod命令rmmod命令用于卸载已加载的内核模块。

使用示例:```$ sudo rmmod <module_name>```其中,`<module_name>`为要卸载的模块名称。

Linux系统磁盘空间监控脚本使用Shell脚本监控磁盘空间并发送提醒

Linux系统磁盘空间监控脚本使用Shell脚本监控磁盘空间并发送提醒

Linux系统磁盘空间监控脚本使用Shell脚本监控磁盘空间并发送提醒随着计算机应用的广泛普及,对服务器和系统的监控变得越来越重要。

其中,对于Linux系统的磁盘空间的监控尤为重要,因为磁盘空间的过度使用可能导致系统崩溃和性能下降。

为了解决这个问题,我们可以借助Shell脚本来监控Linux系统的磁盘空间,并及时发送提醒。

一、编写Shell脚本为了实现Linux系统磁盘空间的监控,我们首先需要编写一个Shell 脚本。

下面是一个示例脚本:```shell#!/bin/bash# 获取磁盘空间使用率disk_usage=$(df -h | grep /dev/sda1 | awk '{print $5}' | cut -d'%' -f1)# 设置阈值threshold=80# 判断磁盘空间使用率是否超过阈值if [ "$disk_usage" -gt "$threshold" ]; then# 发送邮件提醒echo "磁盘空间使用率已超过阈值,请及时处理。

" | mail -s "磁盘空间监控提醒"****************fi```在这个示例脚本中,我们首先使用`df -h`命令获取整个系统磁盘的使用情况,并通过`grep`命令和`awk`命令提取出我们关注的磁盘空间使用率。

然后,我们设置了一个阈值(例如80%),如果磁盘空间使用率超过阈值,就会发送一封邮件提醒管理员。

二、设置定时任务为了能够定期执行磁盘空间监控脚本,我们可以使用Linux系统提供的Cron服务来设置定时任务。

1. 打开终端,输入以下命令来编辑Cron任务表:```shellcrontab -e```2. 在打开的文本编辑器中,添加以下内容:```shell*/5 * * * * /path/to/monitor_disk_space.sh```上述命令中,`*/5 * * * *`表示每隔5分钟执行一次脚本,`/path/to/monitor_disk_space.sh`路径需要替换为你实际脚本的路径。

Linux系统进程监控脚本使用Shell脚本监控系统进程并自动重启

Linux系统进程监控脚本使用Shell脚本监控系统进程并自动重启

Linux系统进程监控脚本使用Shell脚本监控系统进程并自动重启Shell脚本作为一种自动化脚本语言,可在Linux系统中编写和执行各种任务。

其中,一项重要的任务是监控系统进程并在必要时自动重启。

本文将介绍如何使用Shell脚本来实现Linux系统进程监控和自动重启的功能。

一、编写监控脚本首先,我们需要编写一个监控脚本来监控系统中的进程。

以下是一个示例的监控脚本:```#!/bin/bashprocess_name="example_process" # 要监控的进程名称while truedoprocess_num=$(pgrep $process_name | wc -l) # 统计进程数量if [ $process_num -eq 0 ]; then # 如果进程数量为0echo "进程 $process_name 未运行,正在尝试重新启动..."# 重新启动进程的命令,例如:# /path/to/example_process &# 注意加上后台运行符号&fisleep 60 # 休眠60秒,避免频繁检测done```在上述脚本中,首先定义了要监控的进程名称为`example_process`,然后使用一个无限循环来检测进程是否在运行。

通过`pgrep`命令和`wc -l`命令可以统计指定进程名称的进程数量。

如果进程数量为0,则输出提示信息,并执行重启进程的操作(根据实际情况自行修改重启命令)。

最后,使用`sleep`命令休眠60秒,以避免频繁检测。

二、保存并设置执行权限将上述脚本保存为一个以`.sh`为后缀的文件,例如`monitor_process.sh`。

然后,通过命令`chmod +x monitor_process.sh`为脚本文件添加执行权限。

三、设定定时任务为了让监控脚本能够定期执行,我们可以使用Linux系统中的定时任务功能。

Linux服务器批量巡检脚本使用说明

Linux服务器批量巡检脚本使用说明

文件说明该Shell脚本旨在针对大量Linux服务器的巡检提供一种相对自动化的解决方案。

脚本组成有三部分:shellsh.sh、checksh.sh、file.txt;这三个文件需放在一个文件夹下以root权限执行,缺一不可。

脚本用法将要巡检的服务器的IP地址和对应的密码全部放入file.txt中保存,每行一个IP对应一个密码即可。

然后用如下命令运行:#./ shellsh.sh file.txt 192.168.182.143 123456其中file.txt可以更换文件名,192.168.182.143为你想保存巡检日志的到哪个服务器的服务器IP,123456为该服务器的密码。

运行结果运行完后会在192.168.182.143服务器的/tmp目录下升成一个目录,即:GatherLogDirectory这个目录下即存放的是被巡检的服务器的巡检日志,这些日志以被巡检的服务器的IP命名,形如:192.168.182.146.log。

在被巡检的服务器上会升成两个目录即:CheckScript、 LocalServerLogDirectory;其中CheckScript中是checksh.sh脚本,LocalServerLogDirectory中存放的是checksh.sh 在该服务器上运行后升成的日志。

测试结果我只在虚拟机上的三台Linux系统上测试过,分别是Ubuntu、RedHat、Kali。

运行正常,平均巡检一个服务器花费3分钟。

脚本代码shellsh.sh#!/bin/bashlogin_info=$1gather_server_ip=$2gather_server_password=$3grep_ip=`ifconfig | grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' --color=auto -o | sed -e '2,5d'`GatherPath="/tmp/GatherLogDirectory"CheckScriptPath="/tmp/CheckScript"if [ $# -ne 3 ]; thenecho -e "Parameters if fault!\n"echo -e "Please using:$0 login_info gather_server_ip\n"echo -e "For example: $0 IpAndPassword.txt $grep_ip\n"exit;fiif [ ! -x "$GatherPath" ];thenmkdir "$GatherPath"echo -e "The log's path is: $GatherPath"ficat $login_info | while read linedoserver_ip=`echo $line|awk '{print $1}'`server_password=`echo $line|awk '{print $2}'`login_server_command="ssh -o StrictHostKeyChecking=no root@$server_ip"scp_gather_server_checksh="scp checksh.sh root@$server_ip:$CheckScriptPath"/usr/bin/expect<<EOFset timeout 20spawn $login_server_commandexpect {"*yes/no" { send "yes\r"; exp_continue }"*password:" { send "$server_password\r" }}expect "Permission denied, please try again." {exit}expect "#" { send "mkdir $CheckScriptPath\r"}expect eofexitEOF/usr/bin/expect<<EOFset timeout 20spawn $scp_gather_server_checkshexpect {"*yes/no" { send "yes\r"; exp_continue }"*password:" { send "$server_password\r" }}expect "Permission denied, please try again." {exit}expect "Connection refused" {exit}expect "100%"expect eofexitEOF/usr/bin/expect<<EOFset timeout 60spawn $login_server_commandexpect {"*yes/no" { send "yes\r"; exp_continue }"*password:" { send "$server_password\r" }}expect "Permission denied, please try again." {exit}expect "#" { send "cd $CheckScriptPath;./checksh.sh $gather_server_ip $gather_server_password\r"}expect eofexitEOFdonechecksh.sh#!/bin/bash#########################################################################################Function:#This script checks the system's information,disks's information,performance,etc...of the #server##Author:#By Jack Wang##Company:#ShaanXi Great Wall Information Co.,Ltd.####################################################################### ######################################################################################## ###################GatherServerIpAddress is the server's IP address that gather the checking log#GatherServerPassword is the server's IP address that gather the checking log######################################################################## #################GatherServerIpAddress=$1GatherServerPassword=$2####################################################################### ##################GetTheIpCommand is a command that you can get the IP address####################################################################### #################GetTheIpCommand=`ifconfig | grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' --color=auto -o | sed -e '2,5d'`####################################################################### ##################LogName is a command that Your logs'name####################################################################### #################LogName=`ifconfig|grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' --color=auto -o|sed -e '2,5d'``echo "-"``date +%Y%M%d`####################################################################### ###################GatherLogPath is a path that collecting log path#LocalServerLogPath is local log path######################################################################## #################GatherServerLogPath="/tmp/GatherLogDirectory"LocalServerLogPath="/tmp/LocalServerLogDirectory"####################################################################### ##################LinuxOsInformation is function that usege to collect OS's information####################################################################### #################LinuxOsInformation(){Hostname=`hostname`UnameA=`uname -a`OsVersion=`cat /etc/issue | sed '2,4d'`Uptime=`uptime|awk '{print $3}'|awk -F "," '{print $1}'`ServerIp=`ifconfig|grep "inet"|sed '2,4d'|awk -F ":" '{print $2}'|awk '{print $1}'` ServerNetMask=`ifconfig|grep "inet"|sed '2,4d'|awk -F ":" '{print $4}'|awk '{print $1}'` ServerGateWay=`netstat -r|grep "default"|awk '{print $2}'`SigleMemoryCapacity=`dmidecode|grep -P -A5 "Memory\s+Device"|grep "Size"|grep -v"Range"|grep '[0-9]'|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`MaximumMemoryCapacity=`dmidecode -t 16|grep "Maximum Capacity"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`NumberOfMemorySlots=`dmidecode -t 16|grep "Number Of Devices"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`MemoryTotal=`cat /proc/meminfo|grep "MemTotal"|awk '{printf("MemTotal:%1.0fGB\n",$2/1024/1024)}'|awk -F ":" '{print $2}'` PhysicalMemoryNumber=`dmidecode|grep -A16 "Memory Device"|grep "Size:"|grep -v "No Module Installed"|grep -v "Range Size:"|wc -l`ProductName=`dmidecode|grep -A10 "System Information"|grep "Product Name"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`SystemCPUInfomation=`cat /proc/cpuinfo|grep "name"|cut -d: -f2|awk '{print "*"$1,$2,$3,$4}'|uniq -c|sed 's/^[ \t]*//g'`echo -e "Hostname|$Hostname\nUnamea|$UnameA\nOsVersion|$OsVersion\nUptime|$Uptime\n ServerIp|$ServerIp\nServerNetMask|$ServerNetMask\nServerGateWay|$ServerGateWa y\nSigleMemoryCapacity|$SigleMemoryCapacity\nMaximumMemoryCapacity|$Maximum MemoryCapacity\nNumberOfMemorySlots|$NumberOfMemorySlots\nMemoryTotal|$Me moryTotal\nPhysicalMemoryNumber|$PhysicalMemoryNumber\nProductName|$Product Name\nSystemCPUInformation|$SystemCPUInfomation"}PerformanceInfomation (){CPUIdle=`top -d 2 -n 1 -b|grep C[Pp][Uu]|grep id|awk '{print $5}'|awk -F "%" '{print $1}'` CPUloadAverage=`top -d 2 -n 1 -b|grep "load average:"|awk -F ":" '{print $5}'|sed 's/^[ \t]*//g'`ProcessNumbers=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $3}'` ProcessRunning=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $8}'` ProcessSleeping=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $11}'` ProcessStoping=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $16}'` ProcessZombie=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $21}'` UserSpaceCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $4}'` SystemSpaceCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $8}'` ChangePriorityCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $12}'` WaitingCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $19}'` HardwareIRQCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $23}'` SoftwareIRQCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F "[: ,%]" '{print $27}'` MemUsed=`top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $11}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`MemFreeP=`top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $16}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`MemBuffersP=` top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $22}'|tr -d "a-zA-Z"|awk'{printf("%dM\n",$1/1024)}'`CacheCachedP=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $24}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`CacheTotal=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $4}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`CacheUsed=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $14}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`CacheFree=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $18}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`echo -e "CPUIdle|$CPUIdle\nCPUloadAverage|$CPUloadAverage\nProcessNumbers|$ProcessN umbers\nProcessRunning|$ProcessRunning\nProcessSleeping|$ProcessSleeping\nProc essStoping|$ProcessStoping\nProcessZombie|$ProcessZombie\nUserSpaceCPU|$User SpaceCPU\nSystemSpaceCPU|$SystemSpaceCPU\nChangePriorityCPU|$ChangePriori tyCPU\nWaitingCPU|$WaitingCPU\nHardwareIRQCPU|$HardwareIRQCPU\nSoftwareIR QCPU|$SoftwareIRQCPU\nMemUsed|$MemUsed\nMemFreeP|$MemFreeP\nMemBuffe rsP|$MemBuffersP\nCacheCachedP|$CacheCachedP\nCacheTotal|$CacheTotal\nCach eUsed|$CacheUsed\nCacheFree|$CacheFree\n"}OprateSystemSec () {echo '======================UserLogin======================' wecho '======================FileUsed=======================' df -ahecho '======================dmesgError=====================' dmesg | grep errorecho '======================dmesgFail======================' dmesg | grep Failecho '======================BootLog========================' more /var/log/boot.log | grep -V "OK" | sed '1,6d'echo '======================route -n=======================' route -necho '======================iptables -L====================' iptables -Lecho '======================netstat -lntp==================' netstat -lntpecho '======================netstat -antp=================='netstat -antpecho '======================BootLog========================' netstat -secho '======================netstat -s=====================' lastecho '======================du -sh /etc/==================='du -sh /etc/echo '======================du -sh /boot/=================='du -sh /boot/echo '======================du -sh /dev/===================' du -sh /dev/echo '======================df -h==========================' df -hecho '======================mount | column -t==============' mount | column -t}TopAndVmstat(){top -d 2 -n 1 -bvmstat 1 10CheckGatherLog(){if [ -f "$LocalServerLogPath/$GetTheIpCommand.log" ];thenrm -rf $LocalServerLogPath/$GetTheIpCommand.logfiif [ ! -x "$LocalServerLogPath" ];thenmkdir "$LocalServerLogPath"fiif [ ! -f "$LocalServerLogPath/$GetTheIpCommand.log" ];thentouch $LocalServerLogPath/$GetTheIpCommand.logLinuxOsInformation>>$LocalServerLogPath/$GetTheIpCommand.logPerformanceInfomation>>$LocalServerLogPath/$GetTheIpCommand.log OprateSystemSec>>$LocalServerLogPath/$GetTheIpCommand.logTopAndVmstat>>$LocalServerLogPath/$GetTheIpCommand.logfi}CheckGatherLogSCP_LOG_TO_GATHER_SERVER="scp $LocalServerLogPath/$GetTheIpCommand.log root@$GatherServerIpAddress:$GatherServerLogPath"/usr/bin/expect<<EOFset timeout 50spawn $SCP_LOG_TO_GATHER_SERVERexpect {"*yes/no)?"{send "yes\n""*password:*" {send "GatherServerPassword\n"}}"*password:"{send "$GatherServerPassword\n"}}expect "*password:" { send "$GatherServerPassword\n" }expect "100%"expect eofEOF。

Linux系统服务监控脚本使用Shell脚本实现对Linux系统服务运行状态的监控和报警

Linux系统服务监控脚本使用Shell脚本实现对Linux系统服务运行状态的监控和报警

Linux系统服务监控脚本使用Shell脚本实现对Linux系统服务运行状态的监控和报警在Linux系统中,运行着许多关键的服务,如网络服务、数据库服务等。

它们在系统运行中扮演着重要的角色。

然而,有时候这些服务可能会出现故障或停止运行,给系统的正常运行带来风险。

为了保证系统的可靠性和稳定性,我们需要实现对这些服务的监控和报警。

本文将介绍如何使用Shell脚本来实现Linux系统服务监控,并在需要时发送报警通知。

一、监控服务状态1. 创建监控脚本首先,我们需要创建一个Shell脚本,用于监控特定的服务。

使用文本编辑器,创建一个后缀名为.sh的文件,比如monitor.sh,并设置相应的执行权限。

2. 编写监控脚本代码在monitor.sh文件中,我们将使用systemctl命令来检查服务的状态。

以下是一个示例脚本,用于监控Apache Web服务器的运行状态:```bash#!/bin/bash# 定义服务名称SERVICE="httpd"# 检查服务状态status=$(systemctl is-active $SERVICE)# 判断服务状态if [[ $status != "active" ]]; thenecho "服务 $SERVICE 未运行!"# 在此处添加发送报警通知的代码fi```在脚本中,我们使用systemctl is-active命令来获取服务的状态,并将其存储在变量status中。

然后,使用条件语句判断服务状态是否为"active",如果不是,则输出一条错误信息。

3. 添加更多服务监控根据需要,你可以在脚本中添加更多的服务监控代码。

只需将上述步骤中的SERVICE变量修改为你要监控的服务名称,并添加相应的判断逻辑即可。

二、实现报警功能当监控脚本检测到服务状态异常时,我们希望能够及时收到报警通知。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

shell写的检测linux系统硬件信息的脚本前面用python写了一个检测windonws硬件信息的脚本,这里是很久之前用shell写的一个linux系统硬件信息检测脚本,可以对照看一下。

检测内容基本一样:操作系统信息、内存、CPU、硬盘分区及挂载情况,网卡配置情况、安装的软件信息等。

1.#!/bin/bash2.#This script is used to check the server3.#system info4.system_info() {5.echo "**********************************************"6.echo "system info:"7.echo8.echo " System-release : `cat /etc/redhat-release`"9.echo " Kernel-release : `uname -a|awk '{print $1,$3}'`"10.echo " Server-Model : `dmidecode | grep "Product Name:"|sed -n '1p'|awk -F': ' '{print $2}'`"11.echo12.}13.14.15.16.17.#CPU info18.cpu_info() {19.echo "**********************************************"20.echo "CPU info:"21.echo22.echo " Frequency : `cat /proc/cpuinfo | grep "model name" | uniq |awk -F': ' '{print $2}'`"23.echo " CPU cores: `cat /proc/cpuinfo | grep "cpu cores"| uniq |awk -F': ' '{print $2}'`"24.echo " Logic Count : `cat /proc/cpuinfo | grep "processor" | sort -u| wc -l `"25.echo " Physical Count : `cat /proc/cpuinfo | grep "physical" | sort -u| wc -l`"26.echo " Cache size : `cat /proc/cpuinfo| grep "cache size"|uniq|awk '{print $4,$5}'`"27.echo28.}29.30.31.32.33.34.#memory info35.mem_info() {36.memory=`dmidecode |grep "Range Size"|head -1|awk '{print $3$4}'`37.mem_size=`echo "This server has ${memory} memory."`38.39.echo "**********************************************"40.echo "Memory info:"41.echo42.echo " Total : ${mem_size}"43.echo " Count : `dmidecode |grep -A16 "Memory Device$"|grep Size|awk '{if($2!~/No/) print $0}'|wc -l`"44.dmidecode |grep -A20 "Memory Device$"|grep Size|sed '{s/^ */ /g};{/No/d}'45.echo46.}47.48.49.50.51.52.#disk and partitions53.swap_pos=`cat /proc/swaps|sed -n '2p'|awk '{print $1}'`54.partition_info() {55.echo "**********************************************"56.echo "Hard disk info:"57.echo58.echo "`fdisk -l|grep Disk|awk -F, '{print $1}'`"59.echo "**********************************************"60.echo "Partition info:"61.echo62.df -h | grep -v Filesystem | sed "s:none:${swap_pos}:"63.echo64.}65.66.67.#network adapter info68.adapter_info() {69.70.duplex_eth0=`ethtool eth0 | grep Duplex | awk '{if($2~/Full/) print "Full"};{if($2~/Half/)print "Half"};{if($2~/Uknown!/) prin t "unknown"}'`71.72.duplex_eth1=`ethtool eth1 | grep Duplex | awk '{if($2~/Full/) print "Full"};{if($2~/Half/)print "Half"};{if($2~/Uknown!/) prin t "unknown"}'`73.74.Negotiation_eth0=`ethtool eth0 | grep "Advertised auto-negotiation"|awk -F': ''{if($2~/No/) print "Non-negotiation."};{if($2~/Yes/) print "Negotiation"}'`75.76.Negotiation_eth1=`ethtool eth1 | grep "Advertised auto-negotiation"|awk -F': ''{if($2~/No/) print "Non-negotiation"};{if($2~/Yes/) print "Negotiation"}'`77.78.IP_eth0=`cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep IPADDR|awk -F= '{print $2}'`79.80.IP_eth1=`cat /etc/sysconfig/network-scripts/ifcfg-eth1|grep IPADDR|awk -F= '{print $2}'`81.82.speed_eth0=`ethtool eth0|grep Speed|awk '{print $2}'`83.speed_eth1=`ethtool eth1|grep Speed|awk '{print $2}'`84.85.echo "**********************************************"86.echo "Network adapter info:"87.echo88.echo " IP_eth0 : ${IP_eth0} IP_eth0 : ${IP_eth1}"89.echo " Speed_eth0 : ${speed_eth0} Speed_eth1 : ${speed_eth1}"90.echo " Duplex_eth0 : ${duplex_eth0} Duplex_eth1: ${duplex_eth1}"91.echo " Negotiation_eth0 : ${Negotiation_eth0} Negotiation_eth1 : ${Negotiation_eth1}"92.echo93.}94.95.96.97.98.#software package99.software_info() {100.echo "**********************************************"101.echo "SELinux is `cat /etc/selinux/config |grep SELINUX=dis abled|awk -F= '{print $2}'||echo "enabled"`"102.echo "`service iptables status|sed 's/Firewall/Iptables/g'` "103.echo104.echo "**********************************************"105.sed -n '/%packages/,/%post/p;' /root/anaconda-ks.cfg|sed '/%post/d;/^$/d'106.echo "**********************************************" 107.}108.109.110.111.#del mac-addr112.#sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0113.#sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1114.115.116.system_info117.cpu_info118.mem_info119.partition_info 120.adapter_info 121.software_info。

相关文档
最新文档