编写shell脚本不停地telnet一个ip或域名,并输出结果到文件中
Posted heidi-boke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写shell脚本不停地telnet一个ip或域名,并输出结果到文件中相关的知识,希望对你有一定的参考价值。
编写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" >> $DIRtelnetstatus.log echo "$TIME" >> $DIRtelnetstatus.log else echo "$IP $PORT is failure" >> $DIRtelnetstatus.log echo "$TIME" >> $DIRtelnetstatus.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或域名,并输出结果到文件中的主要内容,如果未能解决你的问题,请参考以下文章