zoukankan      html  css  js  c++  java
  • 【shell脚本】不停地telnet一个ip或域名,并输出结果到文件中===telnetscript.sh

    编写shell脚本不停地telnet一个域名,并输出结果到文件中

    [root@localhost ~]# cat telnetscript.sh
    #!/bin/bash
    #检查是否在root用户下执行此脚本(0代表root用户的权限)
    if [ $(id -u) != "0" ];then
            echo "请在root用户下运行脚本"
            exit 1
    fi
    #定义输出目录
    DIR="/var/log/"
    TIME="$(date +%Y-%m-%d,%X)"
    IP=ip地址或域名
    PORT=端口号
    #下面需要先安装nmap工具
    checkPort(){
            #检查端口开通情况,输出端口的开通信息(443/tcp open  https)
            portState=$(nmap -P0 -sS -p${PORT} ${IP} | awk '/STATE/{getline line;print line}' | awk '{print $2}')
            if [ X"${portState}" == X"open" ];then
                    echo "${IP} ${PORT} is open" >> ${DIR}telnetstatus.log
                    echo "${TIME}" >> ${DIR}telnetstatus.log
            else
                    echo "${IP} ${PORT} is failure" >> ${DIR}telnetstatus.log
                    echo "${TIME}" >> ${DIR}telnetstatus.log
            fi
    }
    while true;
    do
            checkPort
    sleep 3
    done

    运行脚本

    在后台运行

    [root@localhost ~]# ./telnetscript.sh &
    [1] 30257

    查看输出结果并统计

    [root@localhost ~]# less /var/log/telnetstatus.log
    [root@localhost ~]# wc -l /var/log/telnetstatus.log

    将工作调到前台运行

    [root@localhost ~]# fg
    ./telnetscript.sh
    [root@localhost ~]# jobs

    注意:

    比较两个字符串是否相等的办法是:
    if [ X"$test" = X"test" ]; then
    这里的关键有几点:
    1、使用单个等号
    2 、注意到等号两边各有一个空格:这是unix shell的要求
    3、 注意到X"$test"前面的X,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了X = Xtest,显然是不相等的。而如果没有这个X,表达式就会报错:[: =: unary operator expected

    date命令:

    %X表示时分秒。相当于 %H:%M:%S

  • 相关阅读:
    Xen原理
    KVM系统镜像制作
    KVM原理及使用
    virsh使用总结
    libvirt原理
    虚拟化原理介绍
    TCP协议深度刨析
    TCP Socket通信详细过程
    firewall-cmd 使用总结
    PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
  • 原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11494409.html
Copyright © 2011-2022 走看看