hackroad / LinuxHostManager

Linux主机管理

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#README.txt

*******20181217 优化相关记录*********
** 文件的上传、下载支持正则表达式解析
    a、在paramiko_sh中新增上传/下载中识别Linux/UNIX通配符支持;
    b、在paramiko_sh/multistp中将原单文件/目录的遍历修改为解析通配符后再进行列表遍历
    c、对原multistp(目录传输)新增文件传输功能兼容单文件传输
** 对文件/文件夹的上传下载新增校验功能
    a、新增本地/远程主机的md5值生成,并比较的功能;
    b、在paramiko_sh中上传与下载处理位置,新增md5值得判别,并进行出错处理(暂时直接终止)
** 新增文件续传功能
    a、增加如果发现本地、远端文件的文件存在,进行md5的判别,如果判断成功,则不需要进行再次上传、下载。
    b、暂时不针对大文件进行续传,后续再说;
    c、对于不需要重新上传的文件,对进度等信息显示,进行特殊处理。
** 多进程传输、下载文件的方式改变
    原方式为多进程,一边遍历任务中的文件夹,一边下载。现在由于需要提前知道任务总数后再进行下载,因此,做如下改动:
    a、对多进程任务处理,分为两个事件:任务搜寻(包含文件目录的建立)、文件下载/上传;
    b、在控制流程中新增两个事件的控制,这两个事件是相互独立的;一则可以明确此次任务,二则可以为以后用户的下载行为控制作铺垫;
    c、此次修改,搜寻任务与处理任务任是多进程;只是将事件进行了分离,可以这样认为。
** 新增文件传输进度、速率、信息显示
    a、对单进程的上传、下载增加了这些项目的显示,效果如下:
       源文件名                100%    35kb/36kb    35KB/s  00:00:00(预计剩余时间)   00:00:00(花费总时间)
        xav                   100%       28.81 KB/28.81 KB        28.81 KB/s   0:00:00   0:00:00
    b、对于多进程并发,每隔2秒钟显示其总文件、总目录、当前文件进度,目前显示的效果如下(只针对于多任务处理),同时也会显示处理完毕的文件:
       任务匹配名              100%   35kb/36kb    35KB/s  00:00:00(预计剩余时间)   00:00:00(花费总时间)  24   1500[当前正在处理的任务]/3000(文件传输)
        xav                   100%       28.81 KB/28.81 KB        28.81 KB/s   0:00:00   0:00:00
        multi_file_process    85%      215.46 MB/250.64 MB        1.02 MB/s   0:00:34   0:02:02      60     1128[5]/1133
** 将主机信息存为json文件格式,程序读取信息改写为json配置读取
    将原字典主机信息,修改为json文件配置。配置文件需要在源码中定义(暂定固定)
** 对程序中出现异常或返回值进行优化处理
    处理时思路为:
    1、对需要用到返回值的结构采用return的方式,或者需要退出结构时; 其他如值不对,这些可以采用raise异常处理,暂时不适用断言的方式。
    如果捕获异常的地方无法做出处理,必须将异常进行上抛。
    2、日志中,错误日志的处理:一般错误日志不会导致整体退出,特殊情况除外。
** 优化pty的windows窗口大小设置

*****后续优化思路(暂定)*****
** 增加云主机功能:批量命令执行,批量数据同步;
** 增加技术文档API支持;
** 优化源码结构,充分汲取paramiko与fabfic功能与思路,并根据实际情况进行优化。

********20181011 开发相关记录*******
***环境是在Linux/Unix主机之间**** 
###需求 
1、一台主机无密码登录其他主机进行操作(如同:SCRT) 
2、不用登录其他主机就能实现主机命令执行 
3、远程下载、上传文件 
4、远程多并发上传、下载文件夹 
5、操作方式类似于Linux scp/ssh命令操作 

###主要使用工具及技术 
1、paramiko模块的shell、sftp、ssh相关功能; 
2、多进程并发; 
3、进程队列与事件的结合使用; 
4、使用到多进程子嵌套的方式完成功能; 
5、内置模块logging的使用; 

###工具使用方式及相关说明如下: 
python sh_stp_main.py -xsh account@192.168.1.1 (执行一个远程xshell终端) 
python sh_stp_main.py -sh account@192.168.1.1 'df -h' (执行远程shell命令并返回结果) 
python sh_stp_main.py -put 本地文件 account@192.168.1.1:远程文件/目录(上传文件到远程主机) 
python sh_stp_main.py -get account@192.168.1.1:远程文件 本地文件/目录(从远程主机下载文件) 
python sh_stp_main.py -putdir 本地文件/目录 account@192.168.1.1:远程文件/目录(上传文件/目录到远程主机) (进程数,默认15)
python sh_stp_main.py -getdir account@192.168.1.1:远程文件/目录 本地文件/目录(下载文件/目录到本地主机) (进程数,默认15)

在sh_stp_main.py的字典中定义主机相关信息;

About

Linux主机管理


Languages

Language:Python 100.0%