• django 远程执行命令


    1.
    [root@yyjk templates]# cat displayexecssh.html 
    
    
    <html>
    <head>
    	<title>运维平台</title>
    	<link rel="stylesheet" type="text/css" href="/static/Css/Monitor/displayexecssh.css">
    	<link rel="stylesheet" type="text/css" href="/static/Css/Public/header.css">
    	<link rel="stylesheet" type="text/css" href="/static/Css/Public/menu.css">
    </head>
    <body>
    	<include file="Public:header"/>
    	<div class="content">
    		<include file="Public:menu"/>
    		<div class="con fl">
    			<div id="condition">
    				<label class="condition">主机IP</label><input type="text" name="hostip" class="equipment_sz1">
    				<label class="condition">用户名</label><input type="text" name="hostuser" class="equipment_sz2">
    				<label class="condition">密码</label><input type="password" name="hostpass" class="equipment_sz3">
                                     <br />
                                     <br />
    				<label class="condition">命令</label><textarea  id="command" class="equipment_sz4"></textarea>
    				<!--<label class="condition">保存的文件名</label><input type="text" name="exportname" class="equipment_sz6">-->
                                     <br />
                                     <br />
    				<input type="submit" value="执行" class="equipment_search_btn es_1">
    				<!--<input type="submit" value="组查找" class="equipment_search_btn es_2">-->
    			</div>
    			<table class="gridtable">
    				<tr>
    					<th>"output"</th>
    				</tr>
    			</table>
    		</div>
    	</div>
    </body>
    <script type="text/javascript" src="/static/Js/jquery-2.2.2.min.js"></script>
    <script type="text/javascript" src="/static/Js/Monitor/displayexecssh.js"></script>
    <script type="text/javascript" src="/static/Js/Public/ajax.js"></script>
    </html>
    
    
    2. css样式
    
    .con .equipment_sz6{
             200px;
            height: 25px;
    }
    .con .equipment_sz4{
            align:"top";
             1000px;
            height: 300px;
    }
    
    
    .con .equipment_sz1{
            align:"top";
             200px;
            height: 30px;
    }
    
    .con .equipment_sz2{
            align:"top";
             150px;
            height: 30px;
    }
    
    .con .equipment_sz3{
            align:"top";
             150px;
            height: 30px;
    }
    
    
    
     def connect(
            self,
            hostname,
            port=SSH_PORT,
            username=None,
            password=None,
            pkey=None,
            key_filename=None,
            timeout=None,
            allow_agent=True,
            look_for_keys=True,
            compress=False,
            sock=None,
            gss_auth=False,
            gss_kex=False,
            gss_deleg_creds=True,
            gss_host=None,
            banner_timeout=None,
            auth_timeout=None,
            gss_trust_dns=True,
            passphrase=None,
        ):
    	
    	
    	import paramiko
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('192.168.55.243', username = 'root', password = 'P@ssw0rd', timeout = 5)
    cmd = 'nohup /csdp/charge_launcher-1.0-release/bin/run.sh > /csdp/charge_launcher-1.0-release/bin/nohup.out 2>&1 & 
    '
    
    password= 'P@ssw0rd'
    
    stdin, stdout, stderr = ssh.exec_command( cmd )
    ##stdin, stdout, stderr = ssh.exec_command('sudo -S %s
    ' % cmd )
    ##stdin.write('%s
    ' % password)
    ##stdin.flush()
    print "------------------------"
    ##print stdout.readlines() 
    ##print stderr.read() 
    
    
    print "------------------------"
    cmd = 'pwd'
    stdin, stdout, stderr = ssh.exec_command(cmd )
    print stdout.readlines() 
    
    ssh.close()
    
    
    3.js 直接把执行返回内容写入到表格
    
    $(function(){
        var _hostip= $("input[name='hostip']");
    	var _hostuser= $("input[name='hostuser']");
    	var _hostpass= $("input[name='hostpass']");
    	var _command= $("#command");
            var _ip_bt = $(".content .con #condition .es_1");
            _ip_bt.on('click',function(){
                    var data={};
                    data.hostip=_hostip.val();
                    data.hostuser=_hostuser.val();
                    data.hostpass=_hostpass.val();
                    data.command=_command.val();
                    var successfn = function(jdata){
                    var _HTML="<tr><th>数据 </th></tr>";
                    $(".gridtable").empty();
                    /*var _HTML="<tr><th>数据 </th></tr>";*/
                     $.each(jdata,function(i,val){
                     _HTML=_HTML+"<tr><td>"+jdata[i]+"</td></tr>"
                    });
    				$(".gridtable").html(_HTML); 
    				};	
                    var errorfn = function(){
                    alert("数据获取出错");
                    };
                    $.ajax({
    				type: "get",
    				data: data,
    				url: "/api/commandssh",
    				dataType: "json",
    				success: function(d){
    					successfn(d);
    				},
    				error: function(e){
    					errorfn(e);
    				}
    			});
            });
    	}
    )
    

  • 相关阅读:
    svn随笔
    关于PHP调用IE的Com组件的一些要求
    Bash总结
    Firefox常用扩展
    proftpd的一些简单配置
    lua积累
    backbone.js源码解析:extend、Backbone.View
    Ubuntu 12.04LTS 安装VMwareWorkstation
    关于安装Ubuntu不将mbr写入grub的经验
    .NET6发布到linux
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349309.html
Copyright © 2020-2023  润新知