Çalıştığım sunucuyu tanımlayın


9

Terminalden ssh kullanırken hangi sunucuyu kullandığınızı nasıl belirleyebilirim?

Günde 30 sunucuya geçmeli ve bunlar arasında sürekli geçiş yapmalıyım.
Şu anda sekme adını düzenliyorum ve birinden diğerine atlamak için IP idresi yazıyorum.

Bunu yapmanın otomatik bir yolu var mı (sunucu IP adresini sekme adı olarak atama)? Her sunucuda dosya düzenlemeyi içermeyen başka alternatifler var mı?


1
sunucunuzu tanımlamak için ne bilmeniz gerekiyor? Sunucu adını görmek için sadece "hostname" yazıyorum. Bilmem yeterli, çünkü
Özel

şu anda user@hostnamebağlandığım ilk ana bilgisayarda var. IP adresini görmek istiyorum. Ayrıca, ' server1e atlarsam server2sekme adları değişmez.
RASG

evet bu senin adın, ama sunucuadı demek istiyorum. bu makine için bir ana makine adı olmalıdır. bu senin için yeterli bilgi değil mi?
Özel

1
Terminallerinizin arka plan rengini ayarlamaya ne dersiniz? Nasıl bağlandığınıza ve hangi terminali kullandığınıza bağlı olarak onu otomatik hale getirebilirsiniz. Örneğin, üretim sunucuları için koyu kırmızı bir arka plan belirleyebilirim, bu yüzden özellikle dikkatli görünen ve aynı hissettiren hazırlama sunucularına eşzamanlı olarak bağlanırken çok dikkatli olmam gerektiğini biliyorum.
Panda Pijama

1
30 sunucu arasında sürekli geçiş yapıyorsanız, komut dosyası oluşturma ve yönetim için kukla gibi araçlara bakmanız gerekir. Ayrıca bir IP ana bilgisayar adından daha iyi tanınıyorsa, bunlar iyi ana bilgisayar adları gibi görünmez!
JamesRyan

Yanıtlar:


11

Genellikle üzerinden ayarlanan ana bilgisayar adını kullanırım $PS1. Ancak, sorunla karşılaşırsanız, GNU kullanmaya başlayabilir screenve ardından aşağıdaki gibi bir işlev tanımlayabilirsiniz:

function ssh-title () {
    host="${@: -1}"  # You could customize it to make it identify the hostname better
    IP=$(host "$host" | awk '/has address/ { print $4 }')
    echo -ne '\033]0;'"$host"' - '"$IP"'\007'
    screen ssh "$@"
}

Açıklama:

  1. Yerel kabuğunuzdan bir başlık ayarlasanız bile, uzak kabuk ayarları tarafından üzerine yazılabilir. screenuzak kabuğun bunu doğrudan yapmasına izin vermez ve bunu yapmak için özelleştirmeniz gerekir, böylece bir başlığı yerel olarak ayarlayıp ona yapışmanızı kolaylaştırır.
  2. Son parametreyi ana makine adı olarak değerlendirirken IP'yi ana makine adından arayın ve başlık olarak ayarlayın. Ben biraz yapmak zorunda deneme ve yanılma Buna hakkım gelmeden önce dize. Siz de yapmak zorunda kalabilirsiniz. echo
  3. Son olarak, komutla screenbir oturum başlatmak için sshkullanın. Komut çıktığında oturum sona erer.

Bunu çeşitli şekillerde özelleştirebilirsiniz. Örneğin, ana makine adlarını ve IP'leri bir dosyaya kaydedebilir ve dosyadan okuyabilirsiniz (tür gibi ssh_config) (ve belki de başlık için kullanıcı adları gibi başka şeyler kaydedebilirsiniz).

Şimdi ssh-title some.hostbağlanmak için kullanın . Bence herhangi bir sunucu tarafı düzenlemeden bunu yapabilmenin tek yolu bu.


5

Bir sunucuyu tanımlamanın birkaç yolu:

  • SSH parmak izi - güvenli ancak yeniden dağıtım yaptığınızda değişir.
  • Kabuk istemi ( PS1) ve terminal başlığı - güvensiz (herkes onu çoğaltabilir) ama basit ve pratik.
  • ip address - SSH parmak izi ile güvenli ve daha kolay okunabilir.
  • hostname - güvensiz ama çok okunabilir.

Teşekkürler. ve bunu otomatik olarak terminal sekmesi başlığı olarak nasıl eklersiniz?
RASG

2

Başka bir seçenek liquidprompt --- ' i kullanmaktır bashve her ikisi için de çalışır zshve terminal başlığı ayarlanacak ve hatta komut isteminde ana bilgisayar adını farklı renklerde renklendirecek şekilde kolayca yapılandırılabilir:

resim açıklamasını buraya girin


2

Bu çözüm biraz acayip, ama aradığınız şeyi yapacağını düşünüyorum. Bunun çalışması için ihtiyacınız olacak xdotoolve wmctrlkurulacaksınız.

Öncelikle ~/.bashrcdosyanızı düzenlemelisiniz çünkü varsayılan olarak terminal her satırdan sonra başlığını sıfırlar, komut satırı başlığını işe yaramaz hale getirir.

Hemen sonra: xterm*|rxvt*)

Değiştir: PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

İle: PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "

Daha sonra, sshne istersen denilen özel bir komut dosyası oluşturacağız , ancak bu cevap için benimkini arayacağım tab-ssh. Bir metin düzenleyici açın ve aşağıdakileri kaydedin tab-ssh:

#!/usr/bin/env bash

WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID

sleep 1
title=$(echo "$*" | sed s/.*@//g)
xdotool type --delay 1 --clearmodifiers 'echo -en "\033]0;"'"${title}"'"\a"'
xdotool key Return

sleep 1
xdotool type --delay 1 --clearmodifiers "ssh $*"
xdotool key Return

Ardından çalıştırılabilir yapın:

chmod +x tab-ssh

Şimdi, kullandığınızı bashve gnome-terminalkomut dosyasını çalıştırdığınızda yeni bir sekme açmalı, yeniden adlandırmalı ve sshoturumu başlatmalısınız . Örnek için:

tab-ssh username@0.0.0.0

yeni bir sekme açar, yeniden adlandırır 0.0.0.0(yani "@" işaretini izleyen her şey), ardından yürütür username@0.0.0.0.

Aşağıdakiler kullanılarak oluşturuldu:

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.