Ssh ana bilgisayar adına bağlı olarak terminal arka planı otomatik olarak nasıl değiştirilir?


9

Bir kullanıcı, ssh ana bilgisayar adını temel alarak bir terminal penceresinin arka plan rengini nasıl progmatik olarak değiştirebilir?

Yani üretim donanımı üzerinde canlı gömülü sistemlere girdiğimde, terminal arka planının kırmızıya dönmesini istiyorum - hangi sunucunun "farkındalığını" korumak için. PS1'de sadece ana makine adına sahip olmak her zaman yeterli değildir.

GNOME terminal kullanıyorum, ancak Linux altında uygulanabilir herhangi bir çözümü kabul ediyorum.

Yanıtlar:


7

Arka plan rengini değiştirmek üzere ANSI kaçış dizisini yaymak için ssh LocalCommand öğesini kullanabilir ve uzak ana makineye karşılık vermek istediğiniz uygun rengi seçmek için ana makine başına (veya ana makine deseni) bir bölüme sahip olabilirsiniz.

Üretim sunucularınız "prod ile başlar" gibi bir adlandırma kuralına uyuyorsa, ~ / .ssh / config dosyanızda aşağıdaki snippet'i deneyebilirsiniz: Host prod* PermitLocalCommand yes LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"

Joker karakter desenlerini kullanmak için kullanışlı bir adlandırma kuralı yoksa, ana bilgisayar adlarını boşluklarla ayrılmış olarak listeleyebilirsiniz. Diğer çeşitli üretim dışı sunucular için farklı renk değerlerine ve dizelere sahip ek Ana Bilgisayar blokları da oluşturabilirsiniz.

Desene uyan bir ana bilgisayara bağlandıktan sonra, karşılık gelen printf yerel olarak yürütülür ve arka plan rengi kırmızı olarak değiştirilir ([41m arka plan rengi olarak kırmızı seçer, [2J kısmı tüm ekranı güncellenmiş arka plan rengiyle yeniden boyar. daha fazla seçenek için https://en.wikipedia.org/wiki/ANSI_escape_code )

Bu yaklaşımla ilgili en büyük sıkıntı, arka plan renginin ssh oturumundan çıkışta devam etmesidir; Disconnect üzerinde çalıştırılacak LocalCommand için hiçbir muadili yoktur (farkındayım). Ssh için bir diğer ad veya kabuk sarmalayıcı komut dosyası printf "\x1b[0m"sıfırlama olarak çağrılabilir. Öte yandan, arka plan renginin LocalCommand aracılığıyla ayarlanması, ssh bir sarmalayıcı komut dosyası veya diğer ad yoluyla çalıştırılmasa bile renk ayarını alacağınız anlamına gelir.


Mükemmel cevap! Gördüğüm tek sorun, ancak önemli olan renk değişiminin sadece ilk "ekran" için kalması. Komutlar girilir girilmez ve ekran yukarı kayar, kırmızıdan siyaha döner. Belki de gnome terminali renk kontrolü ANSI kaçış dizisini geçersiz kılıyor? Bir geçici çözüm biliyor musunuz?
Mtl Dev

Belki SSH ana bilgisayarındaki PS1 bilgi istemi değişkenine benzer bir şey yapmak mümkün mü?
Mtl Dev

Sıfırlamaya, PS1 istem değişkeninizdeki sekanslar veya diğer lsadlara benzer gibi komutlarınız varsa ls --color=autove '<ESC> [0m' sıfırlama sekansını eklediyseniz neden olabilir. Yine de devam etmek için, muhtemelen farklı gnome-terminal profilleri ayarlamanız ve sarıcı komut dosyası yoluna gitmeniz, ana bilgisayar adına dayalı bir profil adı seçmeniz ve çağırmanız gerekirgnome-terminal --profile=$PROFILE_NAME -e ssh $HOST &
PKapp

Tam olarak haklısınız: ls --colourPS1'de VEYA sıfırlama sırasına sahipsem, tek bir seçenek önceki ansi renk ayarlarını geçersiz kılar. Bu yüzden, sizin de mükemmel bir fikir olan önerilen sarıcı komut dosyası çözümünü uygulamaya bakacağım! Merci beaucoup!
Mtl Dev

Diğerleri de bunu fark eder: ~ / .ssh / config dosyasına printf eklemek rsync'i bozuyor gibi görünür. İlgili ayrıntılar burada: serverfault.com/questions/267154/…
Mtl Dev
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.