【问题标题】:how to use sshpass in shell script to check whether directory exists or not?如何在 shell 脚本中使用 sshpass 来检查目录是否存在?
【发布时间】:2016-04-19 22:12:21
【问题描述】:

我有一个shell脚本,它基本上是在一个环境中运行,它需要检查目录是否存在于另一个环境中。

我尝试了以下两种方法,但没有运气。

方式一:

if [ -d "sshpass -p PASSWORD ssh root@192.168.16.01 /home/test" ]; then
echo "YES"
fi

方式 2:

if [sshpass -p PASSWORD ssh root@192.168.16.01 '[ -d /home/test ]']; then
echo "YES"
fi

【问题讨论】:

    标签: shell sshpass


    【解决方案1】:

    if 测试中的方括号不是if 语法的一部分。 [ 是它自己的命令(也称为test)。

    if 语句的语法大致是 (如果您真的好奇,请参阅Shell Grammar Rules 了解更多信息)

    if <command that returns true or false>; then
        <other commands>
    fi
    

    您的第一次尝试是不正确的,因为 -d 采用目录名称而不是您要运行的命令的字符串。

    第二次尝试很接近你只是有太多的方括号(这些方括号没有足够的空间)。

    从第二次尝试中删除外部方括号,它将起作用(假设sshpass 正确处理返回ssh 命令的返回值):

    if sshpass -p PASSWORD ssh root@192.168.16.01 '[ -d /home/test ]'; then
        echo "YES"
    fi
    

    【讨论】:

      【解决方案2】:

      sshpass 很少使用。

      也许和sshuse 批处理模式一样有效

      sshpass -p PASSWORD ssh -o BatchMode=yes root@192.168.16.01 "if [ -d /home/test ] ; then echo Y ; fi" > a.out
      

      然后您将在a.out 中收集结果

      【讨论】:

        猜你喜欢
        • 2014-03-30
        • 2017-01-12
        • 2022-11-23
        • 2015-09-13
        • 2013-12-22
        • 2016-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多