Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在IF条件下使用ssh与Bash脚本比较具有某种模式的文件_Bash_Scripting - Fatal编程技术网

如何在IF条件下使用ssh与Bash脚本比较具有某种模式的文件

如何在IF条件下使用ssh与Bash脚本比较具有某种模式的文件,bash,scripting,Bash,Scripting,我发现ssh的用法类似于ssh“cmd”,但当我需要从一台机器上运行它时,无法在脚本中实现它,而在生成文件时,文件的模式会被创建到另一台机器上 #!/bin/bash VENUE=TE Date=$(date +%Y%m%d) SCRIPT_PATH=$PWD TRC_PATH=$DSS_TRC PATTERN_PATH=${SCRIPT_PATH}/Patterns COUNTER=0 echo "$(tput setaf 5)Test 10. GTPTE instance che

我发现ssh的用法类似于ssh“cmd”,但当我需要从一台机器上运行它时,无法在脚本中实现它,而在生成文件时,文件的模式会被创建到另一台机器上

#!/bin/bash
VENUE=TE
Date=$(date +%Y%m%d)
SCRIPT_PATH=$PWD
TRC_PATH=$DSS_TRC
PATTERN_PATH=${SCRIPT_PATH}/Patterns

COUNTER=0
echo "$(tput setaf 5)Test 10. GTPTE instance check$(tput sgr0)"
echo "Checking GTP${VENUE} instance"

while read PATTERN
do
        INSTANCE=GTP${VENUE}
        if [ ssh host@name "cat ${TRC_PATH}/${INSTANCE}*_${Date}*.trc |  grep "$PATTERN" | wc -l"  -ge 1 ]
                then
                ((COUNTER=${COUNTER}+1))

                else
                        echo "Test 1 : $(tput setaf 1)[FAILED]$(tput sgr0). Pattern : $PATTERN not found"
                        exit 0
        fi
done < ${SCRIPT_PATH}/Patterns/10_TEST.ptrn
echo "Test 10 : $(tput setaf 2)[PASSED]$(tput sgr0). Number of patterns checked : ${COUNTER}"
#/bin/bash
地点=TE
日期=$(日期+%Y%m%d)
脚本路径=$PWD
TRC\U路径=$DSS\U TRC
PATTERN_PATH=${SCRIPT_PATH}/Patterns
计数器=0
echo“$(tput setaf 5)Test 10.GTPTE实例检查$(tput sgr0)”
echo“正在检查GTP${venture}实例”
读时模式
做
INSTANCE=GTP${vention}
if[sshhost@name“cat${TRC_PATH}/${INSTANCE}*{Date}*.TRC|grep“$PATTERN”| wc-l”-ge 1]
然后
((计数器=${COUNTER}+1))
其他的
echo“测试1:$(tput setaf 1)[失败]$(tput sgr0)。模式:$未找到模式”
出口0
fi
完成<${SCRIPT\u PATH}/Patterns/10\u TEST.ptrn
echo“测试10:$(tput setaf 2)[通过]$(tput sgr0)。检查的模式数:${COUNTER}”

错误:[:参数太多。

首先,在这种情况下,请尝试查看ssh命令返回的值。因此,请将ssh的结果分配给一个变量,并在有疑问时回显它,或者使用bash-x进行观察

在这种情况下,您的变量将是“ssh”host@name..."

您需要执行该命令并获得其结果。为此,请将整个命令括在$(yourcommand yourparameters)中。然后您将发现您需要修复另一件事—实际上是name@host.


在所有这些之后,它应该会起作用,或者在列表中会让你走得更远。

但这是回声值,而不是@Ivan需要的退出代码……你是对的,但我仍然建议它将其放在一个变量中。(Downvote不是我的,upvote是tho)。当然,我也会。也许我在回答中没有强调这一点,但这就是应该做的。