Çıkışta SSH LocalCommand


9

İçinde ~/.ssh/config, LocalCommanduzak bir makineye SSH yoluyla bağlandığınızda yerel bir komut yürütmek için yönergeyi kullanabilirsiniz . Ben Ama nasıl bir komut çalıştırmak mı çıkmak SSH bağlantısı? Bağlantı sona erdiğinde veya kapandığında * .bashrc / .bash_profile * dosyalarının kaynaklanmadığı anlaşılmaktadır.


Yanıtlar:


11

Bunun yerel veya uzak makinede yürütülmesini isteyip istemediğiniz soruda belirtilmez. Her iki makinede de hangi kabuğun bulunduğu belirtilmedi, bu yüzden bashher ikisi için de varsayıyorum .

Uzak makinede yürütmek istiyorsanız ~/.bash_logout, bir giriş kabuğu zarif bir şekilde oturumu kapattığında yürütülen işleme bakın . Gönderen man bash:

Bir oturum açma kabuğu çıktığında, bash dosyadan komutları okur ve yürütür ~/.bash_logout.

~/.bash_logoutOturumu kapatılan kabuğun bir SSH oturumu olup olmadığını kontrol etmek için bir test yapabilirsiniz , aşağıdakine benzer bir şey çalışmalıdır:

if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
    # commands go here
fi

Yerel makinede yürütmek istiyorsanız, etrafında bir işlev sarmalayıcısı oluşturun ssh. Aşağıdaki gibi bir şey işe yaramalıdır:

ssh() {
    if command ssh "$@"; then
        # commands go here
    fi
}

Bu, ihtiyaçlarınız için çok basit olabilir, ancak fikri anlarsınız.


Komutun yerel makinede çalıştırılması gerekiyordu. Önerin için teşekkürler. Sorunsuz çalışır.
Roberto Aloi

1

Doğru yoldasın. Eğer sshoturumu (yerine uzak bir komuta) bir giriş kabuğu, bashkaynak olacak /etc/bash.logoutve ~/.bash_logoutne zaman kabuk çıkın.

Uzak bir komut yürütmek istiyorsanız, bashbir giriş kabuğu olmaya zorlayabilirsiniz . Buna LocalCommandbenzer olabilir:

bash -l -c /execute/some/command

itibaren 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.

1
Uzak komut yürütülürse değil (Komut belirtilirse, oturum açma kabuğu yerine uzak ana bilgisayarda yürütülür.). Ancak, OP sorusunu daha yakından okurken, yerel olarak bir şey olmasını istiyor gibi görünüyor, bu yüzden cevap vermenin daha uygun olduğunu düşünüyorum.
George M
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.