首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套在ssh中的If语句

嵌套在ssh中的If语句
EN

Stack Overflow用户
提问于 2017-04-21 20:36:31
回答 1查看 260关注 0票数 0

我正在尝试创建一个脚本,它将A)循环通过IP的列表,如果成功尝试使用已知凭据登录,并且如果成功,则将主机添加到列表中,以便这些操作不会重复。

如果A)主机不可用于ping或B)如果主机可用且我的已知凭据有效,则此脚本将按预期运行。如果它可以ping主机,但ssh连接被拒绝,则脚本退出,而不是使用下一个变量(或IP)。谢谢!

到目前为止,我所拥有的:

代码语言:javascript
复制
while read p; do
  ping -c1 -t1 $p
  if [ $? -eq 0 ]
  then
    /usr/local/bin/sshpass -p $PW ssh -o StrictHostKeyChecking=no "$USR"@"$p" </dev/null "
    scutil --get ComputerName" | tee -ai $WORKING

    MACHINE=$(head -n 1 $WORKING)

    if grep -Fxq $MACHINE "$FULL"
    then
      echo $MACHINE has been worked on already

    else
      echo $MACHINE has not been worked on
      echo $MACHINE >> $FULL
      rm -rf $WORKING
    fi

  else
    echo ping fail
  fi
done </iprange.txt
EN

回答 1

Stack Overflow用户

发布于 2017-04-21 22:41:33

我不完全确定问题是什么,但看起来您的ssh命令可能正在从您的while read循环中吃掉您的STDIN

或者尝试更改您的read命令正在读取的FD:

代码语言:javascript
复制
while read -u 9 -r p ; do
  echo "$p"
done 9< /iprange.txt

或者尝试使用ssh命令的-n参数,该命令从/dev/null重定向STDIN (阻止从/iprange.txt读取您的STDIN )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43542917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档