首页 > 其他 > 详细

当while read line 遇到 ssh(转)

时间:2021-09-02 04:51:22      阅读:11      评论:0      收藏:0      [点我收藏+]

https://www.cnblogs.com/Peter2014/p/8342495.html

 

问题:while read line 中使用ssh只能读取一行?

1
2
3
4
5
6
#!/bin/sh
while read line
do
echo $line
ssh root@$line "echo 123456 | passwd --stdin peter" /dev/null
done < hosts.txt

结果hosts.txt中只有第一行ip地址生效,问题在于ssh默认也会从标准输入中读取数据,导致循环失败。

解决:使用for line in `cat hosts.txt`

1
2
3
4
5
6
#!/bin/sh
for line in `cat hosts.txt`
do
echo $line
ssh root@$line "echo 123456 | passwd --stdin peter" /dev/null
done

此外,还可以使用ssh -n 来避免ssh读取标准输入。

当while read line 遇到 ssh(转)

原文:https://www.cnblogs.com/zhidian2020/p/15213480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!