idcos / cloud-cli

a command line tool for control linux servers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CloudCli

https://img.shields.io/badge/language-Go-orange.svg https://img.shields.io/badge/copyright-idcos-red.svg https://img.shields.io/badge/license-MIT-blue.svg

1 概述

利用SSH协议,远程执行命令的命令行工具。

远程服务器不用安装任何程序,只要开通SSH服务即可。

简单,轻量,配置灵活。

2 Feature

2.1 远程执行命令

同时发送命令到多台机器执行,获取执行结果并显示。

支持并发在多台机器上执行命令。

2.2 登录远程机器

登录远程机器,相当于一个简单的 ssh 客户端。

直接使用命令 cloudcli login 时,会在 vim 中列出所有可登录的机器信息,

利用vim的检索功能搜索到某个功能时,直接 Enter 登录。

其中参考了 https://github.com/jpalardy/warp 项目的实现方式。

2.3 远程传输文件

put 文件/文件夹 到远程机器。 从某台远程机器上 get 文件/文件夹。

传输过程中显示传输进度

2.4 命令简写

通过配置文件中 [CmdAlias] section 的配置,定义一些常用的命令,在 exec 子命令的 -c 参数来使用。

示例:以下命令表示执行 [CmdAlias] section 中的第一条命令 ([CmdAlias] section 的配置方法参见 配置文件说明

cloudcli exec -g dgroup01 -n dgnode01 -c 1
或者
cloudcli exec -g dgroup01 -n dgnode01 -c '#1'

2.5 主机分组

可以给主机分组,按照组名执行命令。

一个组可以包含一个或多个主机,一个主机也可以属于一个多个组。

2.6 YAML 描述主机组和主机关系

配置密码和ssh-key的路径配置一个即可。

NodeGroups:
    - GroupName: group001
      Port: 22
      User: testuser
      Password: testtest
      KeyPath: /home/user/.ssh/private-key
      Nodes:
          - Name: golang
            Host: 192.168.1.1
          - Name: python
            Host: 192.168.1.2

    - GroupName: group002
      Port: 22
      Nodes:
          - Name: elixir-lang
            Host: 10.0.0.1
            User: testuser
            Password: testtest
          - Name: elm-lang
            Host: elm-lang.cn
            User: root
            KeyPath: /home/user/.ssh/private-key

可以在主机组上设置默认的 User Password KeyPath Port ,这样,主机(Node)如果没有设置 User Password KeyPath Port ,就使用所属主机组的默认设置。

2.7 命令自动补全

ZSH 和 BASH 环境下启用自动补全方式是不一样的,启用方式如下:

  1. ZSH 环境下
    • 找到 zsh 的 $fpath
      echo $fpath
              
    • 在 上述的路径之一中,创建连接 自动补全脚本的软链接(或者直接将自动补全脚本放入上面的任一路径之中)
      ln -s /path/to/cloudcli/autocomplete/_cloudcli /path/of/fpath/_cloudcli
              
  2. BASH 环境下 把下面的代码加入到 .bashrc
    source /path/to/cloudcli/autocomplete/bash_completion
        

补充:

  1. 这2个 completion 脚本在 MacOSX 下已测试可以使用。 如果在 linux 下使用的话,请修改 bash_completion 中 /usr/local/etc/bash_completion 的实际位置。
  2. 使用前安装 bash-completion package,Mac 下安装方式如下:
    brew install bash-completion
        

2.8 主机连通性检查(ping)

检查主机是否能够 ping 通时,可以使用下面的子命令:

cloudcli ping
cloudcli ping -g <groupName>
cloudcli ping -n <nodeName>
cloudcli ping -g <groupName> -n <nodeName>

注意 在linux系统上,如果使用非 root 用户执行上面的 ping 子命令,可能会有权限不足的错误,通过以下方法修复:

sudo sysctl -w net.ipv4.ping_group_range="0 65535"

3 License

MIT License 2016 (Iota Labs)

About

a command line tool for control linux servers

License:MIT License


Languages

Language:Go 96.4%Language:Makefile 2.0%Language:Shell 1.6%