मैं जिस सर्वर पर काम कर रहा हूं, उसे पहचानें


9

टर्मिनल से ssh का उपयोग करते समय आप किस सर्वर की पहचान करते हैं?

मुझे रोजाना 30 सर्वरों में ssh, और उनके बीच लगातार स्विच करना पड़ता है।
वर्तमान में मैं टैब नाम संपादित कर रहा हूं और एक से दूसरे में जाने के लिए आईपी आइड्रेस लिख रहा हूं।

क्या ऐसा करने का एक स्वचालित तरीका है (सर्वर आईपी पते को टैब नाम के रूप में निर्दिष्ट करना)? किसी भी अन्य विकल्प है कि प्रत्येक सर्वर पर एक फ़ाइल संपादन शामिल नहीं होगा?


1
आपको अपने सर्वर को पहचानने के लिए क्या जानने की आवश्यकता है? मैं सर्वर नामों को देखने के लिए "hostname" टाइप करता हूं। मेरे लिए यह जानना काफी है क्योंकि हम एक अच्छे नामकरण सम्मेलन का उपयोग करते थे
निजी

वर्तमान में मेरे पास user@hostnameपहला होस्ट है जो मैं जोड़ता हूं। मैं आईपी एड्रेस देखना चाहूंगा। भी, अगर मैं से कूद server1करने के लिए server2, टैब के नाम नहीं बदलता है।
RASG

हाँ, यह आपका नाम है, लेकिन मेरा मतलब सर्वरनाम है। उस मशीन के लिए एक होस्टनाम होना चाहिए। आपके लिए यह पर्याप्त जानकारी नहीं है?
प्राइवेट

1
अपने टर्मिनलों की पृष्ठभूमि का रंग कैसे सेट करें? आप कैसे कनेक्ट करते हैं और किस टर्मिनल का उपयोग कर रहे हैं इसके आधार पर आप इसे स्वचालित करने में सक्षम हो सकते हैं। उदाहरण के लिए, मैं उत्पादन सर्वरों के लिए एक गहरे लाल रंग की पृष्ठभूमि निर्धारित कर सकता हूं, इसलिए मुझे पता है कि मुझे अतिरिक्त सावधानी बरतनी होगी, खासकर जब एक साथ मंचन करने वाले सर्वर से जुड़ते हैं जो बिल्कुल एक जैसे दिखते और महसूस करते हैं।
पांडा पजामा

1
यदि आप लगातार 30 सर्वरों के बीच स्विच कर रहे हैं, तो आपको प्रबंधन के लिए स्क्रिप्टिंग और कठपुतली जैसे उपकरणों को देखना होगा। इसके अलावा, अगर एक आईपी होस्टनाम की तुलना में अधिक पहचानने योग्य है, तो ये अच्छे होस्टनाम की तरह नहीं लगते हैं!
जेम्सरन

जवाबों:


11

मैं आमतौर पर होस्टनाम का उपयोग करता हूं, जिसके माध्यम से सेट किया जाता है $PS1। हालाँकि, यदि आप परेशानी उठाते हैं, तो आप GNU का उपयोग शुरू कर सकते हैं screenऔर फिर आप किसी फ़ंक्शन को इस तरह परिभाषित कर सकते हैं:

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 "$@"
}

स्पष्टीकरण:

  1. यहां तक ​​कि अगर आप अपने स्थानीय शेल से एक शीर्षक सेट करते हैं, तो यह दूरस्थ शेल सेटिंग्स द्वारा अधिलेखित हो सकता है। screenसीधे दूरस्थ शेल को ऐसा नहीं करने देता है, और आपको इसे ऐसा करने की अनुमति देने के लिए इसे अनुकूलित करना होगा, जिससे आपको स्थानीय स्तर पर एक शीर्षक सेट करना और उससे चिपकना आसान हो जाएगा।
  2. होस्टनाम के रूप में आईपी देखें , अंतिम पैरामीटर को होस्टनाम के रूप में देखते हुए, और इसे शीर्षक के रूप में सेट करें। मुझे एक सही स्ट्रिंग मिलने से पहले मुझे थोड़ा परीक्षण और त्रुटि करनी echoपड़ी। आपको भी करना पड़ सकता है।
  3. अंत में, कमांड के screenसाथ एक सत्र शुरू करने के लिए उपयोग करें ssh। कमांड से बाहर निकलने पर सत्र समाप्त होता है।

आप इसे विभिन्न तरीकों से कस्टमाइज़ कर सकते हैं। उदाहरण के लिए, आप किसी फ़ाइल में होस्टनाम और IP को सहेज सकते हैं और उससे पढ़ सकते हैं (थोड़े जैसे ssh_config) (और शायद उपयोगकर्ता नाम की तरह शीर्षक के लिए अन्य चीज़ों को भी सहेज सकते हैं)।

अब ssh-title some.hostकनेक्ट करने के लिए उपयोग करें। मुझे लगता है कि यह एकमात्र तरीका है जो आप कुछ भी सर्वर साइड को संपादित किए बिना कर सकते हैं।


5

सर्वर की पहचान करने के कुछ तरीके:

  • SSH फ़िंगरप्रिंट - सुरक्षित लेकिन जब भी आप फिर से लोड करते हैं तो यह बदल जाता है।
  • शेल प्रॉम्प्ट ( PS1) और टर्मिनल शीर्षक - असुरक्षित (कोई भी इसे डुप्लिकेट कर सकता है) लेकिन सरल और व्यावहारिक।
  • ip address - SSH फिंगरप्रिंट के साथ सुरक्षित, और अधिक आसानी से पठनीय।
  • hostname - असुरक्षित लेकिन बहुत पठनीय।

धन्यवाद। और आप अपने टर्मिनल टैब शीर्षक के रूप में स्वचालित रूप से कैसे जोड़ेंगे?
RASG

2

एक अन्य विकल्प लिक्विडप्रोम --- का उपयोग करना हैbash और दोनों के लिए काम करता है zsh, और टर्मिनल शीर्षक सेट और यहां तक ​​कि विभिन्न रंगों में रंगने के लिए आसानी से कॉन्फ़िगर किया जा सकता है:

यहां छवि विवरण दर्ज करें


2

यह समाधान थोड़ा हैकिश है, लेकिन मुझे लगता है कि यह वही करेगा जो आप खोज रहे हैं। इसके लिए आपको काम करने की आवश्यकता होगी xdotoolऔर इसे wmctrlस्थापित करना होगा ।

सबसे पहले आपको अपनी ~/.bashrcफाइल को एडिट करना होगा क्योंकि डिफ़ॉल्ट रूप से टर्मिनल हर लाइन के बाद अपना टाइटल रीसेट करता है, कमांड लाइन का टाइटल रेंडर करना बेकार हो जाता है।

एकदम बाद: xterm*|rxvt*)

बदलने के: PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

साथ में: PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "

आगे हम एक कस्टम sshस्क्रिप्ट बनाने जा रहे हैं, जिसे आप चाहते हैं, लेकिन इस उत्तर के लिए मैं आपको फोन करूंगा tab-ssh। एक पाठ संपादक खोलें और निम्न को सहेजें 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

फिर इसे निष्पादन योग्य बनाएं:

chmod +x tab-ssh

अब, मान लें कि आप उपयोग कर रहे हैं bashऔर gnome-terminal, स्क्रिप्ट को चलाकर एक नया टैब खोलना चाहिए, उसका नाम बदलना चाहिए और sshसत्र शुरू करना चाहिए । निर्वासन के लिए:

tab-ssh username@0.0.0.0

एक नया टैब खोलेगा, इसका नाम बदलकर 0.0.0.0(यानी "@" साइन के बाद सब कुछ), फिर निष्पादित करें username@0.0.0.0

निम्नलिखित का उपयोग करके बनाया गया:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.