ssh를 종료 한 후 자동으로 명령을 실행하는 방법


10

ssh연결 을 종료 한 후 로컬 터미널에서 자동으로 명령을 실행하려면 어떻게 해야합니까? 이를 처리 할 수있는 후크 또는 이벤트가 있습니까?

답변:


13

alias더 나은 기능을 활용하십시오 .

예를 들면 다음과 같습니다.

ssh () { command ssh "$@"; echo foobar; }

이제 다음을 실행할 수 있습니다.

ssh mysite

ssh세션 을 종료하면 echo foobar실행됩니다.

echo foobar실행해야하는 실제 명령으로 변경하십시오. 물론 원하는 경우 여러 명령을 처리 할 수도 있습니다.

함수 정의를 영구적으로 만들려면에 넣으십시오 ~/.bashrc.


또한 sshexternal을 명시 적으로 사용하려는 경우 와 같이 이름이 지정된 함수를 갖는 것이 항상 바람직하지는 않습니다 ssh. 이 경우 다음 중 하나를 사용 ssh하여 외부 ssh바이너리 를 가져 오는 함수를 건너 뛸 수 있습니다 .

command ssh mysite

또는 함수의 이름을 다른 것으로 바꾸십시오 sshfunc.

sshfunc () { ssh "$@"; echo foobar; }

4
참고 : 함수 이름을 "ssh"가 아닌 다른 이름으로 바꾸는 것이 좋습니다. ssh를 원래 의미로 유지하십시오. 아마도 : ssh2? 또는 sshcmd? (그렇지 않으면 다음과 같은 일을 할 때 부작용을 잊을 수 있습니다. ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgz: 끝에 "foobar"가 포함되어 있기 때문에 이것은 잘못 될 것입니다 ...)
Olivier Dulac

@OlivierDulac 좋은 지적, 편집했다.
heemayl

\ ssh 'ssh'및 "ssh"는 별명 만 이스케이프합니다. ssh 명령은 명령을 실행합니다 (별명과 함수 모두 이스케이프).
Olivier Dulac

@OlivierDulac 그것을 몰랐습니다.
heemayl

bash에서 다른 쉘과 다를 수 있습니다 ...하지만 지금은 추가로 답변을 좋아합니다. +1 ^^
Olivier Dulac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.