确定我正在使用的服务器


9

从终端使用ssh时如何识别您在哪个服务器上?

我必须每天将ssh放入30台服务器,并不断在它们之间切换。
目前,我正在编辑选项卡名称,并编写IP iddress从一个跳转到另一个。

是否有自动的方法(将服务器IP地址分配为选项卡名称)?还有其他选择,而不必在每个服务器上编辑文件吗?


1
您需要了解什么来识别您的服务器?我只需键入“主机名”即可查看服务器名称。这足以让我知道,因为我们过去使用了很好的命名约定
Private

目前,我user@hostname在连接的第一台主机上。我想查看IP地址。另外,如果我从跳转server1server2的标签不改变名称。
RASG 2014年

是的,那是你的名字,但我的意思是服务器名。该机器必须有一个主机名。足够的信息给您吗?
私人

1
如何设置终端的背景色?取决于您的连接方式和所使用的终端,您可以使其自动化。例如,我可能会为生产服务器设置深红色背景,所以我知道我必须格外小心,尤其是在同时连接到外观和感觉完全相同的登台服务器时。
熊猫睡衣2014年

1
如果要在30台服务器之间不断切换,则需要查看脚本和诸如puppet之类的工具进行管理。同样,如果IP比主机名更容易识别,那么这些听起来就不像是好主机名!
JamesRyan 2014年

Answers:


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. 从hostname查找IP,同时将最后一个参数视为主机名,并将其设置为标题。我不得不做一些试验 错误之前,我有一个正确的echo字符串。您可能也必须这样做。
  3. 最后,用于screen通过ssh命令启动会话。当命令退出时,会话结束。

您可以通过多种方式自定义。例如,您可以将主机名和IP保存在文件中并从文件中读取(有点像ssh_config)(也可以保存标题的其他内容,例如用户名)。

现在使用ssh-title some.host连接。我认为这是无需编辑任何服务器端即可完成此操作的唯一方法。


5

识别服务器的几种方法:

  • SSH指纹 -安全,但是每当您重新部署时都会更改。
  • Shell提示符(PS1)和终端标题 -不安全(任何人都可以复制),但简单实用。
  • ip address -使用SSH指纹进行保护,更易于阅读。
  • hostname -不安全,但可读性强。

谢谢。以及如何自动将其添加为终端标签标题?
RASG 2014年

2

另一种选择是使用liquidprompt ---既适用于bashzsh,并且能够容易地配置为具有终端标题集,甚至在不同的颜色在提示主机名的颜色:

在此处输入图片说明


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脚本,该脚本名为您想要的任何名称,但是对于此答案,我将称为mine 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

现在,假设您正在使用bashgnome-terminal,则运行脚本应该打开一个新标签页,对其进行重命名并开始ssh会话。例如:

tab-ssh username@0.0.0.0

将打开一个新标签,将其重命名为0.0.0.0(即“ @”符号后的所有内容),然后执行username@0.0.0.0

使用以下内容创建:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.