2014-12-03 7 views
0

원격 시스템 (서버 A)에서 스크립트를 실행하는 로컬 시스템에 스크립트가 있습니다. 원격 서버 스크립트를 트리거 스크립트의 명령은 원격 서버에원격 서버에서 스크립트 실행 성공 확인

ssh <user>@<server ip> "bash -s < ./shell_backup_trx_db.sh" 

스크립트 shell_backup_trx_db.sh 같은 데이터베이스 백업을 받아 서버에 파일 시스템을 놓는다 보인다. 위의 명령을 사용하여 ssh 명령이 성공적으로 실행되었고 앞으로 스크립트 실행을 계속할 수있는 로컬 스크립트를 어떻게 확인할 수 있습니까?

+0

왜 'bash shell_backup_trx_db.sh' 대신'bash -s <./shell_backup_trx_db.sh'를 사용하고 있습니까? 그리고 당신의 스크립트가 실패 리턴 코드와 함께 존재한다면, 나는 ssh가 가능할 것이라고 믿고 당신은 그것을 로컬로 테스트 할 수있다. –

+0

답장을 보내 주셔서 감사합니다. -EtanReisner는 -s 매개 변수에 대해 잘 모르지만 방금 ssh를 통해 스크립트를 실행하는 중입니다. 또한 어떤 이유로 인해 ssh 명령이 원격 서버에 연결할 수없는 경우 ssh가 그 결과를 반환합니까? – arpitr

+1

연결이되지 않으면 오류를 반환합니다. 즉, '&&'를 사용하면 다음 스크립트가 실행되지 않습니다. –

답변

1

원격 스크립트가 적절한 종료 코드를 반환하면 문제가 발생하지 않습니다.

ssh <user>@<server ip> "/path/to/shell_backup_trx_db.sh" && echo "Done with backup"

편집 : 당신은 SSH 여부에 따라 여러 명령을 실행하려면

그냥 이전 명령이 오류없이 종료하는 경우에만 다음 명령을 계속 조건부 제어 연산자 &&를 사용 명령이 성공 또는 실패하면 if..else..fi 문을 사용할 수 있습니다.

예 : SSH를 (어떤 이유) 실패 할 때

if ssh <user>@<server ip> "/path/to/shell_backup_trx_db.sh"; 
then 
    echo "Backup completed successfully"; 
    ./next_script.sh; 
else 
    echo "Backup failed"; 
    exit; 
fi 
1

가 스크립트를 종료하려면이 같은 것을 사용할 수 있습니다.

if ! ssh ...; then 
    echo ssh failed 
    exit 
fi 
+0

나는 그것이 ~ if..then..fi'이어야한다고 믿는다. if..then..done이 아니다. –

+0

@ Chirag64 절대적으로 맞다. 컨텍스트 스위칭 문제가 있습니다. 결정된. 감사. –

0

@Chirag와 @Etan 덕분에 귀중한 답변을 얻을 수 있었고 도움을 얻었습니다.

if ssh <user>@<server-ip> stat shell_backup_trx_db.sh \> /dev/null 2\>\&1 
    then 
    # Trigger Production Database back for both mysql and mongo. 
    ssh <user>@<server-ip> "bash -s < ./shell_backup_trx_db.sh" 

    echo "Database backup successfully completed." 

    # Prompt user to check manually that database backup is completed successfully. 
    read -p "Ensure database backup process is successfully completed. Login to dev/stg server and run 'ls command'. Press [Enter] key to continue execution." 
    else 
    # Backup script could not be accessed, abort script execution any further. 
    echo "Back up script not found, aborting script execution, Please take backup before." 1>&2 
    exit 1 
    fi 
관련 문제