centos - shellscript 循环执行代码,但是每次执行一次以后就退出了?
过去多啦不再A梦
过去多啦不再A梦 2017-04-25 09:01:06
[Linux讨论组]
while read $HOSTNAME
do
    ssh root@$HOSTNAME "poweroff"
done < host.log

host.log 中的内容:
192.168.122.1
192.168.122.2
192.168.122.3

机器配置过ssh互信

执行那个后发现每次只能关闭一台机器脚本就退出了。需要再次执行才能关闭后面的机器,请问是为什么?谢谢

过去多啦不再A梦
过去多啦不再A梦

全部回复(4)
淡淡烟草味

在这行写成这样试试: ssh root@$HOSTNAME "poweroff" < /dev/null

漂亮男人

或者写 ssh -n 吧。出现这种情况的原因是,ssh 读取了你余下的 stdin。

所以我尽量不使用 while + 重定向读取数据,要读也用另外的文件描述符来读。stdin 很容易被别的命令读走的。

黄舟

perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/' host.log #这样该可以

怪我咯

去掉while read $HOSTNAME中的$

while read HOSTNAME
do
ssh root@$HOSTNAME "poweroff"
done < host.log

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号