加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ssh – 如何防止脚本吞噬所有标准输入?

发布时间:2020-12-15 18:28:54 所属栏目:安全 来源:网络整理
导读:我有一个脚本从循环中的管道读取并在循环中运行expect脚本和普通的 shell脚本.两个脚本都将ssh运行到另一台服务器以获取一段数据.例如: cat /tmp/file |while read a b c ddo s=`expect-script server1 $b` c=`ssh $b normal-script` echo $s $cdone 即使/
我有一个脚本从循环中的管道读取并在循环中运行expect脚本和普通的 shell脚本.两个脚本都将ssh运行到另一台服务器以获取一段数据.例如:
cat /tmp/file |
while read a b c d
do
   s=`expect-script server1 $b`
   c=`ssh $b normal-script`
   echo $s $c
done

即使/ tmp / file中有许多行,脚本在处理完第一行后也会退出.我怀疑期望脚本吞噬了所有stdin,所以当它返回时,没有什么可读的.我怎么能避免这个?我不希望我调用的任何脚本从主脚本的stdin中读取.

cat /tmp/file |
while read a b c d
do
    {
        s=`expect-script server1 $b`
        c=`ssh $b normal-script`
        echo $s $c
    } < /dev/null
done

{command …}语法允许您将重定向或管道应用于一系列命令.

我还会注意到你的例子中不需要猫.你可以这样做:

while read a b c d
do
    ...
done < /tmp/file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读