前一章节中,讲解了项目的建立。从后面的章节就主要讲系统的开发。
本章节讲解docker版本信息开发
1.前端界面(jquery+bootstrap)
页面代码:
<div style="width: 65%;margin: 0 auto; ">
<form id="dockerczf">
请选择系统版本:
<input type="radio" name="xtbb" value="1" checked/>ubuntu
<input type="radio" name="xtbb" value="2" />centos6及以下
<input type="radio" name="xtbb" value="3" />centos7及以上
</form>
</div>
<!--版本信息-->
<div style="width: 60%;margin: 0 auto; ">
<div class="btn-group">
<div class="btn-group" id="bbxx">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
版本信息
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><button type="button" id="jdbbxx" class="btn btn-default" onclick="showVersion(1)">简单版本信息</button></li>
<li class="divider"></li>
<li><button type="button" id="xxbbxx" class="btn btn-default" onclick="showVersion(2)">详细版本信息</button></li>
</ul>
</div>
</div>
js代码:
/*
版本信息
*/
function showVersion(flag) {
var f_data={
"flag":flag
};
$.ajax({
url:"showversion",
type:"GET",
data:f_data,
success: function (data) {
data=JSON.parse(data);
var str=data["rst"].toString();
var strs=str.split(",");
var html="";
for(var i=0;i<strs.length;i++) {
html = html + strs[i] + "<br/>";
}
$("#show").html(html);
},
error:function (data) {
alert("error");
},
});
}
2.dockercontroller.py文件,接收前端传过来的值
def showMain(request):
return render_to_response('main.html')
'''
版本信息
flag=1,简单版本信息
flag=2,详细的版本信息
'''
def showVersion(request):
print 'start showVersion'
if request.method=="GET":
flag=request.GET.get("flag")
print flag
s=Service()
stdmsg=s.showVersion(flag)
return HttpResponse(json.dumps({"rst":stdmsg}))
else:
return HttpResponse(json.dumps({"rst":"系统升级中"}))
3.在urls.py文件中添加路由
url(r'^main$', dockercontroller.showMain),
url(r'^showversion$', dockercontroller.showVersion),
4.编写service.py文件,主要做业务逻辑处理
class Service:
def __init__(self):
pass
'''
版本信息
'''
def showVersion(self,flag):
e=Exec()
if flag=="1":
cmd="docker -v"
stdmsg=e.execCommand(cmd)
elif flag=="2":
cmd="docker version"
stdmsg=e.execCommand(cmd)
#print stdmsg
return stdmsg
5.创建dockerweb.config文件,并添加如下内容
#host set
host=119.29.167.178
port=22
user=root
password=ldy123456
timeout=10
6.编写execcmd.py文件,这个文件会一直使用并在后面的编码中不会对他再进行内容上的修改
import paramiko
from readconfig import ReadConfig
#get ssh connection
class Exec:
def __init__(self):
pass
def getSSHConnection(self):
ssh = paramiko.SSHClient()
key = paramiko.AutoAddPolicy()
ssh.set_missing_host_key_policy(key)
rc=ReadConfig()
host,port,user,password,timeout=rc.readDockerweb()
ssh.connect(host,int(port),user, password ,timeout=int(timeout))
return ssh
def execCommand(self,cmd):
e=Exec()
ssh=e.getSSHConnection();
stdin,stdout,stderr=ssh.exec_command(cmd)
#stdoutmsg=""
#stderrmsg=""
stdoutmsgl=[]
stderrmsgl=[]
sout=stdout.readlines();
if sout:
for st in sout:
#stdoutmsg=stdoutmsg+st
t=st.strip("\n")
#print t
stdoutmsgl.append(t)
serr=stderr.readlines();
if serr:
for sr in serr:
#stderrmsg=stdoutmsg+sr
r=sr.strip("\n")
#print r
stderrmsgl.append(r)
ssh.close();
if stdoutmsgl:
#print "stdout="+stdoutmsg
return stdoutmsgl
elif stderrmsgl:
#print "stderr="+stderrmsg
return stderrmsgl
else:
return stdoutmsgl