jsp命令行页面-执行shell

下载地址:http://download.csdn.net/detail/yx511500623/6855599

看效果截图:

jsp文件如下:

放在同一目录下,需要导入jquery,jquery版本最低1.7:

cmd.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.io.BufferedReader,java.io.File,java.io.FileOutputStream,java.io.InputStreamReader;"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jsp命令行页面</title>
<style>
textarea{
	background-color: #000;
	color:red;
	width:100%;
}
</style>
</head>
<body>请输入命令:<br/>
	<textarea rows="30" cols="100" id="cmd" ></textarea><br/>
</body>
</html>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#cmd").keydown(function(event){
			if(event.keyCode==13){
				var cmd=getStrByLastLine();
				//处理空格				
				log("开始执行:"+cmd);
				//执行结果
				$.get("test.jsp",{'cmd':""+cmd+""},function(data){
					  data.replace("\n","");
					  log("执行结果: " + data);
					  $("#cmd").val($("#cmd").val()+data);
					  //滚到最下方
					  $("#cmd")[0].scrollTop = $("#cmd")[0].scrollHeight;
				});
			}
		});
	});
	function log(msg){
		if(!msg) return;
		if(!console) return;
		console.log(msg);
	}
	//获取textarea最后一行
	function getStrByLastLine(){
		var str=document.getElementById("cmd").value,arr;//获取文本域内容 
		if(document.all){ 
			// 如果是IE 
			arr=str.split("\n"); 
		}else{ 
			// firfox 
			arr=str.split("\n"); 
		}
		log(arr.length);
		if(arr.length<1) return "";
		for(var i=arr.length-1;i>0;i--){
			if(arr[i]!=""&&arr[i]!=" ")
			  return arr[i];
		}
		return arr[arr.length-1];
	}
</script>


test.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.io.BufferedReader,java.io.File,java.io.FileOutputStream,java.io.InputStreamReader;"%>
<%!
    private String execCMD(String cmd){
		if(cmd==null||cmd=="") return "";
		String fileName="xxxxx.bat";
		if(!System.getProperties().getProperty("os.name").toLowerCase().startsWith("win"))
			fileName="xxxxx.sh";
		//写入文件
		try {
			File f=new File(fileName);
			if(!f.exists()) f.createNewFile();
			FileOutputStream osOutputStream;
			osOutputStream = new FileOutputStream(f);
			if(!"xxxxx.bat".equals(fileName)) 
			osOutputStream.write("#!/bin/sh\n".getBytes());
			osOutputStream.write(cmd.getBytes());
			osOutputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
			return e.getMessage();
		}
		//执行命令
		StringBuilder sb=new StringBuilder();
		BufferedReader br = null;
		Process p =null;
		try {
			p = Runtime.getRuntime().exec(fileName);
			br = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String line = null;
			while ((line = br.readLine()) != null) {
				sb.append(line+"\n");
			}
		} catch (Exception e) {
			e.printStackTrace();
			return e.getMessage();
		} finally {
			if (br != null) {
				try {
					br.close();
					p.destroy();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}	
		return sb.toString();
	}
%>

<%
	String cmd=request.getParameter("cmd");
	if(cmd!=""||cmd!=null){
		response.getWriter().write(execCMD(cmd));
	}
%>



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值