SHELL 脚本检测FTP连接

在主机运维的过程中,我们可能需要监控或检测FTP是否可达,与ping类似,FTP直接跟IP地址或主机名,可检测FTP是否可以连接。我们可以加上用户名和密码,但此处,并不登录FTP服务器,只是进行尝试连接,并检测是否超时。

以下是检测常规端口21 FTP连接的脚本:

#!/bin/bash
#d定义数组,保存IP
IP_A=(10.254.96.38
10.254.96.40
#1.1.1.1 已下线
10.254.96.37)

#ssh远程登录主机执行命令
function FTP_TEST_IP()
{
	for IP in $*
	do
		echo "${IP}"
		T=$(timeout 2 ftp ${IP}) #默认端口 21
		#echo "$T"
		S=`echo "$T" | grep "Connected to ${IP} (${IP})." | wc -l`	#根据主机返回的信息,如果超时,返回的匹配值行数为0
		#双括号不用再次解析变量
		if ((S==1)) #if 后加 then
		then
			echo "FTP ${IP} 连接成功"
		elif ((S==0)) #elif 后加then
		then
			echo "FTP ${IP} 连接失败"
		else
			echo "FTP ${IP} 状态未知,返回结果;$T"
		fi
	done
}

#测试A主机采集点FTP连接是否正常
echo "---------------------------------------------------------测试A主机FTP连接---------------------------------------------------------------"
FTP_TEST_IP ${IP_A[*]}

FTP连接可以指定端口,对于特殊端口的FTP连接,我们单独提出来,增加一个一一对应的PORT数组就可以了,注意,IP与端口号严格对应下标

代码如下:

#!/bin/bash
#以下两个数组的成员下标一一对应,IP 与端口一一对应,不可错开,否则测试不能通过
SPECIAL_PORT_HOST=(10.254.98.249)
SPECIAL_PORT=(1160)
#ssh远程登录主机执行命令
function SPECIAL_PORT_FTP_TEST()
{
	for (( i=0; i<${#SPECIAL_PORT_HOST[*]} ; i++ ))
	do
		echo "${SPECIAL_PORT_HOST[i]}"
		T=$(timeout 2 ftp ${SPECIAL_PORT_HOST[i]} ${SPECIAL_PORT[i]})
		#echo "$T"
		S=`echo "$T" | grep "Connected to ${SPECIAL_PORT_HOST[i]} (${SPECIAL_PORT_HOST[i]})." | wc -l`
		#双括号不用再次解析变量
		if ((S==1)) #if 后加 then
		then
			echo "FTP ${SPECIAL_PORT_HOST[i]} 连接成功"
		elif ((S==0)) #elif 后加then
		then
			echo "FTP ${SPECIAL_PORT_HOST[i]} 连接失败"
		else
			echo "FTP ${SPECIAL_PORT_HOST[i]} 状态未知,返回结果;$T"
		fi
	done
}

#特殊端口的FTP测试
echo "---------------------------------------------------------特殊端口的FTP---------------------------------------------------------------"
SPECIAL_PORT_FTP_TEST

测试结果:

---------------------------------------------------------测试135主机FTP连接---------------------------------------------------------------
10.254.96.38
FTP 10.254.96.38 连接成功
10.254.96.40
FTP 10.254.96.40 连接成功
10.254.96.37
FTP 10.254.96.37 连接成功

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值