for与while循环读行及嵌套ssh的区别

本文讨论在脚本中使用for与while循环读取多列文本信息,并通过SSH登录远程主机执行命令的区别。当遇到while循环内嵌SSH导致只执行一行的情况时,分析了问题原因在于SSH读取了while的输入。解决方案是在SSH命令后添加` 摘要由CSDN通过智能技术生成

  有个需求:有三列信息文本,第一列IP,第二列用途,第三列备注,需要登录每个IP执行命令,不符合执行命令结果的,打印出文本中这一行信息。
   需求很简单,只要用一个循环,能逐一登录到每台机器,执行命令就可以了,刚开始以为只要5分钟就能搞定的事情,结果花费了我一个上午的时间。主要耽搁在while循环里面嵌套了ssh。
   首先说说for跟while读行的区别,如都只有一列,结果是一样的,但是如果多列,比如txt内容这样:
line1 line2  line2
line4  line5  line6
用for循环:
for line in `cat txt`;
do echo $line;
done
显示的结果:
line1
line2
lien3
line4
line5
line6
用while循环:
cat txt|while read line;
do echo $line;
done
显示的结果:

line1 line2  line2
line4  line5  line6
   因此我的需求能用while来做,脚本如下:
cat txt|while read line
do
IP=`echo $line|awk '{print $1}'`
ssh -o ConnectTimeout=10 ${IP} "ls -l /home/admin|grep /"keyword/""

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值