SSH를 사용하여 for 루프 내에서 IF 문 실행

SSH를 사용하여 for 루프 내에서 IF 문 실행

독립적으로 작동하지만 함께 작동하지는 않는 두 개의 코드가 있습니다. <Command_To_Be_Ran> 안에 if 문을 넣어야 합니다. 어떻게 작동시킬 수 있는지 아이디어가 있습니까?

for i in t{1..2}; do
  ssh -qex -t $i 'echo <Sudo_Password> | sudo -S <Command_To_Be_Ran>'
done

그리고

if (( $(grep -o "fips=1" /etc/default/grub | wc -l) > 1 )); then 
    sed -i 's/ fips=1//' /etc/default/grub
fi

답변1

이제 효과가 있을 것 같아요 :D

for i in t{1..2}; do    
  ssh -qex -t $i "echo <Sudo_Password> | sudo -S bash -c '\
    if (( $(grep -o 'fips=1' /etc/default/grub | wc -l) > 1 )); \
      then sed -i 's/ fips=1//' /etc/default/grub ;\
    fi'"
done

작동해야 하며 개행 문자를 ;and 로 바꿀 수 bash -c있으며 큰따옴표( ")를 사용하면 셸에서와 마찬가지로 명령을 실행할 수 있습니다.

zsh가 설치되어 있으면(또는 일부 bash 버전에서도) 다음을 eval사용할 수 있습니다.bash -c

관련 정보