当前位置: 首页 > news >正文

动态网站开发技术教材网络营销推广外包平台

动态网站开发技术教材,网络营销推广外包平台,文档里网站超链接怎么做,一般做网站哪家好实现的细节和引用的文件和以前博客记录的基本一致 https://shaka.blog.csdn.net/article/details/106927633 差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份 1.需要在跳板机相应的路径放置PYTHON的脚本resc.py resc.py这个脚本中有引用的文件(pm.sh,diskpn…

实现的细节和引用的文件和以前博客记录的基本一致

https://shaka.blog.csdn.net/article/details/106927633

差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份

1.需要在跳板机相应的路径放置PYTHON的脚本resc.py

resc.py这个脚本中有引用的文件(pm.sh,diskpnum.sh)和以前的记录一样,不再重复列出

这个脚本接受一个参数,IP地址,django一端的服务器将通过SSH连接,并将参数传递给脚本执行

脚本将返回包含CPU,内存,磁盘信息的字典,因为不同主机的磁盘分区名称和数量的不一致性,带有磁盘信息的这个KEY的值,将是一个LIST

# -*- coding: utf-8 -*-
import os,sys
import paramiko
import time
import sys
reload(sys)
import os
import json
import multiprocessing
import signal
sys.setdefaultencoding('utf-8')class TimeoutException(Exception):passdef timeout_handler(signum, frame):raise TimeoutException("error")def sshreinfos(ips):try:redict = {}paramiko.util.log_to_file("/yourreexecpath/paramiko.log")ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())pkey = paramiko.RSAKey.from_private_key_file("/home/user/.ssh/id_rsa")ssh.connect(hostname=ips, port=22, username='sshuser', pkey=pkey, timeout=5)t = ssh.get_transport()sftp=paramiko.SFTPClient.from_transport(t)sftp.put("/yourreexecpath/pm.sh","/tmp/pm.sh")sftp.put("/yourreexecpath/diskpnum.sh", "/tmp/diskpnum.sh")stdindcpu, stdoutcpu, stderrcpu = ssh.exec_command("top -bn1 | awk '/Cpu/{print $2,$3,$4}' | sed 's/[a-z]//g' | sed 's/ //g' | awk -F',' '{print $1+$2+$3}'")stdinmomeryall, stdoutmomeryall, stderrmomeryall = ssh.exec_command("free -m | awk '{print $2}' | awk 'NR==2{print}'")stdinmomery, stdoutmomery, stderrmomery = ssh.exec_command("sh /tmp/pm.sh")musep = (stdoutmomery.read()).replace("\n", "")cpuusep = (stdoutcpu.read()).replace("\n", "")memoryall = (stdoutmomeryall.read()).replace("\n", "")remark = "正常"try:b = round(float(musep))if int(b) > 80:remark = "评估是否扩内存"except Exception:remark = "NONE"redict["ips"] = ipsredict["stdoutcpu"] = cpuusepredict["stdoutmomeryall"] = memoryallredict["musep"] = musepredict["remark"] = remarkymdhms = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))stdindps, stdoutdps, stderrdps = ssh.exec_command("sh /tmp/diskpnum.sh " + ymdhms)dpnums = (stdoutdps).read().replace("\n", "")# print "1.5$"sftp.get("/tmp/diskusetmp" + ymdhms + ".txt", "/yourreexecpath/"+ips + "diskusetmp" + ymdhms + ".txt")diskinfos = open("/yourreexecpath/"+ips + "diskusetmp" + ymdhms + ".txt", 'r')disklists = []for lines in diskinfos:diskitems = {}cons = lines.split()diskitems["pt"] = cons[0].strip()diskitems["pttotal"] = cons[1].strip()diskitems["ptuse"] = cons[2].strip()disklists.append(diskitems)diskinfos.close()os.remove("/yourreexecpath/"+ips + "diskusetmp" + ymdhms + ".txt")redict["disklists"] = disklistsssh.close()return redictexcept:#print "error"return "error"if __name__ == "__main__":if len(sys.argv) != 2:print "argv must be one"exit()ips = sys.argv[1]signal.signal(signal.SIGALRM, timeout_handler)signal.alarm(10) # set timeout to 10 secondstry:print sshreinfos(ips)except TimeoutException:print("error")

2.django一端的实现如下:

views.py对应的方法

用户点击不同的按钮选择是打印到WEB页面,还是打印到WEB页面+下载巡检报告的EXCEL表格

request.POST.has_key('chkaproc')或request.POST.has_key('chkonlylists')
def chkosinfos(request):if request.method=="POST":sqlstr = request.POST.get("sqlstr")filenames=""if request.POST.has_key('chkaproc'):try:import f5.sysinfos#filenames,relists=f5.sysinfos.receivewebsqlstr(sqlstr)relists=f5.sysinfos.remoterelists(sqlstr)filenames=f5.sysinfos.remotereexcel(relists)except Exception:return render(request,"exportsysinfos.html",{"login_err":"SYSINFOSFAILSTEP1"})return render(request,"exportsysinfos.html",{"login_err":"downloadlink:http://web服务器IP地址(存放文件用,程序将文件生成到指定的web虚拟目录):9999/"+filenames,"templist":relists})if request.POST.has_key('chkonlylists'):try:import f5.sysinfosrelists=f5.sysinfos.remoterelists(sqlstr)except Exception:return render(request,"exportsysinfos.html",{"login_err":"SYSINFOSFAILSTEP1"})return render(request,"exportsysinfos.html",{"login_err":"OKAY"+filenames,"templist":relists})else:return render(request,"exportsysinfos.html",{"login_err":"no set"})

views.py引用的两个方法

remoterelists返回多个服务器巡检信息的list
remotereexcel将信息写入excel        

# -*- coding: utf-8 -*-
import os,sys
#sys.setdefaultencoding('utf8')
import paramiko
import xlsxwriter
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from multiprocessing import Process,Manager
import multiprocessing
import os
import jsondef sshconn():try:ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#ssh.connect(hostname=self.f5ips, port=22, username=self.usernames, password=self.passwords)pkey = paramiko.RSAKey.from_private_key_file("D:\\idrsapath\\id_rsa")ssh.connect(hostname="serveripaddress", port=22, username='sshuser', pkey=pkey, timeout=5)#连接跳板机return sshexcept Exception:return "error"def remoterelists(sqlstrs):relists=[]iplists = []for line in sqlstrs.splitlines():con = line.split()names = con[0].strip()iplists.append(names)try:ssh=sshconn()for ips in iplists:print ipsstart_time = time.time()try:stdindcmd, stdoutcmd, stderrcmd=ssh.exec_command("/usr/bin/python /yourreexecpath/resc.py " + ips)ipsdict=stdoutcmd.read().replace("\n", "")#.decode('utf-8')end_time = time.time()if end_time - start_time > 10:continueif ipsdict != "error":relists.append(eval(ipsdict))except:print "error remotecmds"passssh.close()return relistsexcept:print "connect sshserver error"return "error"def remotereexcel(excellists):nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+""filenames=nowtime+'systeminfo.xlsx'workbook1 = xlsxwriter.Workbook(".\\uploads\\"+filenames)worksheet = workbook1.add_worksheet()t1='服务器运行情况'format=workbook1.add_format()#worksheet.set_column(0,15,20)format.set_bold()yellow=workbook1.add_format({'align':'center','valign':'vcenter','font_size':22,'fg_color':'FFC1C1'})yellow.set_bold()# worksheet.merge_range(0,0,0,4,t1,yellow)worksheet.merge_range('A1:I1',t1,yellow)worksheet.set_row(0, 38)worksheet.set_column("A:A",20)worksheet.set_column("B:B",11)worksheet.set_column("C:C",12)worksheet.set_column("D:D",12)worksheet.set_column("E:E",20)title=[u'IP地址',u'CPU使用率%',u'内存总量',u'内存使用率%',u'巡检结果']format=workbook1.add_format()format=workbook1.add_format({'align':'center','valign':'vcenter'})format.set_bold()worksheet.write_row('A2',title,format)worksheet.set_row(1, 25)row=2try:for lines in excellists:try:worksheet.write(row,0,lines["ips"])worksheet.write(row,1,lines["stdoutcpu"])worksheet.write(row,2,lines["stdoutmomeryall"])worksheet.write(row,3,lines["musep"])remark="正常"try:b=round(lines["musep"])if int(b)>80:remark="评估是否扩内存"except Exception:remark="NONE"worksheet.write(row,4,remark)ymdhms=time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))n=5for diskpts in lines["disklists"]:worksheet.set_column(n,n,20)worksheet.write(row,n,"分区 "+diskpts["pt"].strip())worksheet.set_column(n+1,n+1,20)worksheet.write(row,n+1,"分区大小 "+diskpts["pttotal"].strip())worksheet.set_column(n+2,n+2,20)try:dps=round(float(diskpts["ptuse"].strip()))if int(dps)>80:formatmred = workbook1.add_format({'bold': True, 'font_color': 'red'})worksheet.write(row,n+2,"分区使用率 "+diskpts["ptuse"].strip(),formatmred)else:worksheet.write(row,n+2,"分区使用率 "+diskpts["ptuse"].strip())except Exception:worksheet.write(row,n+2,"分区使用率未获取数据")n=n+3except Exception:print lines["ips"] +" error"worksheet.write(row,0,lines["ips"])worksheet.write(row,1,"none")worksheet.write(row,2,"none")worksheet.write(row,3,"none")row=row+1except Exception:print "cannot get datas"return "error"return filenames

3.HTML页面将用户需要巡检的IP列表粘贴到输入框,一行一个IP

html的写法,不怎么会写,只是先写个实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>EXPORTHISTORYVALUES</title>
</head>
<body><div id="container" class="cls-container"><div id="bg-overlay" ></div><div class="cls-header cls-header-lg"><div class="cls-brand"><h3>主机巡检并导出信息</h3>每行一个IP</div></div><div class="cls-content"><div class="cls-content-sm panel"><div class="panel-body"><form id="loginForm" action="{% url 'chkosinfos' %}" method="POST"> {% csrf_token %}<div class="form-group"><div class="input-group"><div class="input-group-addon"><i class="fa fa-user"></i></div><textarea type="text" class="form-control" name="sqlstr" placeholder="主机巡检并导出信息,每行一个IP" style="width:600px;height:111px"></textarea></br></div></div></br></br>
<button class="btn btn-success btn-block" type="submit" name="chkaproc"><b>CHK+EXCEL下载链接</b></button></br></br><button class="btn btn-success btn-block" type="submit" name="chkonlylists"><b>CHK不需要EXCEL,仅网页展示</b></button><h4 style="color: #ff0000"><b>{{ login_err }}</b></h4>{% for row in templist %}
<td>IP:{{ row.ips }}</td></br>
<td><div style="color:{% if row.stdoutcpu|floatformat:"0"|add:"0" >= 50 %}red{% else %}black{% endif %}">CPU使用率:{{ row.stdoutcpu }}</div></td></br>
<td>内存总量M:{{ row.stdoutmomeryall }}</td></br>
<td><div style="color:{% if row.musep|floatformat:"0"|add:"0" >= 90 %}red{% else %}black{% endif %}"> 内存使用率:{{ row.musep }} </div> </td></br>
{% if 'disklists' in row %}
{% for diskrows in row.disklists %}
<td><div style="color:{% if diskrows.ptuse|floatformat:"0"|add:"0" >= 90 %}red{% else %}black{% endif %}"> 分区名称:{{ diskrows.pt }}  分区容量:{{ diskrows.pttotal }}  分区
{#                        <h4 style="color: red"><b>{{ login_err }}</b></h4>#}</form></div></div></div></div>
</body>
</html>


文章转载自:
http://deathly.c7630.cn
http://befringe.c7630.cn
http://amalgamable.c7630.cn
http://sublanguage.c7630.cn
http://typecast.c7630.cn
http://ocelli.c7630.cn
http://griminess.c7630.cn
http://electroplating.c7630.cn
http://carload.c7630.cn
http://proclamatory.c7630.cn
http://visla.c7630.cn
http://nymphenburg.c7630.cn
http://pyrogenation.c7630.cn
http://nis.c7630.cn
http://famulus.c7630.cn
http://cohesion.c7630.cn
http://fatty.c7630.cn
http://unearthly.c7630.cn
http://peaceable.c7630.cn
http://submedian.c7630.cn
http://braggart.c7630.cn
http://beamy.c7630.cn
http://newsprint.c7630.cn
http://plain.c7630.cn
http://hamfatter.c7630.cn
http://gavotte.c7630.cn
http://palazzo.c7630.cn
http://lamda.c7630.cn
http://decreasingly.c7630.cn
http://striated.c7630.cn
http://quietist.c7630.cn
http://letterform.c7630.cn
http://maize.c7630.cn
http://cultrate.c7630.cn
http://ovenware.c7630.cn
http://landsknecht.c7630.cn
http://dowser.c7630.cn
http://biochrome.c7630.cn
http://sentimentally.c7630.cn
http://stoneman.c7630.cn
http://smegma.c7630.cn
http://conscribe.c7630.cn
http://opening.c7630.cn
http://limpidity.c7630.cn
http://duchy.c7630.cn
http://duumvir.c7630.cn
http://acetaminophen.c7630.cn
http://rightly.c7630.cn
http://moorbird.c7630.cn
http://husbandry.c7630.cn
http://narcocatharsis.c7630.cn
http://memorization.c7630.cn
http://cyclopedia.c7630.cn
http://zoogeology.c7630.cn
http://calced.c7630.cn
http://mercurize.c7630.cn
http://shelve.c7630.cn
http://rabbitbrush.c7630.cn
http://bezier.c7630.cn
http://fibbery.c7630.cn
http://upwards.c7630.cn
http://fullface.c7630.cn
http://literature.c7630.cn
http://edgewise.c7630.cn
http://ivan.c7630.cn
http://extremity.c7630.cn
http://desynchronize.c7630.cn
http://flaunch.c7630.cn
http://tamperproof.c7630.cn
http://hanoi.c7630.cn
http://tripodal.c7630.cn
http://weary.c7630.cn
http://antheridium.c7630.cn
http://cowfish.c7630.cn
http://neurosurgery.c7630.cn
http://remittent.c7630.cn
http://slapdashery.c7630.cn
http://condylar.c7630.cn
http://ps.c7630.cn
http://bellows.c7630.cn
http://shorts.c7630.cn
http://unprompted.c7630.cn
http://eslisor.c7630.cn
http://flabby.c7630.cn
http://nihilistic.c7630.cn
http://hydrous.c7630.cn
http://lighting.c7630.cn
http://psychodynamics.c7630.cn
http://carotid.c7630.cn
http://zenith.c7630.cn
http://ergosphere.c7630.cn
http://gallicanism.c7630.cn
http://loot.c7630.cn
http://stagnant.c7630.cn
http://magnetooptical.c7630.cn
http://arthromeric.c7630.cn
http://lacedaemonian.c7630.cn
http://refight.c7630.cn
http://cilium.c7630.cn
http://gao.c7630.cn
http://www.zhongyajixie.com/news/70496.html

相关文章:

  • 建设平面设计工作室网站方案广州网站运营专注乐云seo
  • 网站建设入门百度搜一下
  • 购买域名后 可以做网站么网站开发是做什么的
  • 求一个做健身餐的网站抖音推广
  • 帮人做钓鱼网站以及维护怎么搭建网站
  • 如何进行网站营销品牌推广外包公司
  • 廊坊网站制作潍坊公司电话如何制作一个宣传网页
  • 开发设计移动网站建设免费关键词搜索工具
  • 南通技嘉做网站免费发布外链
  • 乐平网站设计网站优化的关键词
  • 网站建设团队名称怎么让付费网站免费
  • 网站建设需要学什么语言seo营销推广平台
  • 山东城市建设职业学院教务网网站线下推广的渠道和方法
  • 电商网站怎么做推广seo点击优化
  • 商标注册查询中心百度seo发包工具
  • 中国网库做网站网站seo推广优化
  • 哈尔滨网站建设制作哪家好培训网站推荐
  • 南宁网站优化推广百度最新版下载
  • 网站怎么做百度口碑湘潭网站设计外包服务
  • 长春火车站出站要求上海免费关键词排名优化
  • 网站建设作业做一个简单的网站互联网营销外包公司
  • 上海微信网站建设真正免费的网站建站
  • 醴陵手机网站建设市场seo是什么意思
  • 公司管理培训课程大全宁波seo网站
  • 海南澄迈住房和城乡建设厅网站seo英文怎么读
  • 南充市住房和城乡建设局考试网站百度网页电脑版入口
  • 做网站然后卖怎么找需要做推广的公司
  • 天津网站建设推广软文之家
  • 招聘网站如何做运营网络广告电话
  • 家教中介网站怎么做学员引流百度投放广告流程