check=$(curl -s -w "%{http_code}\n" -L "${HOST}${PORT}/" -o /dev/null)
if [[ $check == 200 || $check == 403 ]]
then
# Service is online
echo "Service is online"
exit 0
else
# Service is offline or not working correctly
echo "Service is offline or not working correctly"
exit 1
fi
man nc 虽然curl在我看来似乎是Webservices的最佳选择,因为它实际上是检查服务的网页是否正常工作, nc可用于仅快速检查目标上的特定端口是否可达(并且假设这也适用于服务)。 这里的优势是可设置的超时,例如1秒,而curl可能需要更长的时间才能失败,当然,你也可以检查不是网页的服务,如22端口SSH。
nc -4 -d -z -w 1 ${HOST} ${PORT} &> /dev/null
if [[ $? == 0 ]]
then
# Port is reached
echo "Service is online!"
exit 0
else
# Port is unreachable
echo "Service is offline!"
exit 1
fi
serverResponse=`wget --server-response --max-redirect=0 ${URL} 2>&1`
if [[ $serverResponse == *"Connection refused"* ]]
then
echo "Unable to reach given URL"
exit 1
fi
#!/bin/bash
#retry count of ping request
RETRYCOUNT=1;
#pingServer: implement ping server functionality.
#Param1: server hostname to ping
function pingServer {
#echo Checking server: $1
ping -c $RETRYCOUNT $1 > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo $1 down
else
echo $1 live
fi
}
#usage example, pinging some host
pingServer google.com
pingServer server1
6条答案
按热度按时间svdrlsy41#
我建议不要只使用
ping
,它可以检查服务器是否在线,但不能检查该服务器上的特定服务。最好使用以下替代方法:
curl
man curl
您可以使用
curl
并检查http_response
以获得如下Web服务其中
HOST
= [您的主机的IP或DNS名称]PORT
= [可选一个端口;不要忘记以:
开头]200
是正常的成功http_response403
是一个重定向,例如,可能是登录页面,因此也是可访问的,并且很可能意味着服务运行正常-s
静默模式。-L
定义位置-w
要以哪种格式显示响应%{http_code}\n
我们只需要http代码-o
输出文件/dev/null
将任何输出重定向到/dev/null,这样它就不会被写入stdout或check
变量。通常你会在http_response之前得到完整的html源代码,所以你也必须将其静音。数控
man nc
虽然
curl
在我看来似乎是Webservices的最佳选择,因为它实际上是检查服务的网页是否正常工作,nc
可用于仅快速检查目标上的特定端口是否可达(并且假设这也适用于服务)。这里的优势是可设置的超时,例如1秒,而curl可能需要更长的时间才能失败,当然,你也可以检查不是网页的服务,如
22
端口SSH
。其中
HOST
= [您的主机的IP或DNS名称]PORT
= [非可选端口]-4
强制使用IPv4(或-6
强制使用IPv6)-d
不要尝试从标准输入读取-z
仅侦听,不发送数据-w
超时如果连接和标准输入空闲时间超过timeout秒,则连接会自动关闭(在这种情况下
nc
将退出1 -〉failure)。-n
如果您只使用IP:不要在任何指定的地址、主机名或端口上执行任何DNS或服务查找。&> /dev/null
不打印命令的任何输出rpppsulh2#
你可以用这样的东西-
y1aodyip3#
在ping命令中使用-c选项,它只会ping URL给定的次数或直到超时
0tdrvxhp4#
简式:
你需要它来编写其他脚本吗?或者是尝试破解一些简单的监控工具吗?在这种情况下,你可能想看看Pingdom:https://www.pingdom.com/ .
fd3cxomn5#
我使用下面的脚本函数来检查服务器是否在线。当你想检查多个服务器时,它很有用。该函数隐藏了ping输出,你可以分别处理服务器在线或服务器停机的情况。
bxfogqkk6#
一个很好的解决方案是使用MRTG(一个简单的绘图工具 *NIX)与ping探针脚本。
读取this作为开始。
示例图: