使用for和while循环在bash中使用telnet进行日志记录
发布时间:2020-12-15 21:05:27 所属栏目:安全 来源:网络整理
导读:我有一个文件中的IP地址列表,我需要使用telnet登录并执行 一些命令(这??些命令对于所有机器都不是唯一的,因此它不能完全自动化.). 以下是部分自动执行任务的脚本(即telnet到ip地址并显示登录屏幕,一旦退出该telnet会话,脚本应该telnet以查找文件中存在的下一
我有一个文件中的IP地址列表,我需要使用telnet登录并执行
一些命令(这??些命令对于所有机器都不是唯一的,因此它不能完全自动化.). 以下是部分自动执行任务的脚本(即telnet到ip地址并显示登录屏幕,一旦退出该telnet会话,脚本应该telnet以查找文件中存在的下一个ip地址,依此类推. 我编写了两个脚本(两者都做同样的工作)来完成上述任务,一个使用for循环,一个使用while循环.使用for循环的脚本工作正常,使用while循环的脚本在登录到第一个ip后退出. 使用for循环的脚本: – for i in `cat host_ip.txt`; do telnet $i; done 脚本使用while循环失败: – while read line; do telnet $line ; done < host_ip.txt 失败的上述while循环脚本的输出是 10.102.10.0 Trying 10.102.10.0... telnet: connect to address 10.102.10.0: Network is unreachable 10.102.10.1 Trying 10.102.10.1... Connected to 10.102.10.1. Escape character is '^]'. Connection closed by foreign host. 使用while循环的脚本有什么问题? 解决方法
在你的while循环中,标准输入已从文件重定向,我怀疑telnet也通过标准输入从该文件读取.请尝试以下方法:
while read -u 3 line; do telnet $line done 3< host_ip.txt 这使用非0(标准输入)的文件描述符从文件中读取,保留telnet命令的标准输入. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |