Определите сервер, в котором я работаю

Как определить, какой сервер Вы идете при использовании ssh от терминала?

Я ежедневно имею к ssh в 30 серверов и переключатель между ними постоянно.
В настоящее время я редактирую имя вкладки и пишу IP iddress для спрыгивания с того другому.

Существует ли автоматизированный способ сделать это (присвоение IP-адреса сервера как имя вкладки)? Какие-либо другие альтернативы, которые не включат редактирование файла на каждом сервере?

9
задан 23 September 2014 в 18:47

4 ответа

Я обычно использую имя узла, устанавливаю через $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 команда. Сессия заканчивается, когда команда выходит.

можно настроить это различными способами. Например, можно сохранить имена узлов и дюйм/с в файле и читать из него (своего рода как ssh_config) (и возможно сохранить другие вещи для заголовка, как имена пользователей).

Теперь использование ssh-title some.host для соединения. Я думаю, что это - единственный способ, которым можно сделать это, ничего не редактируя сторона сервера.

11
ответ дан 23 November 2019 в 04:49

Несколько способов определить сервер:

  • цифровой отпечаток SSH - защищает, но изменения каждый раз, когда Вы повторно развертываетесь.
  • Приглашение оболочки (PS1) и терминальный заголовок - небезопасный (кто-либо может копировать его), но простой и практичный.
  • ip address - защищают с цифровым отпечатком SSH, и более легко читаемый.
  • hostname - небезопасный, но очень читаемый.
5
ответ дан 23 November 2019 в 04:49

Другая опция состоит в том, чтобы использовать работы liquidprompt---и для bash и для zsh и может быть легко настроена, чтобы установить терминальный заголовок и даже раскрасить различные цвета имя узла в подсказке:

enter image description here

2
ответ дан 23 November 2019 в 04:49

Этим решением является немного hackish, но я думаю, что это сделает то, что Вы ищете. Вам будет нужно 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.

Созданное использование следующего:

2
ответ дан 23 November 2019 в 04:49

Другие вопросы по тегам:

Похожие вопросы: