标题:服务器管理系统服务器端Demo 出处:运维进行时 时间:Tue, 09 Mar 2010 10:03:53 +0000 作者:刘天斯 地址:https://blog.liuts.com/post/183/ 内容: 开源客户端地址:http://code.google.com/p/tianyaservmanager/ 代码比较简单就不加以说明了,大家有任何疑问可以留言。 服务代码 import time import os import re from cPickle import dumps from rpyc import Service from rpyc.utils.server import ThreadedServer #---------------------------------------------------------------------------- # # Name: ServManagerServer.py # # Purpose: system service Module # # Author: Liutiansi # # Email: liutiansi@gamil.com # # Created: 2009/03/03 # # Copyright: (c) 2009 # #----------------------------------------------------------------------------- # class ManagerService(Service): #Login-------------------------------------------------------------- def exposed_login(self,user,passwd): if user=="admin" and passwd=="123456": self.Checkout_pass=True else: self.Checkout_pass=False #group1--------------------------------------------------------------- def exposed_Runcommands(self,Parameter1="",Parameter2="",Parameter3="",Parameter4=""): pinglist="" try: if self.Checkout_pass!=True: return dumps("Illegal User!") except: return dumps("Illegal Login!") #明码传输 pinglist = os.popen("/usr/local/bin/python /var/system/ModuleClass.py "+str(Parameter1)+" '"+Parameter2+"' "+str(Parameter3)+" "+str(Parameter4)).readlines() #加密传输,Decryption方法不提供,用户可自定义。 #pinglist = os.popen("/usr/local/bin/python /var/system/ModuleClass.py "+self.Decryption(str(Parameter1))+" '"+self.Decryption(str(Parameter2))+"' "+self.Decryption(str(Parameter3))+" "+str(Parameter4)).readlines() return dumps(eval(pinglist[0])) s=ThreadedServer(ManagerService,port=7758,auto_register=False) s.start() 模块代码 # -*- coding: utf-8 -*- import os import re import time import sys import string import xmlrpclib import func.overlord.client as fc #---------------------------------------------------------------------------- # # Name: ModuleClass.py # # Purpose: system run Module # # Author: Liutiansi # # Email: liutiansi@gamil.com # # Created: 2009/03/03 # # Copyright: (c) 2009 # #----------------------------------------------------------------------------- # class ModuleClassMain(): def dorun(self,argvstr): for parstr in argvstr: if parstr.find(r'`')!=-1: return try: client = fc.Overlord(argvstr[1]) #输出系统日志 if argvstr[0]=="3101": pinglist =client.command.run("/usr/bin/tail -"+str(argvstr[2])+" /var/log/messages") except Exception,e: pass print pinglist if __name__ == '__main__': app = ModuleClassMain() app.dorun(sys.argv[1:]) 如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu Generated by Bo-blog 2.1.1 Release