如果发生以下情况,ssh 远程将无法运行

如果发生以下情况,ssh 远程将无法运行

这不会运行,

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

相关内容