ระบุเซิร์ฟเวอร์ที่ฉันกำลังทำงานอยู่


9

วิธีระบุเซิร์ฟเวอร์ที่คุณใช้เมื่อใช้ ssh จากเทอร์มินัล

ฉันต้อง ssh เป็น 30 เซิร์ฟเวอร์ทุกวันและสลับระหว่างพวกเขาอย่างต่อเนื่อง
ขณะนี้ฉันกำลังแก้ไขชื่อแท็บและเขียน IP iddress เพื่อข้ามจากที่หนึ่งไปยังอีก

มีวิธีอัตโนมัติในการทำเช่นนี้ (กำหนดที่อยู่ IP ของเซิร์ฟเวอร์เป็นชื่อแท็บ) หรือไม่ ทางเลือกอื่นที่ไม่เกี่ยวข้องกับการแก้ไขไฟล์ในแต่ละเซิร์ฟเวอร์?


1
สิ่งที่คุณต้องรู้ในการระบุเซิร์ฟเวอร์ของคุณ ฉันเพียงพิมพ์ "ชื่อโฮสต์" เพื่อดูชื่อเซิร์ฟเวอร์ นั่นก็เพียงพอแล้วสำหรับฉันที่จะรู้เพราะเราเคยใช้วิธีการตั้งชื่อที่ดี
ส่วนตัว

ปัจจุบันฉันมีuser@hostnameโฮสต์แรกที่ฉันเชื่อมต่อ ฉันต้องการดูที่อยู่ IP นอกจากนี้หากฉันข้ามserver1ไปserver2ยังแท็บจะไม่เปลี่ยนชื่อ
RASG

ใช่นั่นคือชื่อของคุณ แต่ฉันหมายถึงชื่อเซิร์ฟเวอร์ จะต้องมีชื่อโฮสต์สำหรับเครื่องนั้น ข้อมูลนั้นไม่เพียงพอสำหรับคุณใช่ไหม
ส่วนตัว

1
วิธีการเกี่ยวกับการตั้งค่าสีพื้นหลังของอาคารของคุณ? ขึ้นอยู่กับว่าคุณจะเชื่อมต่ออย่างไรและเทอร์มินัลใดที่คุณกำลังใช้อยู่คุณสามารถทำให้เป็นอัตโนมัติได้ ตัวอย่างเช่นฉันอาจตั้งค่าพื้นหลังสีแดงเข้มสำหรับเซิร์ฟเวอร์ที่ใช้งานจริงดังนั้นฉันรู้ว่าฉันต้องระมัดระวังเป็นพิเศษโดยเฉพาะอย่างยิ่งเมื่อเชื่อมต่อกับเซิร์ฟเวอร์จัดเตรียมที่มีลักษณะและความรู้สึกเหมือนกัน
ชุดนอนแพนด้า

1
หากคุณสลับระหว่างเซิร์ฟเวอร์ 30 เครื่องอย่างต่อเนื่องคุณจะต้องดูการเขียนสคริปต์และเครื่องมือเช่นหุ่นเชิดเพื่อการจัดการ นอกจากนี้หาก IP รู้จักได้ดีกว่าชื่อโฮสต์สิ่งเหล่านี้จะไม่เหมือนกับชื่อโฮสต์ที่ดี!
JamesRyan

คำตอบ:


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. ค้นหาIP จากชื่อโฮสต์ในขณะที่พิจารณาพารามิเตอร์สุดท้ายเป็นชื่อโฮสต์และตั้งเป็นชื่อ ฉันต้องทำการทดลอง และ ข้อผิดพลาดเล็กน้อยก่อนที่ฉันจะได้echoสตริงที่ถูกต้อง คุณอาจต้องทำเช่นกัน
  3. สุดท้ายใช้screenเพื่อเริ่มเซสชันด้วยsshคำสั่ง เซสชันสิ้นสุดลงเมื่อคำสั่งออก

คุณสามารถปรับแต่งสิ่งนี้ได้หลายวิธี ตัวอย่างเช่นคุณอาจบันทึกชื่อโฮสต์และ IP ในไฟล์และอ่านจากมัน (เหมือนเช่นssh_config) (และอาจบันทึกสิ่งอื่น ๆ สำหรับชื่อเช่นชื่อผู้ใช้)

ตอนนี้ใช้ssh-title some.hostเพื่อเชื่อมต่อ ฉันคิดว่านี่เป็นวิธีเดียวที่คุณสามารถทำได้โดยไม่ต้องแก้ไขฝั่งเซิร์ฟเวอร์


5

สองสามวิธีในการระบุเซิร์ฟเวอร์:

  • ลายนิ้วมือ SSH - ปลอดภัย แต่จะเปลี่ยนแปลงทุกครั้งที่คุณปรับใช้ใหม่
  • เชลล์พร้อมต์ ( PS1) และชื่อเทอร์มินัล - ไม่ปลอดภัย (ทุกคนสามารถทำซ้ำได้) แต่ใช้งานง่ายและใช้งานง่าย
  • ip address - รักษาความปลอดภัยด้วยลายนิ้วมือ SSH และอ่านได้ง่ายขึ้น
  • hostname - ไม่ปลอดภัย แต่อ่านได้มาก

ขอบคุณ และคุณจะเพิ่มสิ่งนั้นเป็นชื่อแท็บเทอร์มินัลโดยอัตโนมัติ
RASG

2

อีกทางเลือกหนึ่งคือการใช้liquidprompt --- ใช้ได้ทั้ง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เซสชัน สำหรับ exmaple:

tab-ssh username@0.0.0.0

จะเปิดแท็บใหม่เปลี่ยนชื่อเป็น0.0.0.0(เช่นทุกอย่างตามหลังเครื่องหมาย "@") จากนั้นดำเนินการusername@0.0.0.0จากนั้นดำเนินการ

สร้างโดยใช้สิ่งต่อไปนี้:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.