这不会运行,
ssh -o ConnectTimeout=10 -o BatchMode=yes -o "StrictHostKeyChecking no" -q server1 "if [[ $(/usr/bin/lsblk /dev/sde | wc -l) = 2 ]]; then echo found; fi"
但是如果我在远程 cli 上或使用 ansible 执行此操作"if [[ $(/usr/bin/lsblk /dev/sde | wc -l) = 2 ]]; then echo found; fi"
,它将运行。我不想一直使用 ansible,因为我们只有塔,而且执行简单查询的速度很慢。
感谢您的支持。
答案1
命令替换$(/usr/bin/lsblk ... )
在双引号中,并且$
未转义,因此它会在ssh
执行之前在本地计算机上执行和替换。如果您希望在远程系统上运行它,请使用单引号而不是双引号,或者转义$
。
答案2
答案,把它放在脚本1.sh中,
ssh -o ConnectTimeout=10 -o BatchMode=yes -o “StrictHostKeyChecking no” -q 服务器 < 1.sh