Bir sunucuyu ssh ettiğimde terminal renklerini otomatik olarak nasıl değiştirebilirim?


14

Sık sık os x terminal penceremden farklı sunuculara giriş yapıyorum.

Terminal pencerelerimin daha kolay anlaşılması için farklı ana bilgisayarlar için bir renk şeması atamak istiyorum. Bu otomatik olarak yapılabilir mi?

Yanıtlar:


11

İşte tam bir çözüm. Sunucularınızın IP adreslerinin ve / veya alan adlarının ve onlar için istediğiniz renklerin listesini ~ / .server_colors içinde tutun:

192.168.122.102, Kızıl Kumlar
192.168.122.103, Okyanus
www.foo.com, Çim
foo.com, Çim

Sonra ssh komutunu ele geçirmek için bu satırı ~ / .profile dosyasına ekleyin:

takma ad ssh = "~ / bin / safe_ssh $ 1"

Ardından ssh hedefinizdeki @ işaretinden sonra gelenleri listenizle karşılaştırın. Bir eşleşme varsa, ekranı karşılık gelen renge değiştirmek için bir AppleScript çalıştırın. İşte ~ / bin / safe_ssh:

#! / Bin / bash
ip = `yankı $ 1 | kes -d "@" -f2`
match = `kedi ~ / .server_colors | grep $ ip | wc -l`
[$ match -gt 0] ise
sonra
    renk = `kedi ~ / .server_colors | grep $ ip | kes -f2 -d "," `
    osascript ~ / bin / change_terminal_color.scpt "$ renk" 2> / dev / null
fi
/ usr / bin / ssh $ 1

Ve son olarak, işte ~ / bin / change_terminal_color.scpt

koşarken argv
    "Terminal" uygulamasına pencere 1'in seçili sekmesinin geçerli ayarlarını şu şekilde ayarlamasını söyleyin: (adı ilk ayar grubu (argv öğesinin 1'i))
son koşu

Bu kodun çoğunu bu blog yazısından aldım .


1
Çok hoş. Safe_ssh betiğinde, SSH'ye fazladan parametrelerin iletilmesine izin vermek için $ 1 $ @ olmalıdır. Belki de ssh'den sonra terminali varsayılana döndürmek için bir çağrı. Son bir düzenleme bunu oldukça mükemmel hale getirecektir: '@' içermeyen SSH komutları için destek.
nOw2


2

@ Muirbot'un çözümü benim için gerçekten iyi çalışıyor. Bu konuda bazı küçük iyileştirmeler yaptım. Yeterli üne sahip olduğumda yazısının altına ekleyeceğim.

Çizgiyi değiştirin

ip =echo $1 | cut -d"@" -f2
ile
ip =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

Bu değişiklik, ssh komutunuza "ssh -p 1111 userName @ host" gibi ek argümanlar verilmesini sağlar

Normal ifade basit ipv4 adreslerine ve alan adlarına izin verir.

Birden fazla argümanı daha da desteklemek için son satırı şu şekilde değiştirin:

/ usr / bin / ssh $ @


0

Sadece aynı şeyi arıyordum ve bu makaleyi buldum:

http://akrabat.com/php/osx-terminal-colours/

El yazısıyla terminal renklerini değiştirmek için bir php betiği kullanır. Her sunucu için farklı renk eşlemeleri ayarlayabilirsiniz. Php şeyler ruby ​​içine yeniden yazma dürtüsü hissediyorum rağmen benim için harika çalışıyor :)

fk


0

Farklı bg / fg renklerle xterm pencerelerinde SSH başlatan bir komut dosyası kullanıyorum. Yapılandırmaya gerek kalmaması için renkleri renk adından ana bilgisayar adının karmasına göre seçer.

Betik Ruby'de yazılmıştır: https://github.com/mickeyil/ssx


0

İTerm2 kullanıyorsanız ~/bin/ssh-host-color.sh, https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57 adresindeki içeriklerle bir dosya oluşturun :

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

Ve ~/.aliases.shdosyanıza aşağıdaki satırı ekleyin :

alias ssh="~/bin/ssh-host-color.sh $@"
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.