Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108243
  • 博文数量: 17
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 22:24
个人简介

打杂,吃饭,养娃

文章分类

全部博文(17)

文章存档

2011年(1)

2010年(4)

2009年(8)

2008年(4)

我的朋友

分类: LINUX

2010-10-13 15:28:52

前段时间闲来无聊,打算学习下python,看了半个月的书,貌似啥都没学会。有个朋友让说,让我帮他写个批量管理linux服务器的程序,我一想就用python来写吧,于是看了下书,然后修修改改,一个socket程序就出来了。程序功能:可以对远程服务器实现批量操作,包括重启服务,查看系统信息,下载文件,删除文件等。程序只是实现了基本功能,还不是很完善,有待提高。附上源代码,欢迎指教!
server.py
 
#!/usr/bin/env python
import socket,os
host=''
port=4567
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)
print "Server is running on port %d; press ctrl-c to terminate." % port
while 1:
    clientsock,clientaddr=s.accept()
    print "connect from %s" % str(clientaddr)
    clientfile=clientsock.makefile('rw',0)
    data=clientsock.recv(1024)
    command=os.popen(data).read()
    clientfile.write("%s" % command)
    clientfile.close()
    clientsock.close()
 
client.py
 
#!/usr/bin/env python
import socket,os,sys
#host=sys.argv[1]
port=4567
for host in os.popen('cat ip.list').readlines():
  print host
  s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  s.connect((host,port))
  while 1:
    data=sys.argv[2]
    if not data:
        break
    s.sendall(data)
    data=s.recv(1024)
    if not data:
        break
    print data
  s.close()
 
 
ip.list
 
1.1.1.1
2.2.2.2
使用方法,将server.py部署于目标主机上,执行server.py;客户端执行
python client.py ip.list "command"即可
 
 
阅读(3132) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-13 20:03:24

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com