Ana bilgisayar adına bağlı olarak terminal arka plan değişikliği yapabilir miyim?


17

Terminal arka plan rengimin ana makine adına göre değişmesini istiyorum. Bunun için akıl yürütme esas olarak hangi sunucuda olduğumu kendime hatırlatmak için ekstra bir yol var, bu yüzden aptalca bir şey yapmıyorum.

Yerel makinemdeysem standart patlıcan arka planını kullanabilir miyim, sonra bir üretim web sunucusuna veya belirleyebileceğim diğer ana bilgisayarlara ssh yaparsam kırmızı değiştirebilir miyim?


Bir fikir, değişikliği terminal ayarlarını işleyen çevresel değişkene yazın. Genellikle ssh yaptığınız her yer için bir komut dosyası oluşturun ve bu komut dosyasındaki ayarları değiştirin, yardımcı olabilecek bir kılavuz aşağıdadır : cyberciti.biz/faq/… - bu şekilde yalnızca bağlanmayacak bir komut dosyası çalıştırabilirsiniz ancak terminali söz konusu oturum için özelleştirir.
MaQleod

1
Ubuntu sitesinde aynı soru var: askubuntu.com/questions/13705/… Dikkat, seni suçlamıyorum, ilk başta da bulamadım :)
Stefano

Yanıtlar:


9

Diğer ad kullanıldığında komut çalıştırmak için ssh / config komutunun localcommand seçeneğini kullanabilirsiniz. kullanırım

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

Bu xtermcontrol ve teriminizin xterm olmasına bağlıdır. Muhtemelen başka terimler için başka uygulamalar var.

Bu yaklaşımla ilgili tek sorun, ssh dediğinde gerçekleşmesidir. Renk değişikliğini geri alacak bir şey yok. Bunu ssh'nin etrafına bir işlev sararak yaptım, ama bunun da dezavantajları var.

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}

7

Herhangi bir işlevsellik olduğunu görünmüyor gnome-terminaliçin var olan bir pencereye için yeni bir sekme eklemek komut satırından. Ancak istediğinizi gerçekleştirmek için birkaç seçenek var.

Komut Başına Profil

gnome-terminalSSH yapacağınız her ana bilgisayar için yeni bir profil oluşturun . Düzenli olarak bağlandığınız yalnızca birkaç ana bilgisayarınız varsa, bu en basit olabilir. Her profilin farklı bir başlığı, ön plan rengi, arka plan rengi, özel komutu ve tanımlanan diğer ayarları olabilir. Ardından File -> Open Tab, seçilen profille yeni bir sekme açmak için kullanabilirsiniz .

Yeniden Kullanılabilir Profil

gnome-terminalFarklı bir SSH ana bilgisayarına her bağlanmak istediğinizde yeni bir pencere açmak için kullanılacak yeni bir profil oluşturun ( Stefano'nun işaret ettiği bu AskUbuntu yanıtına dayanarak ). Birçok farklı ana bilgisayara sık sık bağlanırsanız bu işe yarar. Bu, yalnızca arka plan / ön plan renklerinde farklı ana bilgisayarlara bağlı olduğunuz farklı pencereleri ayırt etmenize izin vermez , ancak pencere başına farklı bir başlığınız olacaktır.gnome-terminal

  1. gnome-terminalProfile File -> New Profiledayalı yeni bir profil ( ) oluşturun Defaultve "RemoteHost" olarak adlandırın (komutları kolaylaştırmak için "RemoteHost" içinde boşluk olmamalıdır).
  2. Title and CommandSekmenin altında şunları değiştirin:
    1. Initial title: "Uzak Ana Bilgisayar" a
    2. When terminal commands set their own titles: için Replace initial title
  3. ColorsSekmenin altında şunları değiştirin:
    1. işaretini kaldırın Use colors from system theme
    2. Build-in schemes: için Custom
    3. Text color:ve Background color:seçtiğiniz renklere. Bazı komutların lsçıktıları için renkleri kullandığını ve çıktıyı okumayı zorlaştıracak renkleri seçmek istemediğinizi unutmayın.
  4. CloseYeni profilinizi kaydetmek için düğmeyi tıklayın .
  5. Artık gnome-terminalkomutu kullanarak her uzak SSH ana bilgisayarı için yeni bir pencere açabilirsiniz gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost. -tSeçenek ayarlar gnome-terminalpencere başlık ve -xopsiyon terminalde komut satırının geri kalanını yürütür. Hatta aliastoplam tuş vuruşlarını kısaltmak için bir de yapabilirsiniz .

Komut satırı

Geçerli pencerede yeni bir sekme açmak için + + klavye kısayolunu kullanmak için bu blog girişinixdotool ve wmctrlkomutlarını kullanan aşağıdaki komut dosyasıyla buldum (Ubuntu'da varsayılan olarak yüklenmediler, bu yüzden önce yüklemeniz gerekebilir) . Belirli bir profille yeni bir sekme açmak ve sizin için bir komut çalıştırmak için değiştirilebilir.gnome-terminal CtrlShifttgnome-terminal

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

Diğer

Yaratıcı olabilir ve başka şeyler deneyebilirsiniz.

Bu SuperUser cevabı temel olarak gnome-terminalyeni bir pencere açmak için kullanılan geçici bir profil oluşturmak için biraz "script-fu" akrobatlar kullanır . Kullanımınız için değiştirilebilir.

Bu StackOverflow Soru-Cevap ve daha fazla "script-fu" akrobatını, gnome-terminalSSH'yi uzaktaki bir ana bilgisayara her dinamik olarak değiştirmek için kullanabilirsiniz. Arka plan / ön plan rengi değişimleri kadar belirgin olmaz, ancak Terminalher zaman standart bir başlıktan daha iyi olur .


6

Her ssh oturumu için yeni bir gnome-terminal penceresi kullanmak istiyorsanız, bu Gnome'da çalışacaktır.

  1. "Uzak" adlı yeni bir profil (farklı arka plan rengiyle) oluşturun

  2. Aşağıdakileri .bash_aliasesveya.bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

Şimdi "Uzak" profil ile yeni bir gnome-terminal oturumu sshc remote-machineaçar . bu yerel ve uzak profiller arasında ayrım yapar.

Birden çok profili / ana bilgisayarı barındırmak için birden çok profil oluşturun ve .bash_aliasesbunun yerine böyle bir şey yerleştirin :

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST=`echo $1 | cut -d'@' -f2`

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

Şimdi sshc Production"Kırmızı" profilini sshc Testkullanarak yeni bir oturum penceresi açacak, "Yeşil" profilini kullanarak yeni bir oturum penceresi açacak ve diğer toplantı sahipleri "Varsayılan" Profili kullanacak.


2

Stack *** sitelerinden tüm bilgileri toplamak burada nane arkadaşı + arkadaşı terminal için bulduğum en basit çözüm (gnome için aynı).

  1. Montaj ilişkisi terminalinde farklı arka plana sahip ikinci profili tanımlayın.
  2. Varsayılan tuşların çalışıp çalışmadığını kontrol edin Alt + PageDown / Alt + PageUp profili ve arka planı da değiştirmelidir.
  3. sudo apt get install xdotool

Artık / etc / ssh / ssh_config dosyasını değiştirebilirsiniz, böylece her ssh oturumu kurulduktan sonra profili değiştirebilir:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

Şimdi, terminalde her ssh bağlantısı kurulduktan sonra, profil değiştirilecek ve üretim veritabanına tekrar istenmeyen sql güncellemesi koymayacaksınız :)

Ancak, ssh bağlantısı kapatıldıktan sonra varsayılan profile geri dönmek için kolay bir çözüm yoktur. Ama bu benim için yeterli görünüyor ve daha fazla bilgi için kazmadı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.