我有几个远程服务器,我通过终端连接它们。这些服务器没有域名,只有 IP 地址,当我有几台服务器时,IP 地址很难记住。
有没有办法将值永久存储在终端中,以便我可以执行以下操作?
server1 = 111.222.111.222
并输入如下命令:
ssh root@server1
代替:
ssh [email protected]
答案1
对于 SSH 连接,您可以创建用户配置文件~/.ssh/config
并将映射放在那里,例如
Host server1
Hostname 111.222.111.222
您可以轻松添加其他字段,例如Port
(用于非标准端口)和User
(如果远程系统上的用户名与本地系统上的用户名不同则很有用)。请参阅man ssh_config
以了解完整详情。
答案2
是的,只需将它们写在文件中即可/etc/hosts
. 它的语法如下:
1.2.3.4 servername additional_servername
在哪里:
1.2.3.4
是 IP 地址servername
是名字additional_servername
是可选名称
保存后,您可以通过服务器名称访问该服务器。
答案3
当然,对于您的特定问题,您需要遵循 @chaos 和 @steeldriver 的建议,但在一般情况下,为了“将值永久存储在终端中”,您需要查看 shell 变量。如何设置它们将取决于您的 shell(我想echo $SHELL
会提供相关信息)。
如果“永久”是指“只要我不退出此终端会话”,那么export server1=111.222.111.222
如果您使用的是bash
基于 - 的 shell(如果我没记错的话,setenv server1 111.222.111.222
是- 的 shell),则只需使用该命令即可。然后,您可以通过在变量前加上 :csh/tcsh
来访问变量。$
ssh root@$server1
如果您所说的“永久”是指“每次启动新终端时”,那么您将需要在其中一个 shell init 文件中设置变量。例如,在基于 - 的 shell 中$HOME/.bashrc
,bash
或者$HOME/.cshrc
— 可能使用上一段中提到的相同语法。请注意,您必须获取 init 文件(例如,source $HOME/.bashrc
或打开新 shell 以使更改生效)。
注意:根据记忆回答,可能需要进行一些小的调整。
答案4
具体答案非常好。
不过,一般来说,如果您想在 shell 中定义/设置某些东西,只需编写一个脚本来执行它,然后source
在.
您希望该设置生效时执行它。
如果这是您一直需要的东西,您可以在 .profile(对于登录 shell)或 .bashrc(对于所有 shell)中获取它(如果您使用 bash)。
通过这种方法,您可以根据需要使用多个脚本来设置不同的工作环境,只要确保在先调用另一个脚本后调用其中一个脚本时它们不会互相干扰即可。