2013-04-17 11 views
1

그래, SSH를 통해 많은 명령을 실행해야하는 스크립트가 있으므로 제공되는 대상이 로컬 경로 인 경우 동일한 명령을 로컬로 실행할 수있게하고 싶습니다. 호스트 이름보다는 오히려.SSH를 통해 많은 명령 실행

이제는 로컬에서 작동하는지 여부를 결정할 수 있지만 너무 복잡한 것은 아니지만 실행해야 할 명령 집합이 정말 복잡합니다. ssh에 직접 인수로 제공하는 것보다 훨씬 더 좋습니다.

if [ -n "$HOST" ] 
    then 
     ssh "$HOST" 
fi 

# Run some commands 
# exit 

그러나 그런 내가 로컬 대상으로 할 때 스크립트가 조기 종료 발생하지 않고 적절한 변수와 출구를 통과 할 방법과 같은 명백한 문제가 : 내가하고 싶은 무엇

뭔가 같다. 그래서 이것이 가능하다면 실제로 원격으로 실행되는 정상 쉘 명령을 사용하여 위와 같은 작업을 수행 할 수 있습니까?

그렇지 않으면 내가 대신 자신의 쉘 스크립트로 실행해야하는 명령을 추출하고 쉘 스크립트를 (이미 존재하지 않는 경우) 복사 한 다음 실행하십시오. ,하지만 그 중 어떻게해야할지 모르겠습니다. 나는 기본적인 유닉스 명령에 익숙하지만, 이와 같은 것은 아니다!

어쨌든 가능하면 자세한 예를 들어서 가장 좋은 방법을 제안 해 주시면 감사하겠습니다.

답변

-1

원격 쉘을 살펴보십시오. http://en.wikipedia.org/wiki/Remote_Shell 보안을 처리하는 방법과 같이 몇 가지 문제가 있습니다. 일반 텍스트 파일에 암호를 저장하는 것은 원하는 것이 아닙니다. 또한 컴퓨터간에 몇 가지 종류의 신뢰를 설정해야합니다. linux/unix에 있다면 로컬 man 페이지를 확인하십시오.

1

암호가없는 SSH에 공개 키 인증을 설정했기 때문에 신뢰가 실제로 문제가되지 않습니다.

어쨌든, 최선의 선택은 쉘 스크립트로 명령을 추출하여 필요에 따라 서버로 보내는 것입니다. 즉, 필자는 여기서 스크립트를 보내지 않고도 문서를 작성할 수 있다고 생각합니다. 필요할 때 스크립트를 보내는 것이 내가 필요로하는 작업에 대해 더 효율적인 옵션 일 수 있습니다. 여기

이의 예 내가이 여기에 문서의 생각 : 주요 어려움은 원격 세션 내에서 명령이 "블록"어떤 표준 입력과 표준 출력하기 때문에, 올바르게 구성되어 있는지 확인하고있다

if [ -n "$HOST" ]; then ssh "$HOST" <<- 'REMOTE_SESSION'; fi 

    # Some commands 

if [ -n "$HOST" ]; then REMOTE_SESSION; fi 

SSH 연결이 열리면 원격 서버에 있습니다.