shell脚本监控服务器状态
在Linux中使用Python脚本实现服务监控和重启

在Linux中使用Python脚本实现服务监控和重启Linux作为一个稳定可靠的操作系统,广泛应用于服务器领域。
其中,对于服务的监控和重启是一项重要任务,可以确保服务的稳定性和可用性。
本文将介绍如何使用Python脚本在Linux中实现服务监控和重启的方法。
一、服务监控服务监控是指实时监测服务的运行状态,当服务出现异常时及时发出警报并采取相应的措施。
在Linux中,可以通过Python脚本来实现服务监控的功能。
首先,我们需要了解如何使用Python脚本来监控服务的运行状态。
可以通过subprocess模块来执行Linux系统命令,并获取命令的返回结果。
下面是一个示例代码:```pythonimport subprocessdef check_service_status(service_name):result = subprocess.run(["systemctl", "is-active", service_name], capture_output=True)return result.stdout.decode().strip()if __name__ == "__main__":service_name = "httpd" # 替换为你要监控的服务名status = check_service_status(service_name)print(f"The status of {service_name} is {status}")```上述代码中,我们使用了`subprocess.run`方法来执行`systemctl is-active`命令,通过该命令可以获取服务的运行状态。
然后,我们将命令的输出结果进行解码和处理,得到服务的状态信息。
通过以上代码片段,我们可以编写一个完整的Python脚本来监控多个服务的状态。
使用shell脚本进行系统日志分析和监控

使用shell脚本进行系统日志分析和监控引言:Shell脚本是一种自动化执行命令的工具,能够帮助管理者简化和优化系统日志分析和监控的过程。
本文将介绍如何使用Shell脚本进行系统日志的分析和监控,以及一些实用的技巧和建议。
一、系统日志分析系统日志是操作系统记录重要事件的文件,通过对系统日志的分析可以获得有关系统健康状况和安全性的重要信息。
下面是一些使用Shell脚本进行系统日志分析的方法:1. 分析错误日志:使用Shell脚本可以轻松地从系统日志中提取错误信息,并对其进行分析。
可以编写一个脚本,通过grep命令从系统日志文件中搜索关键字,然后将匹配的行输出为错误报告。
这样可以帮助管理员快速定位和处理系统中的错误。
2. 监控登录活动:系统日志中记录了用户的登录活动,可以使用Shell脚本监控系统的登录活动情况。
管理员可以编写一个脚本,定期检查系统日志中的登录记录,并生成登录历史报告。
这样可以及时发现异常登录活动,并采取相应的措施保护系统的安全。
3. 分析性能日志:系统日志还记录了有关系统性能的信息,如CPU使用率、内存使用情况等。
使用Shell脚本可以将这些性能日志提取出来,并生成性能统计报告。
通过对系统性能的分析,管理员可以及时发现系统负载过重或资源不足的问题,并采取相应的优化措施。
二、系统日志监控除了分析系统日志,使用Shell脚本还可以实现系统日志的实时监控。
下面是一些使用Shell脚本进行系统日志监控的方法:1. 监控日志文件的变化:使用Shell脚本可以监控系统日志文件的变化,并实时将新的日志行输出到屏幕或其他文件中。
可以编写一个脚本,使用tail命令实时监控系统日志文件,当日志文件发生变化时,将新增的日志行输出到屏幕上。
2. 实时警报:通过对系统日志的实时监控,可以及时发现系统中的异常情况,并进行相应的处理。
可以编写一个脚本,使用grep命令实时检查系统日志中的关键字,当匹配到预设的关键字时,发送警报通知管理员。
.net利用powershell脚本检查服务器及IIS状态

.net利⽤powershell脚本检查服务器及IIS状态在.net 环境下调⽤powershell 脚本,需要额外引⽤ “System.Management.Automation;"powershell 脚本⽰例,⽂件名保存为 2.ps1:#检查IIS状态function Get-IISStatus{param(#输⼊参数#[Paramter(Mandatory=$true)][String]$password,[String]$username,$server)$password_conv =ConvertTo-SecureString -String $password -AsPlainText -Force#创建凭证,server 2012及以上版本可⽤,2008似乎不⾏$credential =New-Object System.Management.Automation.PSCredential -argumentlist $username ,$password_conv$sessions=New-PSSession -ComputerName $server -credential $credential#远程执⾏脚本,加了过滤#Invoke-Command -Session $sessions -ScriptBlock {Get-WebAppPoolState -Name 'DefaultAppPool' | % { return @{($_.itemxpath -split ("'"))[1]="$($_.value)" } } } #未过滤返回值Invoke-Command -Session $sessions -ScriptBlock {Get-WebAppPoolState -Name 'DefaultAppPool'}}对应.net 中调⽤代码⽰例://获取SP1⽂件来执⾏脚本string filePath = Server.MapPath("../Scripts/Powershell/2.ps1");try{using (Runspace runspace = RunspaceFactory.CreateRunspace()){string te = GetFileContent(filePath);runspace.Open();PowerShell ps = PowerShell.Create();ps.Runspace = runspace;ps.AddScript(te);ps.Invoke();//调⽤脚本//执⾏脚本中的⽅法,附带参数ps.AddCommand("Get-IISStatus").AddParameters(new Dictionary<string, string>(){{ "password","123" },{ "username", "username"},{ "server", "server1"}});//获取返回值foreach (PSObject result in ps.Invoke()){if (result.Properties["Name"].Value.ToString() == "state" & result.Properties["Value"].Value.ToString() == "Stopped"){Console.Write("IISpool 已经关闭!");}else{Console.Write("有问题?!");}}return null;}}catch (Exception ex){throw;}private static string GetFileContent(string filePath){FileStream fs = new FileStream(filePath, FileMode.Open); StreamReader reader = new StreamReader(fs);return reader.ReadToEnd();}。
Linux系统网络监控脚本使用Shell脚本实现对Linux系统网络流量和连接状态的监控

Linux系统网络监控脚本使用Shell脚本实现对Linux系统网络流量和连接状态的监控在Linux系统管理和维护中,网络监控是非常重要的一项任务。
通过对网络流量和连接状态的监控,管理员可以及时发现并解决网络故障,保证系统的正常运行。
本文将介绍如何使用Shell脚本实现对Linux系统网络监控。
一、创建脚本文件首先,我们需要创建一个Shell脚本文件来实现网络监控功能。
使用文本编辑器,新建一个空白文件,并将其保存为monitor.sh。
确保你有足够的权限来执行该脚本。
二、导入必要的库和设置变量在monitor.sh文件的开头,我们需要导入必要的库和设置一些变量。
具体的代码如下所示:```#!/bin/bash# 导入必要的库. /etc/init.d/functions# 设置变量INTERVAL=5 # 监控间隔时间,单位为秒THRESHOLD=1000000 # 流量阈值,单位为字节```上述代码中,我们通过source命令导入了/etc/init.d/functions库,该库包含了一些常用的函数,方便我们在脚本中使用。
我们还设置了两个变量INTERVAL和THRESHOLD,分别表示监控的时间间隔和流量阈值。
三、监控网络流量接下来,我们需要编写代码来监控网络流量。
具体的代码如下所示:```while truedoRX_PREV=$(cat /proc/net/dev | grep eth0 | awk '{print $2}')TX_PREV=$(cat /proc/net/dev | grep eth0 | awk '{print $10}')sleep $INTERVALRX_CURR=$(cat /proc/net/dev | grep eth0 | awk '{print $2}')TX_CURR=$(cat /proc/net/dev | grep eth0 | awk '{print $10}')RX_BYTES=$(($RX_CURR - $RX_PREV))TX_BYTES=$(($TX_CURR - $TX_PREV))if [[ $RX_BYTES -gt $THRESHOLD ]] || [[ $TX_BYTES -gt $THRESHOLD ]]; thenaction "网络流量超过阈值" /bin/truefidone```上述代码中,我们使用了一个无限循环来实时监控网络流量。
shell脚本实现多台服务器自动巡检

shell脚本实现多台服务器⾃动巡检shell脚本实现多台服务器⾃动巡检摘要:运维服务⼀个项⽬⼆⼗多台(或者多台)服务器,每天要做服务器的性能巡检⼯作是查看服务器的CPU、内存、磁盘空间是否在正常值范围内。
像这样每天或者每个固定时间段都做相同的重复⼯作,为了简化重复的⼯作,我写了基于liunx服务器的⾃动巡检脚本,在crontab中设定⼀个固定时间进⾏⾃动执⾏即可,以减少⼈⼯重复劳动的⼯作。
环境:我的项⽬上主要服务器是LINUX和AIX两种服务器,总数在30台左右。
现在的⼯作量是每周巡检两次,都是⼿动登录到每台服务器使⽤相应的命令查看服务器性能参数。
思路:1、所有的服务器之间的⽹络都是在同⼀个局域⽹内,所有⽹络两两相通。
2、在其中选择⼀台性能相对较好或者是服务器运⾏压⼒较⼩的服务器,作为巡检服务器。
3、通过这⼀服务器来实现对其他服务器的巡检,然后把巡检结果记录到巡检服务器上。
4、每台服务器巡检结果都以时间和ip做命名⽤来区分,最后将所有巡检结果压缩打包。
5、每次维护⼈员只需要定时去取这个压缩包查看最后结果即可,免去了对每台服务器都需要登录和输⼊相同的命令进⾏查看。
具体实现脚本:cat check.sh#! /bin/bashecho "start running" | tee -aLANG=enset `date`path="/home/check"echo "start running" | tee -a $path/log/$1-$2-$3.logif [ -d /home/check/result/$1-$2-$3 ];thenecho ''elsemkdir -p /home/check/result/$1-$2-$3echo `date +"%Y/%m/%d-%H:%M:%S"` "create " "$1-$2-$3" "directory success "|tee -a $path/log/$1-$2-$3.logfiecho `date +"%Y/%m/%d-%H:%M:%S"` "starting reading linuxconfig.txt " |tee -a $path/log/$1-$2-$3.logcat "$path"/config/linuxconfig.txt| while read line;doip=`echo $line |cut -d '=' -f2`echo `date +"%Y/%m/%d-%H:%M:%S"` "check LINUX " $ip " starting " |tee -a $path/log/$1-$2-$3.log(sleep 1#echo accountecho rootsleep 1#echo passwordecho rootsleep 3echo "free -k"echo ""echo "df -k"echo ""#memory_used_rateecho "ps -ef| grep java"echo ""echo "netstat -an|egrep -n '80|22|21|23|9043|9044|45331|45332|39194|19195'"echo ""#echo "ifconfig -a "echo "/sbin/ip ad"echo ""echo " tail -2000 /var/log/messages | grep -v snmp |grep -i error "echo ""echo "/bin/dmesg |grep -i error"echo ""echo "top -n1|sed -n '1,5p'"echo "exit"echo "/usr/bin/vmstat 1 3"echo ""sleep 5)|telnet $ip >/home/check/result/$1-$2-$3/$ip-$1-$2-$3-$4.txtecho `date +"%Y/%m/%d-%H:%M:%S"` "check LINUX " $ip " end" |tee -a $path/log/$1-$2-$3.logecho "" | tee -a $path/log/$1-$2-$3.logdoneecho `date +"%Y/%m/%d-%H:%M:%S"` "end reading linuxconfig.txt " |tee -a $path/log/$1-$2-$3.log echo `date +"%Y/%m/%d-%H:%M:%S"` "starting reading AIXconfig.txt " | tee -a $path/log/$1-$2-$3.log cat "$path"/config/AIXconfig.txt| while read line;doip=`echo $line |cut -d '=' -f2`echo `date +"%Y/%m/%d-%H:%M:%S"` "check IBM AIX " $ip " starting " |tee -a $path/log/$1-$2-$3.log (sleep 1#echo accountecho rootsleep 1#echo passwordecho rootsleep 5echo ""#echo "df -k"echo "df -g"echo ""#memory_used_rateecho "ps -ef| grep java"echo ""echo "netstat -an|egrep -n '80|22|21|23|9043|9044|45331|45332|39194|19195'"echo ""echo "ifconfig -a"echo ""echo "topas"echo "exit"sleep 5)|telnet $ip >/home/check/result/$1-$2-$3/$ip-$1-$2-$3-$4.txtecho `date +"%Y/%m/%d-%H:%M:%S"` "check IBM AIX " $ip " end " |tee -a $path/log/$1-$2-$3.log echo "" | tee -a $path/log/$1-$2-$3.logdoneecho `date +"%Y/%m/%d-%H:%M:%S"` "end reading AIXconfig.txt " | tee -a $path/log/$1-$2-$3.log zip -r /home/check/result/$1-$2-$3/$1-$2-$3.zip /home/check/result/$1-$2-$3/*echo "End running "注意:该脚本的巡检是基于TELNET服务所以被检服务器必须开启TELNET服务感谢:/uid-14824714-id-4181103.html。
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下shell脚本监控Tomcat的状态并实现自动启动

Linux下shell脚本监控Tomcat的状态并实现⾃动启动最近公司需要在Linux下监控tomcat的服务,⼀旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运⾏,由于Linux下有Shell脚本可以实现此效果,下⾯是Linux下shell脚本监控Tomcat的状态并实现⾃动启动的步骤。
1.编写Shell脚本monitor.sh#!/bin/sh# func:⾃动监控tomcat脚本并且执⾏重启操作# author:EagleHao# date:2018-04-08# DEFINE# 获取tomcat进程ID(其中[grep -w 'tomcat']代码中的tomcat需要替换为你的tomcat⽂件夹名)TomcatID=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')# tomcat启动程序(这⾥注意tomcat实际安装的路径)StartTomcat=/opt/tomcat/bin/startup.shTomcatCache=/opt/tomcat/work#定义要监控的页⾯地址WebUrl=http://localhost:8080#⽇志输出GetPageInfo=/tmp/TomcatMonitorLog=/tmp/TomcatMonitor.logMonitor(){echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"if [ $TomcatID ];then #这⾥判断Tomcat进程是否存在echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页⾯..."# 检测是否启动成功(成功的话页⾯会返回状态"200")TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})if [ $TomcatServiceCode -eq 200 ];thenecho "[info]页⾯返回码为$TomcatServiceCode,tomcat启动成功,测试页⾯正常"elseecho "[error]tomcat页⾯出错,请注意...状态码为$TomcatServiceCode,错误⽇志已输出到$GetPageInfo"echo "[error]页⾯访问出错,开始重启tomcat"kill -9 $TomcatID # 杀掉原tomcat进程sleep 3rm -rf $TomcatCache # 清理tomcat缓存$StartTomcatfielseecho "[error]tomcat进程不存在!tomcat开始⾃动重启..."echo "[info]$StartTomcat,请稍候..."rm -rf $TomcatCache$StartTomcatfiecho "--------------------------"}Monitor>>$TomcatMonitorLog2.测试Shell脚本monitor.sh是否允许成功第⼀:执⾏脚本./monitor.sh如果报权限错误:chmod 777 monitor.sh第⼆:执⾏脚本./monitor.sh如果报/bin/bash^M:,坏的解释器,没有那个⽂件或⽬录:sed -i 's/\r$//' build.sh第三:执⾏脚本./monitor.sh如果有\z字符输出不了:更改xshell字体3.把脚本加到crontab定时任务中每分钟检查⼀次打开/etc/crontab⽂件添加定时任务。
Linux系统网络连接追踪脚本使用Shell脚本实现对Linux系统网络连接的追踪和监控

Linux系统网络连接追踪脚本使用Shell脚本实现对Linux系统网络连接的追踪和监控在Linux系统中,网络连接的追踪和监控对于系统管理员来说是非常重要的任务之一。
通过追踪网络连接,管理员可以及时发现和解决网络相关的问题,确保网络的正常运行。
为了方便管理员进行网络连接的追踪和监控,可以使用Shell脚本来实现这个功能。
本文将介绍如何使用Shell脚本实现对Linux系统网络连接的追踪和监控。
一、准备工作在开始实现网络连接的追踪和监控之前,我们首先需要在Linux系统中安装必要的软件包。
通常情况下,我们可以使用以下命令来安装所需的软件包:```sudo apt-get install tcpdump wireshark```其中,`tcpdump`是一个开源的网络抓包工具,可以捕获和分析网络数据包;`wireshark`是一个跨平台的网络协议分析工具,可以用于实时网络连接的监控和分析。
安装完成后,我们可以继续进行下一步的配置和脚本编写。
二、编写Shell脚本首先,我们需要创建一个新的Shell脚本文件,例如`network_trace.sh`,并使用文本编辑器打开该文件。
然后,我们可以开始编写脚本内容。
在Shell脚本中,我们可以使用`tcpdump`命令来捕获网络数据包,并将其输出到指定文件中。
以下是一个简单的示例:```shell#!/bin/bash# 设置捕获网络连接的文件路径output_file="/tmp/network_trace.log"# 使用tcpdump命令捕获网络数据包,并将结果输出到指定文件tcpdump -i eth0 -n -c 100 > $output_file```在上面的示例中,我们使用了`tcpdump`命令来捕获eth0网卡上的前100个网络数据包,并将结果输出到`/tmp/network_trace.log`文件中。
你可以根据自己的需求将其修改为适当的配置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
post byrocdk890/ 2013-4-25 15:07 Thursdaylinux技术
发表评论
想到公司内部测试服务器还没有系统状态监控,不想装nagios来监控,那样太麻烦了,又不想自己去写脚本,网上找了个,根据自己服务器的情况稍微修改了下,这里还要再多说一句,并不是网上发出来shell脚本就适合你的情况,最好是自己先修改测试下再部署.
30
fi
31
32
swap_total=`free-m | grepSwap | awk'{print $2}'`
33
34
swap_free=`free-m | grepSwap | awk'{print $4}'`
35
36
swap_used=`free-m | grepSwap | awk'{print $3}'`
52
disk_sda=`df-Ph |grep/dev/mapper/VolGroup00-LogVol00|awk'{print $5}'|cut-f 1 -d "%"`
53
54
if(($disk_sda > 80)); then
55
echo"$IP 服务器 /根分区 使用率已经超过80%,请及时处理。"| mailx -s "$IP 服务器硬盘告警"rocdk@
46
echo"$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。"| mailx -s "$IP 服务器内存告警"rocdk@
47
fi
48
49
fi
50
51
#disk_sda=`df -h | grep /dev/sda3 | awk '{print $5}' | cut -f 1 -d "%"`
11
12
load_warn=0.70
13
14
if(($average_int > 0)); then
15
echo"$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!"| mailx -s "$IP 服务器系统负载严重告警!!!"rocdk@
16
else
17
18
load_now=`expr$average_load \> $load_warn`
19
20
if(($load_now == 1)); then
21
echo"$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。"| mailx -s "$IP 服务器系统负载告警"rocdk@
22
fi
23
24
fi
25
26
cpu_idle=`top-b -n 1 | grepCpu | awk'{print $5}'| cut-f 1 -d "."`
27
28
if(($cpu_idle < 20)); then
29
echo"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。"| mailx -s"$IP 服务器CPU告警"rocdk@
05
06
load_15=`uptime | awk'{print $NF}'`
07
08
average_load=`echo"scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"| bc`
09
10
average_int=`echo$average_load | cut-f 1 -d "."`
56
fi
57
58
users=`uptime | awk'{print $6}'`
59
60
if(($users>= 5)); then
61
echo"$IP 服务器用户数已经达到$users个,请及时处理。"| mailx -s "$IP 服务器用户数告警"rocdk@
62
fi
此脚本需要bc和mailx配合才能正常运行,如果没有装这两个的,请先安装或者先单独运行脚本再让crontab去执行.
系统:centos 5.5
1.监控服务器状态脚本内容:
01
#!/bin/bash
02
IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`
03
04
cpu_num=`grep-c 'model name'/proc/cpuinfo`
chmod +x /root/webbak/sys-monitor.sh
2.加入crontab
*/10 * * * * root /root/webbak/sys-monitor.sh
service crond reload
可以从crond日志里看到,脚本已经被crontab执行了.
37
38
if(($swap_used != 0)); then
39
swap_per=0`echo"scale=2;$swap_free/$swap_total"| bc`
40
41
swappr$swap_per \> $swap_warn`
44
45
if(($swap_now == 0)); then