Mengubah warna Terminal saat ssh-ing ke mesin jarak jauh dan kembali

8

Mencari cara secara otomatis mengubah warna terminal saat ssh-ing ke mesin jarak jauh dan kembali ke warna default, saat keluar dari sesi ssh. Sederhananya, ingin memiliki warna lain ketika saya sedang mengerjakan mesin remote.

Ada ide?

ps: tidak ingin menggunakan iTerm2, tetapi Terminal.app standar

Kobame
sumber

Jawaban:

9

Saya menggunakan yang berikut ini.

Memiliki perintah shell, dipanggil myssh, dengan konten:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

dan gunakan alias bash untuk koneksi, seperti:

alias ssweb='myssh Homebrew [email protected]'
alias ssmail='myssh Ocean [email protected]'

Ketika saya ingin ssh ke server web, saya cukup menulis sswebdi Terminal dan saya mendapat profil "Homebrew". Ketika sesi ssh berakhir, AppleScript mengatur kembali ke "Basic".

Alias ​​harus masuk ke $ HOME / .profile atau file bash-startup serupa Anda.

"Homebrew", "Ocean" dll. Adalah profil pengaturan dari preferensi Terminal.app. Anda juga dapat mengatur berbagai font, penyandian, dll.

Tentu saja, Anda dapat menggunakannya secara langsung (tanpa alias) seperti:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
sumber
bagaimana Anda melakukan ini untuk iterm2? Terima kasih!
Cosu
Saya berhenti menggunakan iTerm ketika dalam "vim" setelah memilih beberapa teks itu memotong seleksi daripada menyalin ..; (Jadi, Sayangnya, saya tidak tahu tentang solusi iTerm2.
jm666
Terima kasih! Saya telah melihat berbagai cara kludgy untuk melakukan ini untuk sementara waktu, tetapi metode Anda sederhana dan fleksibel. Poin bonus untuk mengembangkan kerangka kerja kecil yang dapat mengambil profil dan perintah dari alias yang berbeda, daripada mencerai-beraikan sekelompok skrip individual dengan set preferensi yang dikodekan keras.
octern
2

Saya tahu sudah ada beberapa jawaban, tapi inilah alternatifnya:

Tidak ada cara umum untuk mengubah warna latar belakang, tetapi kita dapat menggunakan cara standar untuk mengubah judul jendela. Jika Anda masuk ke banyak perangkat non-"server Unix" (seperti perangkat jaringan; router, switch, firewall dll) maka Anda harus menggunakan shell mereka dan tidak dapat menginstal variabel shell Anda sendiri. Jadi, inilah cara lain:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

Tambahkan ini ke .bashrc.

Pada dasarnya, karena fungsi dan alias lebih disukai daripada mencari di path, ini mengambil perintah ssh dan menggunakan teks sebelum dan sesudah "@" untuk mengatur variabel HOST dan USER yang kemudian digunakan untuk menggemakan kode ASCII yang dikenali oleh terminal dan digunakan untuk mengatur judul.

Anda harus menggunakan "ssh [email protected]" untuk ini dan bukan "ssh -l user host.blah"

Jika Anda tidak memberikan nama pengguna, itu akan menjadikannya sebagai nama pengguna Anda saat ini (jelas jika Anda menggunakan custom .ssh / config (yang saya gunakan banyak) maka ini tidak akan akurat, tapi saya pikir itu cukup bagus untuk menjadi berguna.

wawawawa
sumber