我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python用c/s实现服务器简单管理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python用c/s实现服务器简单管理

由于有大量的windows虚拟机用来做一些任务。这些windows上的机器程序要经常更新。每次部署升级,需要一台台的远程桌面上去操作,进行简单升级操作。这样讲花费大量时间。并且伴随windows机器的增加,将更加难管理。

无需远程桌面,即可完成基本操作,如:部署升级程序,远程启动及停止代理服务,重启,关机等。

采用python socket 的C/S形式来实现,在管理端发送管理命令到被管理端执行,进行更新程序代码等操作。需在windows机器上安装python。实现代码如下:

1、以下是server端,部署到被管理的windows或者linux机器

  1. #!/usr/bin/python 
  2. #Script Name : pyserver.py 
  3.  
  4. import os 
  5. import logging 
  6. import sys 
  7. import socket 
  8.  
  9. host='0.0.0.0' 
  10. port=4567 
  11. maxclient=10 
  12. if sys.platform == 'win32': 
  13.     logfile='c:/server.log' 
  14. else: 
  15.     logfile='/tmp/server.log' 
  16.  
  17. def initlog(): 
  18.     logger=logging.getLogger() 
  19.     hdlr=logging.FileHandler(logfile) 
  20.     formatter=logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
  21.     hdlr.setFormatter(formatter) 
  22.     logger.addHandler(hdlr) 
  23.     logger.setLevel(logging.NOTSET) 
  24.     return logger 
  25.  
  26. def socketserver(): 
  27.     s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  28.     s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 
  29.     s.bind((host,port)) 
  30.     s.listen(maxclient) 
  31. #    print "Server is running on port %d; press ctrl-c to terminate." % port 
  32.     while True: 
  33.         clientsock,clientaddr=s.accept() 
  34. #        print "connect from %s" % str(clientaddr) 
  35.         message="connect from : %s" % str(clientaddr) 
  36.         lg.info(message) 
  37.         clientfile=clientsock.makefile('rw',0) 
  38.         data=clientsock.recv(1024) 
  39.         message="Execute command : %s" %data 
  40.         lg.info(message) 
  41.         command=os.popen(data).read() 
  42.         clientfile.write("%s" % command) 
  43.         clientfile.close() 
  44.         clientsock.close() 
  45.  
  46. try: 
  47.     lg=initlog() 
  48.     socketserver() 
  49. except KeyboardInterrupt: 
  50.     print "User Press Ctrl+C,Exit" 

2、以下是管理端,用于发送命令到被管理端

 

  1. #!/usr/bin/env python 
  2. #Script Name : pyclient.py 
  3.  
  4. import os 
  5. import sys 
  6. import getopt 
  7. import socket 
  8. import logging 
  9. import time 
  10.  
  11. port=4567 
  12. logfile='/tmp/client.log' 
  13. file='' 
  14. ip='' 
  15.  
  16. def initlog(): 
  17.     logger=logging.getLogger() 
  18.     hdlr=logging.FileHandler(logfile) 
  19.     formatter=logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
  20.     hdlr.setFormatter(formatter) 
  21.     logger.addHandler(hdlr) 
  22.     logger.setLevel(logging.NOTSET) 
  23.     return logger 
  24.  
  25. def usage(): 
  26.     print ''' 
  27. Usage: python client.py [options...] 
  28. Options:  
  29.     -f : read host list from file 
  30.     -I : read host from this command line 
  31.     -c : command run at remote host 
  32.     -h : this help info 
  33.     python client.py -I 10.16.134.164 -c "/sbin/ifconfig"  
  34.     ''' 
  35.  
  36. def socketclient(IP,port,cmd): 
  37.     s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  38.     s.connect((IP,port)) 
  39.     ISOTIMEFORMAT = '%Y-%m-%d %X' 
  40.     date = time.strftime(ISOTIMEFORMAT, time.localtime()) 
  41.     result ="-------------------------------------------------------------------\n" 
  42.     result = "%sDATE    : %s\nHOST    : %sCOMMAND : %s\n" %(result,date,IP,cmd) 
  43.     while 1: 
  44.         if not cmd: 
  45.             break 
  46.         s.sendall(cmd) 
  47.         cmd=s.recv(1024) 
  48.         if not cmd: 
  49.             break 
  50.         #print cmd  
  51.         result = "%sRESULT  :\n\n%s" %(result,cmd) 
  52.         print result 
  53.         writeLog(logfile,result) 
  54.     s.close() 
  55.  
  56. def writeLog(file,message): 
  57.     logger = open(file, 'a+')  
  58.     logger.writelines(message)  
  59.     logger.close() 
  60.  
  61. try: 
  62.     opts,args = getopt.getopt(sys.argv[1:],'hI:f:c:') 
  63. except getopt.GetoptError: 
  64.     usage() 
  65.     sys.exit() 
  66.  
  67. if len(opts) == 0: 
  68.     usage() 
  69.     sys.exit() 
  70.  
  71. for opt,arg in opts: 
  72.     if opt in ('-h','--help'): 
  73.         usage() 
  74.         sys.exit() 
  75.     elif opt == '-f': 
  76.         #print 'read flie %s' %arg 
  77.         file = arg 
  78.     elif opt == '-I': 
  79.         #print 'server IP is %s' %arg 
  80.         ip = arg 
  81.     elif opt == '-c': 
  82.         #print 'command is %s' %arg 
  83.         command = arg 
  84.  
  85.  
  86. if file: 
  87.     for ip in os.popen('cat %s' %file).readlines(): 
  88.         socketclient(ip,port,command) 
  89. else: 
  90.     if ip : 
  91.         socketclient(ip,port,command) 
  92.     else: 
  93.         print 'Error ' 

 

简单的实现了以上需求。大家可以一起讨论下,用更好的方法来实现以上的需求。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python用c/s实现服务器简单管理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python用c/s实现服务器简单管理

由于有大量的windows虚拟机用来做一些任务。这些windows上的机器程序要经常更新。每次部署升级,需要一台台的远程桌面上去操作,进行简单升级操作。这样讲花费大量时间。并且伴随windows机器的增加,将更加难管理。无需远程桌面,即可完
2023-01-31

C#如何实现简单订单管理程序

这篇文章主要介绍“C#如何实现简单订单管理程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现简单订单管理程序”文章能帮助大家解决问题。订单管理的控制台程序,能够实现添加订单、删除订单、修
2023-06-30

Python 实现简单 Web 服务器

最近有个需求,就是要创建一个简到要多简单就有多简单的web服务器,目的就是需要一个后台进程用来接收请求然后处理并返回结果,因此就想到了使用python来实现。首先创建一个myapp.py文件,其中定义了一个方法,所有的请求都会经过此方法,可
2023-01-31

Python简单实现Web服务器

import socketimport reimport geventfrom gevent import monkey monkey.patch_all()# 识别等待时间,让协程切换def client_handler(client_s
2023-01-31

如何用C++实现简单图书馆管理系统

这篇文章主要介绍“如何用C++实现简单图书馆管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用C++实现简单图书馆管理系统”文章能帮助大家解决问题。功能如下:1,添加书籍2,删除书籍(可删
2023-06-29

C#实现简单学生成绩管理系统

这篇文章主要为大家详细介绍了C#实现简单学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

编程热搜

目录