원격 서버가 연결을 종료하기 전에 원격 명령을 실행합니다.

원격 서버가 연결을 종료하기 전에 원격 명령을 실행합니다.

그래서 이것저것 찾아보았지만 이 문제를 해결할 수 있는 방법은 찾지 못했습니다. 저는 종종 sudo 권한 없이 SSH를 통해 원격 서버에 연결합니다.

원격 서버가 활동이 없거나 다른 이유로 인해 연결을 종료/재설정한다고 가정합니다. 이제 내가 원하는 것은 원격 서버가 내 연결을 종료하기 전에 다음을 실행해야 한다는 것입니다.비밀번호. 원격 서버가 연결을 종료하는 것을 연장/방지하는 방법이 있다는 것을 알고 있지만 종료하기 전에 내가 선택한 사용자 정의 명령을 실행하고 싶습니다.

답변1

EXITBash에서는 종료 시 쉘이 명령을 실행 하도록 트랩을 설정할 수 있습니다 .

trap 'do something here' EXIT

이는 ^Dend-of-input()으로 인해 종료되는 쉘, 시간 초과, 를 TMOUT사용 SIGTERM하거나 실행하는 쉘 SIGHUP, SSH 클라이언트가 정지된 SSH를 통한 원격 쉘에 적용됩니다.

그러나 SSH(또는 다른 네트워크 연결)를 통해 실행할 때 쉘은 연결이 실제로 닫힐 때까지 연결 닫힘에 반응할 수 없으므로 해당 지점에서 인쇄되는 내용은 결코 반대쪽 끝에 도달하지 않습니다. 명령을 실행하여 원격 측의 내용을 수정할 수 있지만 이와 같은 명령은 pwd내용만 인쇄할 뿐 유용한 작업을 수행하지 않습니다.

마지막 작업 디렉토리를 표시하려면 프롬프트에서 이스케이프 \w문자를 사용하여 쉘이 이를 인쇄하도록 할 수 있습니다.

답변2

비슷하다일카츄의 답변를 사용하면 로그인 쉘이 종료될 때 실행되는 명령 ~/.bash_logout세트를 생성할 수 있습니다 . bash그의 답변의 질문과 유사하게 SSH 연결이 종료되면 실행되지 않습니다.

관련 정보