Bash-Script 应用案例

Posted brt3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash-Script 应用案例相关的知识,希望对你有一定的参考价值。

 

 

网络测试

自动 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 应用案例的主要内容,如果未能解决你的问题,请参考以下文章

如何从Ansible-playbook的bash-script启动后台循环

English Snippet 5 - How to Pass Arguments to a Bash-Script

微信小程序开发之--"template模板“的应用

在案例演示中嵌入片段

Reload Activity 以在 Fragment 之间重新切换

java开发的项目案例,大厂内部资料