返回顶部
首页 > 资讯 > 服务器 >python用c/s实现服务器简单管理
  • 401
分享到

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

简单服务器python 2023-01-31 02:01:16 401人浏览 安东尼
摘要

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

由于有大量的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 ' 

 

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

 

--结束END--

本文标题: python用c/s实现服务器简单管理

本文链接: https://lsjlt.com/news/186252.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python用c/s实现服务器简单管理
    由于有大量的windows虚拟机用来做一些任务。这些windows上的机器程序要经常更新。每次部署升级,需要一台台的远程桌面上去操作,进行简单升级操作。这样讲花费大量时间。并且伴随windows机器的增加,将更加难管理。 无需远程桌面,...
    99+
    2023-01-31
    简单 服务器 python
  • C#实现简单订单管理程序
    本文实例为大家分享了C#实现订单管理程序的具体代码,供大家参考,具体内容如下 订单管理的控制台程序,能够实现添加订单、删除订单、修改订单、查询订单、序列化与反序列化订单功能。 主要的...
    99+
    2024-04-02
  • C++实现简单信息管理系统
    本文实例为大家分享了C++实现简单信息管理系统的具体代码,供大家参考,具体内容如下 信息管理系统 因为学校布置了写一个信息管理系统的作业,所以写下了这个信息管理系统,这是用cpp写的...
    99+
    2024-04-02
  • C++实现简单学生管理系统
    本文实例为大家分享了C++实现简单学生管理系统的具体代码,供大家参考,具体内容如下 实现学生管理,其中关键字可以自行替换。经过Visual C++6.0验证可执行成功。 #inclu...
    99+
    2024-04-02
  • C++实现简单酒店管理系统
    本文实例为大家分享了C++实现简单酒店管理系统的具体代码,供大家参考,具体内容如下 酒店管理系统设计报告 一、 需求分析 题目要求如下: 某酒店有客房若干间,其中客房分为不同等级,如...
    99+
    2024-04-02
  • C#如何实现简单订单管理程序
    这篇文章主要介绍“C#如何实现简单订单管理程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现简单订单管理程序”文章能帮助大家解决问题。订单管理的控制台程序,能够实现添加订单、删除订单、修...
    99+
    2023-06-30
  • C++实现简单通讯录管理系统
    本文实例为大家分享了C++实现简单的通讯录管理系统的具体代码,供大家参考,具体内容如下 一、代码 #include <iostream> #include <str...
    99+
    2024-04-02
  • C++实现简单图书馆管理系统
    本文实例为大家分享了C++实现简单图书馆管理系统的具体代码,供大家参考,具体内容如下 写了一个小项目,图书馆系统,功能如下: 1,添加书籍2,删除书籍(可删除还没外借的书籍)3,读者...
    99+
    2024-04-02
  • C++实现简单版图书管理系统
    本文实例为大家分享了C++实现简单版图书管理系统的具体代码,供大家参考,具体内容如下 1、系统需求 图书管理系统是一个可以记录图书借记和存储的工具。 本教程主要利用C++来实现一个图...
    99+
    2024-04-02
  • Python简单实现Web服务器
    import socket import re import gevent from gevent import monkey monkey.patch_all()# 识别等待时间,让协程切换 def client_handler(c...
    99+
    2023-01-31
    简单 服务器 Python
  • Python 实现简单 Web 服务器
    最近有个需求,就是要创建一个简到要多简单就有多简单的web服务器,目的就是需要一个后台进程用来接收请求然后处理并返回结果,因此就想到了使用python来实现。 首先创建一个myapp.py文件,其中定义了一个方法,所有的请求都会...
    99+
    2023-01-31
    简单 服务器 Python
  • 如何用C++实现简单图书馆管理系统
    这篇文章主要介绍“如何用C++实现简单图书馆管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用C++实现简单图书馆管理系统”文章能帮助大家解决问题。功能如下:1,添加书籍2,删除书籍(可删...
    99+
    2023-06-29
  • C++实现简单班级成绩管理系统
    本文实例为大家分享了C++实现简单班级成绩管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> #include<fstream>...
    99+
    2024-04-02
  • C++实现简单学生信息管理系统
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 编译环境: Microsoft Visual Studio 2019 3个头文件: Fileope...
    99+
    2024-04-02
  • C语言实现简单酒店管理系统
    本文实例为大家分享了C语言实现酒店管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 系统应具有以下主要功能:登记入住:从键盘输入住信息:房间层数,房间号码等;查询入住情况,...
    99+
    2024-04-02
  • C++实现简单学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。实...
    99+
    2024-04-02
  • C++实现简单的通讯录管理系统
    本文实例为大家分享了C++实现简单的通讯录管理系统的具体代码,供大家参考,具体内容如下 案例描述: 通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理...
    99+
    2024-04-02
  • C++实现简单版通讯录管理系统
    这个通讯录管理系统是我听课后做的笔记,都是很基础的逻辑实现,第一次动手写了一个小案例感觉找到了一点方向,也希望能帮到一点忙! 1、系统需求 通讯录是一个可以记录亲人、好友信息的工具。...
    99+
    2024-04-02
  • C#实现简单学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C#作业 用循环结构/数组实现 进入启动页面 管理员身份登入 用户名:师晓峰密码:88481234...
    99+
    2022-11-13
    C#学生成绩管理系统 C#学生管理系统 C#成绩管理系统
  • python实现简单的名片管理系统
    本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下 名片管理系统 前提:实现名片管理系统,首先要创建两个python file ,分别是cards_main.py和cards_too...
    99+
    2022-06-02
    python 名片管理系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作