Это не сработает,
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"
Но если я сделаю это на удаленном клиенте или используя ansible "if [[ $(/usr/bin/lsblk /dev/sde | wc -l) = 2 ]]; then echo found; fi"
, он будет работать. Я не хочу использовать ansible все время, потому что у нас есть только башня, и мы медленно выполняем простой запрос.
Спасибо за поддержку.
Подстановка команд $(/usr/bin/lsblk ... )
заключен в двойные кавычки, а $
не экранирован, поэтому он будет выполнен и заменен на локальном компьютере перед ssh
даже выполняется. Если вы хотите, чтобы это выполнялось в удаленной системе, используйте одинарные кавычки вместо двойных или избегайте $
.
Ответьте, поместите в скрипт 1.sh,
ssh -o ConnectTimeout = 10 -o BatchMode = yes -o "StrictHostKeyChecking no" -q server <1.sh