码迷,mamicode.com
首页 > 其他好文 > 详细

Bash-Script 应用案例

时间:2018-12-13 23:24:48      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:执行   oar   连接状态   get   false   net   衡量   网络测试   alt   

 

 

网络测试

自动 ping 测试

host_addr="192.168.234.231"
conn_num=0
timeout=3  # 设定等待时间
until [ $conn_num -gt 1 ]; do  # 此处的1可以改写,用来衡量网络稳定系数
    conn_num=$(ping -c 4 -w $timeout $host_addr | grep icmp_seq | wc -l)
    sleep 5.0  # 等待网络调整,或者执行其他动作
done

 

检测端口是否打开

1. 通过 netcat 工具

技术分享图片

 

2. 利用 wget 测试

技术分享图片

 

3. 利用 telnet 检测

当远程设备的端口未开启时,命令会自动退出:

技术分享图片

但当远程设备端口开启时,telnet 会进入连接模式,需要键入 ‘^]‘ 指令退出:

技术分享图片

在脚本编程中,如何优雅的退出 telnet 命令?

输出结果后立即退出

$ echo "" | telnet 101.199.97.65 8022

Trying 101.199.97.65...
Connected to 101.199.97.65.  #已成功连通端口
Escape character is ‘^]‘.
Connection closed by foreign host.  # 自动退出

输出结果后延迟退出

$ sleep 0.1 | telnet 101.199.97.65 8022

脚本如何判断 telnet 的执行结果?

sleep 0.1 | telnet 10.10.70.138 5900 | grep Connected | wc -l

通过上述命令,如存在Connected关键字,则wc计数为1,否则为0,来判断端口是否连接成功。

另外,实践中发现,telnet不会检测网络连接状态。所以最好在检测端口前,先通过ping指令确认网络能够连接,再测试端口

综上,提供脚本实例:

function try_host_port {
host_addr="192.168.234.231"
port=5900

    local timeout=3  # 设定等待时间
    conn_num=$(ping -c 4 -w $timeout $host_addr | grep icmp_seq | wc -l)
    if [ $conn_num -lt 1 ]; then  # 此处的1可以改写,用来衡量网络稳定系数
        echo "False"
        return 1
    fi

    # 验证VNC端口,并等待端口开启
    local port_status=0
    until [ $port_status -eq 1 ]; do
        port_status=$(sleep 1 | telnet ${host_addr} ${port} | grep Connected | wc -l)
        sleep 1  # 轮询周期
    done
}

 

 

 

Bash-Script 应用案例

标签:执行   oar   连接状态   get   false   net   衡量   网络测试   alt   

原文地址:https://www.cnblogs.com/brt3/p/10114275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!