在一个列表里选定主机名后直接 SSH 登陆

标题真拗口,详细一点应该是,在一个文本文件里有一个主机名(和 IP 地址)列表,通过 vi/vim 的上下键选择某个主机名(IP 地址)后,点击回车键就可以完成相应的 SSH 登陆。

不管 chef/puppet/salt/ansible 这类自动化配置工具多么智能,我们总有需要登陆到单台服务器上找问题的时候。总不能每次去翻 doc/txt 文档找相应的 IP 地址和用户名吧,找到 IP 地址和用户名后、copy 出来、切换窗口、再 ssh?有点累~~

机械的工作总是能找到替代的工具来完成,warp 就是这样一个小工具,确切的说是一个小 bash 脚本,warp 从 .warp 文本文件里读取主机名(IP 地址)信息,然后自动连上 ssh.

$ wget https://raw.githubusercontent.com/jpalardy/warp/master/warp
$ chmod +x warp

我们可以看到这个 .warp 文件格式很自由,只要保证第一列是主机名和 IP 地址(执行 ssh 命令格式的后半部分)就可以了,还可以用 — 和 # 当作注释方便我们区分和归类不同的服务器:

$ vi ~/.warp
# VIRTUAL MACHINE HOSTS

-- production servers

host101.vpsee.com -- xen host
host102.vpsee.com
root@host103.vpsee.com -- kvm host
user@host104.vpsee.com

-- development servers

172.20.2.101
172.20.2.102
root@172.20.2.103
user@172.20.2.104

# SUN GRID ENGINE HOSTS

sge101
sge102.cluster.vpsee.com
192.168.2.15 -- local datacenter

执行 warp 后会自动打开 vi/vim,然后使用 kj 键选择某行后回车即可:

$ ./warp

如果选择多行,warp 还支持 csshx 哦~

评论 (7 Comments)

  1. 支持額外的參數嗎?比如 -i, -p

  2. 嗯,支持

  3. 在我的机器上不能运行,请问你知道是什么问题么?

    如果用 ./warp 显示
    bash: ./warp: /bin/bash^M: bad interpreter: No such file or directory

    如果用 sh warp 显示
    : command not found
    ‘arp: line 3: syntax error near unexpected token `{
    ‘arp: line 3: `warp() {

  4. 貌似你的 /bin/bash^M 里的 那个 ^M 有嫌疑,可能是 windows 上编辑的文件传到 linux 时,回车换行字符转义的问题,用 vi 打开 warp 看一下是否每行结尾有 ^M,有的话用 dos2unix 工具转化一下。

  5. 确实是编码的问题,从windows上传导致的。。。谢谢啦

  6. 怎么把密码存在指定文件里?省的每次输入密码…

  7. shuttle不是更方便

发表评论