scdlt.com
域名年龄: 20年2个月16天HTTP/1.1 200 OK 访问时间:2015年11月16日 14:10:27 服务器:Apache/2.4.7 (Ubuntu) 语言环境:PHP/5.5.9-1ubuntu4.14 X-Pingback: http://www.scdlt.com/xmlrpc.php 动作:Accept-Encoding Content-Encoding: gzip 文件大小:44682 Keep-Alive: timeout=5, max=100 连接:Keep-Alive 类型:text/html; charset=UTF-8 网站编码:UTF-8
四川联通China unicom菜单跳至内容首页关于WEB化批量执行命令&文件上传作者:wangxun本文中将更进一步使用Tornado提供一个WEB界面,通过WEB界面操作即可实现批量命令执行、文件上传。首先我们需要一个资料库来存放主机信息。本文中我们使用SQLite,我们建立一张表:myhost 表中创建四个栏位:ID、HOST、USER、PWD分别记录序号,主机名、主机登入用户名、登入密码。 SQL如下:CREATE TABLE "myhost" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"HOST" TEXT(36),"USER" TEXT(36),"PWD" TEXT(36))Python:# -*- coding=utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')import tornado.webimport tornado.httpserverimport tornado.ioloopimport tornado.httpclientimport os.path,os,datetimeimport threadingimport sqlite3import paramikoimport urllibHTML = u""def dbconn(sql):conn = sqlite3.connect("DB.db")conn.text_factory = strcur = conn.cursor()cur.execute(sql)conn.commit()result = cur.fetchall()cur.close()conn.close()return resultclass ssh():def __init__(self,host,user,pwd,remotepath=None,localpath=None,cmd=None,TYPE=None,port=22):self.host = host #Hostnameself.user = user #用户名self.pwd = pwd #密码self.remotepath = remotepath #远程路径,上传&下载文件时需要提供此参数self.localpath = localpath #本地路径,上传&下载文件时需要提供此参数self.port = port #ssh端口self.cmd = cmd #需要在远程主机执行的命令,执行命令时需要提供此参数self.type = TYPE #sftp操作类型,允许的值有两个:upload和downloaddef ssh(self): #命令执行ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(self.host,self.port,self.user,self.pwd,timeout=5)stdin, stdout, stderr = ssh.exec_command(self.cmd)return stdout.read()ssh.close()def sftp(self): #文件上传下载t = paramiko.Transport((self.host,self.port))t.connect(username = self.user, password = self.pwd)sftp = paramiko.SFTPClient.from_transport(t)if self.type=='upload':sftp.put(self.localpath,self.remotepath)elif self.type=='download':sftp.get(self.remotepath, self.localpath)else:raise NameError('TYPE object is invalid!')t.close()settings = {"static_path" : os.path.join(os.path.dirname(__file__), "static"),"template_path" : os.path.join(os.path.dirname(__file__), "templates"),"login_url": "/login",}class main(tornado.web.RequestHandler):def get(self):SerList = dbconn("select ID,HOST from myhost")if SerList:SerList = [(i[0],i[1]) for i in SerList]else:SerList = []self.render("test.html",SerList = SerList)def post(self):global HTMLcmd = self.get_argument('cmd',')argv = self.get_argument('argv',')TYPE = self.get_argument('TYPE',')filename = self.get_argument('localpath',')localpath = os.path.join(os.path.join(os.path.dirname(__file__),'files'),filename)remotepath = '%s/%s' % (self.get_argument('url','),filename)print remotepath,localpathHOST_LIST = dbconn("select HOST,USER,PWD from myhost WHERE int in (%s)" % argv[0:-1])for i in HOST_LIST:t = execute(host = i[0],user = i[1],pwd
© 2010 - 2020 网站综合信息查询 同IP网站查询 相关类似网站查询 网站备案查询网站地图 最新查询 最近更新 优秀网站 热门网站 全部网站 同IP查询 备案查询
2026-01-25 17:08, Process in 0.0085 second.