AntShell Auto SSH


License
GPL-3.0+
Install
pip install antshell==0.5.8

Documentation

AntShell 说明

                         _______  __    _  _______  _______  __   __  _______  ___      ___
                        |   _   ||  |  | ||       ||       ||  | |  ||       ||   |    |   |
                        |  |_|  ||   |_| ||_     _||  _____||  |_|  ||    ___||   |    |   |
                        |       ||       |  |   |  | |_____ |       ||   |___ |   |    |   |
                        |       ||  _    |  |   |  |_____  ||       ||    ___||   |___ |   |___
                        |   _   || | |   |  |   |   _____| ||   _   ||   |___ |       ||       |
                        |__| |__||_|  |__|  |___|  |_______||__| |__||_______||_______||_______|


                                       ___           ___              _   _      _
                                      / __\_   _    / __\__ _ ___ ___| |_(_) ___| |
                                     /__\// | | |  / /  / _` / __/ __| __| |/ _ \ |
                                    / \/  \ |_| | / /__| (_| \__ \__ \ |_| |  __/ |
                                    \_____/\__, | \____/\__,_|___/___/\__|_|\___|_|
                                           |___/

2017年9月14日正式更名AntShell(原名Adam)

功能参数解析

功能模式

常用参数组合

# 筛选主机
a -s name | a -s ip
a -n num
a -s name -n num
a num | a name | a ip

参数优先级

未实现功能及特性

目前已知bug

  • 文件传输模块tqdm无法在python3下正常运行

未完成

  • 新增sqlite模式自动备份机制
  • 新增主机多级分组机制
  • 需要完善分组机制
  • 主机信息显示顺序修改
  • web管理功能
  • 添加ansible模块替代部分功能(待定)
  • session模式(待定)

0.6-beta

  • 数据库操作封装sqlite操作,去除文件模式
  • 重新处理初始化操作
  • 选项模块修改为argparse
  • 抛弃pexpect,使用paramiko获取终端
  • 系统配置文件(语言相关)拆分
  • 添加自动加载默认配置文件位置
  • 配置文件修改为ini格式,重构配置文件加载方式
  • 新增堡垒机模式
    • 支持将堡垒机作为登录跳转
    • 支持堡垒机根据totp自动计算动态token验证码(齐治堡垒机,其他堡垒机未测试)(brew install oath-toolkit)
    • 新增命令行参数指定新增主机记录时是否开启堡垒机模式
  • 将默认sudo用户root修改为可通过命令行参数配置
    • 新增命令行参数指定新增主机记录时默认sudo用户
    • 登录主机时使用命令韩sudo命令行参数覆盖数据库保存的默认sudo用户
  • 新增error处理
  • 新增debug参数,打印debug信息
  • 主机信息打印微调
  • 主机编辑模式
    • 新增主机记录调整
    • 删除记录调整
    • 新增编辑模式
  • 去除批量执行命令、上传、下载模式

0.5-beta

由于0.4版本变更太多,并且本次版本较之前也会有很大变化,因此重新切出0.5版本

  • 修改默认语言设置为中文
  • 修改输出信息颜色列表颜色重复的问题
  • 修改部分方法为静态方法;部分方法、属性为私有
  • 重构加载配置文件代码,以及添加加载配置文件失败的判断
    • 先检测配置文件位置
    • 然后再加载配置文件
  • 封装数据库操作
  • 更新install.py
    • 新增初始化配置文件功能
    • 完善数据文件与数据库互转
  • 重构代码
    • 搜索主机列表重构
    • 新增交互模式下的多重搜索(暂时未或条件,后续改成与条件)
    • 新的主机交互列表
    • 新增单页模式,上下翻页,清楚搜索历史
    • 新增title模式的颜色输出
    • 去掉线程模式,改为协程模式
    • 重构tqdm进度条类
    • 拆分主机信息打印方法到base中(合并成一个方法)
    • 拆分ssh类,拆分paramiko方法到paramiko单独类
  • 修复bug
    • 主机列表输出
    • 获取sshkey位置认证
    • 修复拆分后没导入signal模块导致的不能自动变更终端大小的bug-0.5.7
    • 修复python3 input兼容问题,修复python bytes 与 str兼容问题 0.5.8
    • 添加主机数据时第一次不能添加都是bug
    • 修复python3需要导入reduce的问题
  • 第一次执行自动生成配置文件

0.4-beta

  • 修复stty无法随终端大小变化的bug
  • 重构全部代码结构,合并部分功能类
  • 重构部分代码逻辑
  • 使用paramiko获取ssh终端
  • 彻底去除pexpect模块
  • 主机信息存储改为sqlite3
  • 去除file数据模式
  • 新增name自定义参数
  • 调整命令行参数
  • 添加install.py
    • 生成sqlite3数据库文件,初始化表结构
    • file数据迁移至sqlite3
  • 增加配置文件默认读取位置
    • env ANTSHELL_CONFIG
    • ~/.antshell/antshell.yml
    • /etc/antshell/antshell.yml
    • $CWD/antshell.yml
  • 修改新增主机,删除主机逻辑代码
  • 修改为pypi安装包
  • 修改目录结构
  • 新增bin下系统命令
  • 配置文件拆分成系统配置和用户自定义配置
  • 拆分部分脚本功能,优化部分结构
  • 新增agent模式(-A|--agent)参数,默认开启agent模式,参数禁用sudo模式
    • agent模式似乎需要本机ssh -A开启过一次agent才能生效,待测试
  • 新增登录时打印banner
  • 修改banner颜色,增加自定义banner颜色(预设)功能
  • 修复文件传输以及命令执行模式下fast参数无效的bug

0.3-beta

  • 删除old模式
  • 删除fast-file模式登录
  • 新增帮助信息程序描述
  • 添加参数项组以及子参数配置
  • 优化部分代码流程
  • 新增添加主机记录时可指定用户名、端口、密码
  • bug修复,兼容性修复(-a添加主机的匹配结果问题,-c的python3兼容问题)
  • bug修复,修复传输文件时-s后-n选项失效问题
  • bug修复,修复传输文件时-a首次添加ip依然出现交互列表的bug
  • 优化-s搜索模式,输入全ip自动精确匹配
  • 修复文件传输时,-n指定机器编号无法执行问题

0.2-beta

  • optparse修改为argparse
  • 新增argparse参数v
  • fast主机操作中sys.argv修改为argparse.v参数

0.1-beta

已实现功能及特性

  • 兼容python2、pyhton3
  • 配置文件使用yml格式
  • 支持配置项自定义
  • 支持帮助菜单中英文配置
  • 数据文件使用file格式
  • 支持新增记录,删除记录
  • 支持主机打印列表自适应或指定列数
  • 支持指定主机编号登录
  • 支持快速主机编号登录(fast,sys.argv)
  • 支持搜索主机信息登录
  • 支持选定主机批量远程执行命令
  • 支持指定命令分隔符
  • 支持选定主机批量上传下载文件,有进度条
  • 支持秘钥登录,密码登录
  • 支持自定默认用户名,端口号
  • 支持远程登录自动sudo
  • 支持远程登录后执行指定命令
  • 保留old模式登录, -o 开启
  • 保留fast-file模式登录
  • 菜单模块使用optparse

HELP

usage: AntShell [ -h | --version ] [-l [-m 2] ]
            [ v | -n 1 | -s 'ip|name' ] [ -G g1>g2 ]
            [ -e | -a ip [--name tag | --user root | --passwd xx | --port 22 ] | -d ip ]
            [ -P -c 'cmd1,cmd2,...' ]
            [ -f file_name [-g file_path | -p dir_path [-F ','] ] ]

AntShell 远程登录管理工具

positional arguments:
  v                     fast模式位置变量

sys arguments:
  -h, --help            打印帮助信息并退出
  --version             打印版本信息并退出

edit arguments:
  -a ip, --add ip       添加主机信息并登陆
  -e, --edit            编辑主机信息
  -d ip, --delete ip    删除主机信息并退出
  --name tag            标记名
  --user root           用户名
  --passwd xxx          密码
  --port 22             端口

host arguments:
  -l                    输出主机列表并退出
  -m 2, --mode 2        列表显示列数1-5
  -n 0                  选择连接的主机编号
  -s 'ip|name', --search 'ip|name'
                        模糊匹配主机信息
  -G g1>g2              过滤群组主机

manager arguments:
  -P                    paramiko模式
  -c 'cmd1,cmd2,...'    主机远程执行命令
  -f file_name, --file file_name
                        文件名
  -g file_path, --get file_path
                        获取文件路径
  -p dir_path, --put dir_path
                        指定文件路径
  -F ',', --fs ','      指定分隔符,默认<,>