繁体   English   中英

Linux telnet shell脚本

[英]Linux telnet shell script

我正在尝试从文本文件(ip.txt)中读取多个主机和端口,并检查它们是否已连接/未能连接/超时,并回显对Telnet_Success.txt / Telnet_Failure.txt / Telnet_Refused.txt文件的响应

我尝试了以下脚本,它只是将所有连接结果显示为失败,但是当逐个手动检查时,我发现其中一些已连接。 任何帮助表示赞赏。 这是脚本:

>Telnet_Success.txt
>Telnet_Refused.txt
>Telnet_Failure.txt
file=ip.txt
while read line ; do
  ip=$( echo "$line" |cut -d ' ' -f1 )
  port=$( echo "$line" |cut -d ' ' -f2 )
  if telnet -c $ip $port </dev/null 2>&1 | grep -q Escape; then
  echo "$ip $port Connected" >> Telnet_Success.txt
  elif telnet -c $ip $port </dev/null 2>&1 | grep -q refused; then
  echo "$ip $port Refused" >> Telnet_Refused.txt
  else
  echo "$ip $port Failed" >> Telnet_Failure.txt
  fi
 done < ${file}

嗨看起来像telnet命令的罪魁祸首应该是“telnet ip port”而不是“telnet -c ip port”

file=ip.txt
while read line
do
  ip=$( echo "$line" |cut -d ' ' -f1 )
  port=$( echo "$line" |cut -d ' ' -f2 )
  if  telnet  $ip $port </dev/null 2>&1 | grep -q Escape 
  then  
    echo "$ip $port Connected" >> Telnet_Success.txt
  elif  telnet  $ip $port </dev/null 2>&1 | grep -q refused 
  then
    echo "$ip $port Refused" >> Telnet_Refused.txt
  else
    echo "$ip $port Failed" >> Telnet_Failure.txt
  fi
done < ${file}

我无法准确地告诉你你所提供的诊断失败了什么,但是你尝试多次调用telnet肯定是个问题 - 你每次都会得到不同的结果,产生很难排除的错误。 您的代码中也存在一些风格问题。

试试这个重构; 看内联评论。

>Telnet_Success.txt
>Telnet_Refused.txt
>Telnet_Failure.txt
# Why use a variable for something you only reference once anyway?
file=ip.txt
# Use the shell's field splitting facility
# Cope with missing final newline; see
# https://mywiki.wooledge.org/BashFAQ/001#My_text_files_are_broken.21__They_lack_their_final_newlines.21
while read -r ip port _ || [[ -n $port ]]; do
  # Run telnet once, capture result for analysis 
  output=$(telnet -c "$ip" "$port" </dev/null 2>&1)
  case $output in
    *Escape*)
        echo "$ip $port Connected" >> Telnet_Success.txt;;
  *refused*)
        echo "$ip $port Refused" >> Telnet_Refused.txt;;
  *)
        echo "$ip $port Failed" >> Telnet_Failure.txt;;
  esac
# Always double quote file name variables, just in case
done < "${file}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM