码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2019-09-09 22:40:31      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:sleep   通信   The   需要   sof   没有   map   soft   ted   

编写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

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

标签:sleep   通信   The   需要   sof   没有   map   soft   ted   

原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11494409.html

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