Wywoływanie polecenia lokalnego przy każdym udanym połączeniu podczas korzystania z multipleksowania ssh?

4

Chciałbym automatycznie uruchamiać polecenie za każdym razem, gdy pomyślnie połączę się ze zdalnym hostem przez ssh.

Mogę to zrobić dla pierwszego połączenia z każdym hostem przy użyciu wpisów PermitLocalCommand yesi LocalCommand ~/bin/ssh-notify-mew mojej ~/.ssh/config, podobnie jak w tej odpowiedzi, ale używam również dość agresywnej konfiguracji multipleksowania ssh (w przybliżeniu następujące):

Host *
PermitLocalCommand yes
ServerAliveCountMax 2
ServerAliveInterval 5
ControlPath ~/.ssh/mux/%r@%h:%p
ControlMaster auto
ControlPersist 1h

Przy tej konfiguracji LocalCommand jest wykonywany tylko dla pierwszego połączenia, zanim istnieje gniazdo kontrolne master / mux. Następnie łączę się, ale polecenie nie działa.

Czy jest jakiś sposób (bez wyłączania multipleksera), aby upewnić się, że LocalCommand lub jakiś równoważny wystąpi dla każdej nowej otwartej sesji interaktywnej?

Zawijanie sshpliku binarnego w funkcji powłoki lub skrypcie wydaje się, że nie zadziałałoby, ponieważ nie może wiedzieć, czy połączenie zakończyło się powodzeniem, dopóki nie zostanie zakończone.

Shabble
źródło
Kiedy mówisz „każda nowa sesja”, czy to oznacza tylko sesje interaktywne (gdzie pojawia się wiersz poleceń na zdalnym serwerze)? Czy obejmuje sesje nieinteraktywne? Co powiesz na sesje scp? sesje sftp? Czy to polecenie generuje dane wyjściowe do terminala?
Kenster
@Kenster: Przepraszam, tak. Miałem na myśli każdą interaktywną sesję (tak normalną ssh fooi ssh foo -t <cmd>, ale nie scp / cokolwiek innego, co nie ma przydzielonego pty. Edytowane pytanie do wyjaśnienia.
Shabble
automatically run a command every time I successfully connect- I dokładnie tak się dzieje. man 5 ssh_configmówi o ControlMaster: Enables the sharing of multiple sessions over a single network connection. Jest tylko jedno połączenie. Proces główny sshgo tworzy (łączy), sshużywa go każdy kolejny . Rozumiem, co chcesz osiągnąć; Chodzi mi o to, że używasz słowa „połączenie”, gdzie „sesja” jest tym, co masz na myśli.
Kamil Maciorowski