需求
判断端口开放情况
思路
使用telnet连接远程主机的远程端口
接收连接反馈并分析结果
代码实现
#Description:监控一个服务端口
#Author: kz
#Created Time:
#main
#创建暂存文件
temp_file=`mktemp port_status.txt`
#1、判断依赖命令telnet是否存在,前真才执行,如果没有命令,则!为真,执行后面
[ ! -x /usr/bin/telnet ]&&echo "telnet: not found command"&& exit 1
#2、测试端口 $1 IP $2 port 并把结果放在临时文件中
( telnet $1 $2 <<EOF
quit
EOF
) &>$temp_file
#3、分析文件中的内容,判断结果
if egrep "\^]" $temp_file &>/dev/null;then
#4、打印结果
echo "$1 $2 is open"
else
echo "$1 $2 is close"
fi
#5、删除临时文件
rm -f $temp_file
EOF
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。
可以把EOF替换成别的字符串(如BBB),意思是把内容当作标准输入传给程序。
特殊用法(注释):
: << COMMENTBLOCK
shell脚本代码段
COMMENTBLOCK
此时会将里面的shell脚本代码段变成注释。 : 代表shell中的空语句。
cat和eof结合时可对文件进行追加功能
cat >> /root/test.txt <<EOF
123test
hello word !
over
EOF
以上的脚本命令会在a.txt文件后面加上三行内容
参考
https://www.zutuanxue.com/home/4/6_102
https://blog.csdn.net/sprita1/article/details/42676307