2014-10-22 13 views
1

내 집과 직장 파일 시스템을 동기화하려면 중개 컴퓨터를 통해 포트 포워딩을 사용해야합니다. 우리가 명령 줄에서 가정용 컴퓨터 A, 중간 하나 B 및 작업 컴퓨터 C.를 부르 자 나는 떠들썩한 파티 스크립트에이 한 줄을 넣어 싶습니다이일단 포트 포워딩을 끝내면 죽이는 방법

ssh -N -f -L 2025:C:22 [email protected] && unison foo ssh://[email protected]:2025/foo 
  • 않습니다. 마지막에 정상적으로 종료하고 포트 포워딩을 설정하지 않고 그대로 두려면 어떻게해야합니까?
+0

왜 투표 결과가 좋을까요? 프로그래밍 질문입니다. – eleanora

+0

스크립트에 넣으면 자동으로 작동합니다. –

+0

@JohnZwinck'ps auwx | grep ssh'를 통해 볼 수있는 "ssh -N -f -L 2025 : C : 22 me_B @ B"뒤에 남겨 둡니다. – eleanora

답변

1
ssh -N -f -L 2025:C:22 [email protected] & 
pid=$! # ssh PID 
rc=$? # ssh return code 

# set up to kill ssh when this script finishes 
function finish { 
    kill $pid 
} 
trap finish EXIT 

[ $rc -eq 0 ] && unison foo ssh://[email protected]:2025/foo 
+0

감사합니다. 이것은 거의 완벽하게 작동합니다 (나는 &를 제거해야하므로 & ssh 암호를 입력 할 수 있습니다). 나는 이것의 결과로 생각한다 "변화를 찾는다 서버에서 변경을 기다리는 중 변경 사항을 조정 중 아무 것도하지 않는다 : 마지막 동기화 이후 복제본이 변경되지 않았다. kill : 사용법 : kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... 또는 kill -l [sigspec] "백그라운드에 넣지 않으면 문제가 생길 수도 있지만 암호를 입력 할 수 있어야합니다. – eleanora

+0

'kill '이 그 사용법을 출력하고 있다면,'$ pid'는 어딘지가 맞지 않습니다. 어쩌면'export pid = $!'를 시도해 본 후 ssh를 시작하겠습니까? 나는 지금 확실하지 않다. –