Linux如何通过脚本,不停地telnet一个IP,记录telnet成功的时间并输出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux如何通过脚本,不停地telnet一个IP,记录telnet成功的时间并输出?相关的知识,希望对你有一定的参考价值。

Telnet本身对另一台服务器检查时,容易退不出来。使用Nmap比较合适,然后写个如下脚本,变更IP及相应的端口及Sleep的时间就可以达到目标。


如下参考:

#!/bin/bash
#Purpose:check ip port
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Check if user is root
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script"
    exit 1
fi
Cur_Dir="$(cd -P "$(dirname "$BASHSOURCE[0]")" && pwd)"
Cur_Time="$(date +%Y%m%d%H%M%S)"
Dest_Ip=172.16.3.19
Dest_Port=22

if [ ! -f /usr/bin/nmap ];then
yum -y install nmap
else
:
fi
function Check_Port()
Port_State=$(nmap -P0 -sS -p$Dest_Port $Dest_Ip|awk '/STATE/getline v;print v'|awk 'print $2')
if [ X$Port_State==X'open' ];then
echo "$Dest_Ip $Dest_Port is open" >>$Cur_Dir/status.txt
echo "$Cur_Time" >>$Cur_Dir/status.txt
else
echo "$Dest_Ip $Dest_Port is failure" >>$Cur_Dir/status.txt
echo "$Cur_Time" >>$Cur_Dir/status.txt
fi


while true;
do
Check_Port
sleep 3
done

参考技术A 不需要使用脚本吧,直接telnet ip 端口 -a就行了追问

这个命令会输出telnet成功的时间吗?因为有时快有时慢,想测试

追答

telnet命令就可以实现你想要的功能,除非你想练练脚本,不然没有必要非要用脚本

追问

telnet应该只能一次吧,我需要是不停地telnet看能否连上,还有连上花的时间

追答

time telnet ip

linux12运维企业实战笔录 -- 04 telnet批量多端口

文章目录

一、使用脚本批量Telnet测试端口是否连通

在一些情况下,我们无法安装nc,ansible等工具,所以一些批量操作,我们只能使用shell实现。下面分享一个近期工作中使用到的批量Telnet端口的脚本,希望对大家能够帮助:

二、telnet脚本

[root@k8s-m-01 ~]# ll
-rw-r--r--  1 root root      226 Jul 11 10:35 ip_info
-rw-r--r--  1 root root      253 Jul 11 10:35 result.log
-rw-r--r--  1 root root      495 Jul 11  2022 telnet.sh
[root@ -m-01 ~]#  cat telnet.sh
#!/bin/bash
check_telnet()
for ip_port in $(cat ip_info|grep -v '^#')
do
    CHECK_PORT=$(echo $ip_port|awk -F: 'print $2')
    CHECK_IP=$(echo $ip_port|awk -F: 'print $1')
    echo -e "\\n"| telnet $CHECK_IP $CHECK_PORT |grep "Connected to\\|Escape character" >/dev/null
    if [ $? -eq 0 ];then
        echo "$LOCALIP result $CHECK_IP $CHECK_PORT connected"
    else
        echo "$LOCALIP result $CHECK_IP $CHECK_PORT can not Connected &> dev/null"
    fi
done

check_telnet >result.log

三、ip_info

ip和端口: 冒号分割

[root@k8s-m-01 ~]# ll
-rw-r--r--  1 root root      226 Jul 11 10:35 ip_info
-rw-r--r--  1 root root      253 Jul 11 10:35 result.log
-rw-r--r--  1 root root      495 Jul 11  2022 telnet.sh
[root@k8s-m-01 ~]# cat ip_info 
#请使用ip:port 或者 域名:port 的格式编辑以下内容;
#如果是一个列表,可以使用#对不进行测试的IP进行注释
192.168.1.1:8080
192.168.1.2:22
192.168.11.20:22
192.168.11.20:20
192.168.11.21:20

四、日志输出

[root@k8s-m-01 ~]# ll
-rw-r--r--  1 root root      253 Jul 11 10:35 result.log

[root@k8s-m-01 ~]# cat result.log 
 result 192.168.1.1 8080 can not Connected &> dev/null
 result 192.168.1.2 22 can not Connected &> dev/null
 result 192.168.11.20 22 connected
 result 192.168.11.20 20 can not Connected &> dev/null
 result 192.168.11.21 20 can not Connected &> dev/null

以上是关于Linux如何通过脚本,不停地telnet一个IP,记录telnet成功的时间并输出?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 基础网络命令列表

你必须了解的基础的 Linux 网络命令

java在linux中执行shell脚本,用telnet检测指定IP的端口是不是可以连接上

用python 脚本控制telnet登录交换机

linux 怎么将一个会更新的日志不停输出到另一个文件?

linux12运维企业实战笔录 -- 04 telnet批量多端口