2014-10-17 7 views
2

첫 번째 스크립트를 통해 몇 가지 명령을 실행하려고하는데 작동하지 않습니다.bash 스크립트가 ssh 다음에 명령을 실행합니다.

#!/bin/bash 

#connect to server 
echo "Connecting to the server..." 

ssh -t [email protected] ' 

    #switch user to deploy 
    su - deploy 

    #switch path 
    echo "Switching the path" 
    cd /var/www/deploys/bin/app/config 

    #run deploy script 
    echo "Running deploy script" 

    /usr/local/bin/cap -S env=prod deploy 

    #restart apache 
    sudo /bin/systemctl restart httpd.service 

    bash -l 
' 

무슨 일입니까? 서버에 성공적으로 연결되어있어 사용자가 변경된 다음 아무 일도 일어나지 않습니다. 터미널에서 Ctrl + C를 누를 때 실행해야하는 명령의 일부 출력이 나타나지만 오류가 있습니다.

왜 스크립트를 실행 한 후에 터미널에서 무슨 일이 일어나는지 모르겠습니까? 내가 잘못하고있는거야?

BTW : 수동으로 연결을 시도하고 직접 명령을 실행하면 모든 것이 잘 작동합니다.

사용에 CentOS

답변

8
7. ssh를 통해 로그인 및 명령 세트를 excecute하는

청소 방법은 여기 EOF 행위 명령 목록

에 대한 delimitter로

ssh [email protected] << EOF 
    #some commands 
EOF 

입니다 스크립트가 될 수 있습니다

ssh -t [email protected] << EOF 

    #switch user to deploy 
    su - deploy 

    #switch path 
    echo "Switching the path" 
    cd /var/www/deploys/bin/app/config 

    #run deploy script 
    echo "Running deploy script" 

    /usr/local/bin/cap -S env=prod deploy 

    #restart apache 
    sudo /bin/systemctl restart httpd.service 

    bash -l 
EOF 

으로 수정됩니다. 명령을 입력하고 거기에 연결을 닫습니다

+0

끝내줘! 고맙습니다! – EnchanterIO

+0

@ Trk 당신을 환영합니다 :) – nu11p01n73R

+0

완벽한 :) thx! – spinsch

관련 문제