Differences between revisions 5 and 6
Revision 5 as of 2006-10-30 07:07:04
Size: 3594
Editor: amingsc
Comment:
Revision 6 as of 2006-10-30 07:21:53
Size: 3596
Editor: amingsc
Comment:
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
== 已有项目 ==: == 已有项目: ==
Line 43: Line 43:

PyIdsh -- telnet/ssh/rsh多协议远程服务器操作管理

TableOfContents ::-- amingsc [DateTime(2006-10-30T06:30:16Z)]

[wiki:self/WoodpeckerProjs 啄木鸟项目::]

(!) [wiki:self/PyIdsh PyIdsh]

1. 缘起

在工作中经常会遇到需要登陆到多个服务器上去执行一些操作,而且许多操作都是相同或相似的,为了避免这种重复性工作的强度,而想开放一个工具来实现这个自动化的过程.

  • [wiki:PyCNmail/2005-November/018404.html PythonGO开发计划]

1.1. 已有项目:

根据我搜集的资料来看,目前主要有两种实现方式:

一是用pexpect控制telnet工具来实现; 典型的项目有pydsh (on sourceforge),还 有一些非python的项目也是这种方式实现的;

二是通过telnetlib库实现,有很多小程序都这么做的, 在*limdou*的blog上有提到 这种实现方式哈!

1.2. 已有项目存在的问题:

第一种方法: 通过判断prompt符号来判断进程是否结束,这种方式不可靠,因为如果 进程输出的消息里面包含有相同的输出则产生错误;不能终止远端进程;不方便获取 进程的退出状态;效率低下;

第二种方法: telnetlib对telnet协议的实现很原始,我大概看了一些telnet RFC, 说的是telnet server会在进程结束的时候发送<ARC GA>指令通知client程序执行 完毕,但是telnetlib还是必须采用prompt(命令提示符)判断的方式来判断进程的结 束; telnet client可以向server发送<ARC IP>指令终止进程的运行,但telnetlib 是没有实现的;等等还有好多内容;操作系统中附带的各个telnet工具的功能是强大 的,但是都没有api供用户程序对它进行控制;

1.3. 我的思路:

改写telnetlib库,根据telnet RFC完善对telnet协议的支持,实现跟telnet工具一样强大的功能,但是是以python library的方式提供给用户程序调用;这样我们就可以在这个库的基础上实现一个强大的工具来自动远程管理多个服务器;

2. 项目日志

MonthCalendarBRInclude(CPUGnav)

提要Include(^PyIdsh/200.*,'项目简报',4,sort=descending,items=13,titlesonly)

3. 目标

1.通过socket重新实现telnet协议,做一个类似于telnetlib的库idshtelnetlib,但更完善的支持telnet协议,并且方便在远程机器上实现命令的运行/中断/挂起/状态返回等操作;

2.在idshtelnetlib库的基础上实现工具PyIDSh,以通过telnet/rsh/ssh等协议自动远程登陆到用户定制 的多台服务器上执行一系列shell命令或者shell 脚本,从而实现对多个服务器的批处理方式的操作和管理;

4. 计划

1.搜集相似的项目/代码,整理思路;

2.阅读telnetRFC,设计idshtelnetlib库;

3.开发实现PyIDSh;

5. 成员

amingsc

欢迎更多的朋友参与合作!

欢迎更多的朋友提出您宝贵的意见和建议!

6. 成果

SVN:9(目前还没有内容0)

  • svn://cvs.woodpecker.org.cn/svn/woodpecker/zqlib/tangle

7. 反馈

项目讨论 Include(/DisCuss)

PyIdsh (last edited 2009-12-25 07:14:51 by localhost)