[Linux] ssh¸¦ ÅëÇØ ¿©·¯ÁÙÀÇ ¸í·É¾î ¼öÇà

   Á¶È¸ 19270   Ãßõ 0    

원격 호스트에 ssh로 로긴하지 않고 원격 명령을 수행할 경우

ssh user@remote "command" 형태로 사용하는 것이 일반적이나 복잡한 명령을 수행 시 주의가 필요하다.
multi-line, multi-command은 물론이거니와  특히 대상 서버의 조건에 따라 특정 명령을 수행하기 위해 sub-shell을 사용해야할 필요가 자주 있다.

remote.lst
hvdev-jbs-was01
hvdev-jbs-was02

서버목록을 담고있는파일인데 한줄에 하나씩 적어준다

multi-line ssh 명령 실행의 예시

#!/bin/bash

 

for server in $(

    ssh opradm@${server} << EOF

        KEY_COUNT=\$(cat /home/www/.ssh/authorized_keys | grep "Tower Machine Key" | wc -l)

        if [ ! -f /home/opradm/.ssh/authorized_keys && "\${KEY_COUNT}" = 0 ]; then

            sudo mkdir -p /home/www/.ssh

            sudo chmod 700 /home/www/.ssh

            sudo chown www:www /home/www/.ssh

            sudo bash -c "echo '...' > /home/www/.ssh/authorized_keys

            sudo chmod 600 /home/www/.ssh/authorized_keys

            sudo chown www:www /home/www/.ssh/authorized_keys

    fi

EOF

done


Command Substitution
$(...), '...', $(< ... )
$() vs \$()
$(...)은 remote 서버가 아닌 lcoal 서버에서 sub-shell 실행한다. 그러므로 반드시 escape 처리를 하여 \$(...) 형태로 사용한다.
sudo bash -c "..."
pipe 또는 redirection을 사용한 명령을 sudo로 실행하기 위해서는 반드시 "sudo bach -c"를 사용한다.




óÀ½À¸·Î (222,030)
Á¦¸ñ
2CPU : QnA 03-24   1056   ±èµ¿ÀÚ¸Ç
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 03-24   225   µö¸¶Àεå
2CPU : ÆǸŠ03-24   329   ¿µÁØÇý¸°
¿Ï·á (1)
2CPU : ÆǸŠ03-24   297   ÃÖÀçÁ¤2cpu
¿Ï·á (4)
2CPU : ÆǸŠ03-24   203   ÃÖÀçÁ¤2cpu
¿Ï·á (10)
2CPU : ÆǸŠ03-24   175   ÃÖÀçÁ¤2cpu
¿Ï·á (1)
2CPU : ÆǸŠ03-24   201   ser¿öµå
¿Ï·á (1)
2CPU : ÆǸŠ03-24   138   ser¿öµå
¿Ï·á (1)
2CPU : ÆǸŠ03-24   181   ser¿öµå
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 03-24   333   ¾î¸¥ÀÌ
2CPU : ÆǸŠ03-24   343   Á¾ÇÕ¸¸¹°»ó
2CPU : ÆǸŠ03-24   166   ¼­¹öº§
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 03-24   239   »ßµ¹À̽½ÇÄÀÌ
2CPU : ÆǸŠ03-24   176   ¼­¹öº§
2CPU : UnBoxing 03-24   3830   ¼­¿ïl°­ÇѸð