SSH를 통해 원격 컴퓨터에 연결할 때마다 ~/.ssh/config
이 LocalCommand
지시어를 사용하여 로컬 명령을 실행할 수 있습니다. 하지만 내가 언제출구SSH 연결? *.bashrc/.bash_profile* 파일은 연결이 종료되거나 닫힐 때 가져오지 않는 것 같습니다.
답변1
로컬 또는 원격 시스템에서 이 작업을 수행할지 여부에 대한 사양은 없습니다. 어떤 시스템에 어떤 쉘이 존재하는지에 대한 사양도 없으므로 bash
두 시스템 모두에 존재한다고 가정합니다.
원격 컴퓨터에서 실행하려면 ~/.bash_logout
로그인 쉘이 정상적으로 로그아웃될 때 실행되는지 확인하세요. 에서 man bash
:
로그인 쉘이 종료되면 bash는 파일이
~/.bash_logout
존재하는 경우 해당 명령을 읽고 실행합니다.
~/.bash_logout
다음과 같이 로그아웃된 셸이 SSH 세션인지 테스트하여 확인할 수 있습니다 .
if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
# commands go here
fi
로컬 컴퓨터에서 실행하려면 함수 래퍼를 만듭니다 ssh
. 다음과 같이 작동해야 합니다.
ssh() {
if command ssh "$@"; then
# commands go here
fi
}
이는 귀하의 요구에 비해 너무 간단할 수 있지만 아이디어를 얻으실 수 있습니다.
답변2
당신은 올바른 길을 가고 있습니다. ssh
세션이 원격 명령이 아닌 로그인 셸인 경우 bash
셸을 종료할 때 소스를 얻습니다 /etc/bash.logout
.~/.bash_logout
원격 명령을 실행하려면 bash
로그인 셸을 강제 실행할 수 있습니다. LocalCommand
다음과 같이 보일 수 있습니다 .
bash -l -c /execute/some/command
~에서man 1 bash
-c string If the -c option is present, then commands are read from
string. If there are arguments after the string, they are assigned to
the positional parameters, starting with $0.
-l Make bash act as if it had been invoked as a login shell
When a login shell exits, bash reads and executes commands from the
files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.