通过jsp网页调用shell脚本
2016-07-30 22:39
417 查看
通过这个网页,可以更改服务器的时间,可以调用相应的脚本。
由于访问者都是固定ip,将ip和用户的对应关系存储到一个map里。用户可以对服务器进行锁定和解锁,服务器被锁定后不允许其他用户进行操作。
服务器还会把访问者的操作都记录下来,正确时间从10.68.12.21获得。
由于访问者都是固定ip,将ip和用户的对应关系存储到一个map里。用户可以对服务器进行锁定和解锁,服务器被锁定后不允许其他用户进行操作。
服务器还会把访问者的操作都记录下来,正确时间从10.68.12.21获得。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.io.InputStreamReader"%> <%@ page import="java.io.LineNumberReader"%> <%@ page import="java.io.IOException"%> <%@ page import="java.util.Date.*"%> <% /* response.setHeader("Cache-Control","no-store"); response.setHeader("Pragrma","no-cache"); response.setDateHeader("Expires",0); */ %> <%! String locker = null; %> <% String target = "action=\"http://10.68.12.17/\""; String restart = request.getParameter("restart"); String update = request.getParameter("update"); String dateval = request.getParameter("dateval"); String timeval = request.getParameter("timeval"); String lock = request.getParameter("lock"); String unlock = request.getParameter("unlock"); boolean normal = false; if(restart == null && update == null && dateval == null && timeval == null && lock == null && unlock == null) normal = true; if(dateval == null) dateval = "20160801"; if(timeval == null) timeval = "8:15"; String oldlocker=null; if(lock != null) { if(locker != null) oldlocker = locker; locker = lock; } if(unlock != null) { if(locker != null) oldlocker = locker; locker = null; } Map<String,String> map = new HashMap<String,String>(); map.put("10.64.16.12","someone"); String ip = request.getRemoteAddr(); String user = map.get(ip); if(user == null) user = "other"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <title>17 服务器管理</title> </head><body> 服务器当前时间为: <% Date date = new Date(); out.print(date.toString()+"<br>"); String disabled = ""; if(locker != null && !(user.equals(locker))) { disabled = "disabled=\"true\""; out.print("<br><br><form method=\"post\""+target+"><font color=red><b>服务器被 "+locker+" 占用!</b></font> "); out.print("<input type=\"hidden\" name=\"unlock\"><input type=\"submit\" value=\"强制解除占用\"></form>"); } %> <br><form method="post" <%=target%>> <p>设置日期和时间(日期必须8位):</p> <input type="text" name="dateval" value="<%=dateval%>" size="8"> <input type="text" name="timeval" value="<%=timeval%>" size="5"> <input type="submit" value="确定" <%=disabled%>> 注意: 修改时间之后需要手动<font color=red><b>重启</b></font>服务器才能生效! </form><br> <form method="post" <%=target%>> <input type="hidden" name="restart" value="a"> <input type="hidden" name="update"> <input type="submit" value="重启所有(不更新资源)"<%=disabled%>> </form> <form method="post" <%=target%>> <input type="hidden" name="restart" value="a"> <input type="hidden" name="update" value="u"> <input type="submit" value="重启所有(更新资源)"<%=disabled%>> </form> <br><a href="log.jsp">查看最近的日志</a><br> <% if(!(locker != null && !(user.equals(locker)))) out.print("<a href=\"http://10.68.12.17/?lock="+user+"\">占用服务器(锁定不被重启)</a><br>"); if(locker != null && user.equals(locker)) out.print("<a href=\"http://10.68.12.17/?unlock=\">解除占用服务器</a><br>"); %> <br><font color=red size=4><b>刷新页面可能会导致上次执行的重启命令再次被执行,</b></font> <font color=red size=4><b><a href="http://10.68.12.17">点我回到主页面</a></b></font><br><br> <% if(normal) return; String[] remotedate = {"sh", "-c", "ssh game@10.68.12.21 date +%Y/%m/%d-%H:%M:%S"}; String curdate=""; try { Process proc = Runtime.getRuntime().exec(remotedate); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); LineNumberReader input = new LineNumberReader(ir); curdate = input.readLine(); } catch (IOException e) { e.printStackTrace(); } if(lock != null) { String[] log = {"sh", "-c", "echo \""+curdate+" LOCK user:"+user+" from "+ip+" locker:"+locker+" oldlocker:"+oldlocker+"\" >> log.txt"}; try { Runtime.getRuntime().exec(log); } catch (IOException e) { e.printStackTrace(); } return; } if(unlock != null) { String[] log = {"sh", "-c", "echo \""+curdate+" UNLOCK user:"+user+" from "+ip+" oldlocker:"+oldlocker+"\" >> log.txt"}; try { Runtime.getRuntime().exec(log); } catch (IOException e) { e.printStackTrace(); } return; } if(restart != null) { String[] log = {"sh", "-c", "echo \""+curdate+" "+user+" from "+ip+" restart "+restart+" "+update+"\" >> log.txt"}; String[] cmd = {"sh", "-c", "./pass.sh "+restart+" "+update}; try { Runtime.getRuntime().exec(log); Process proc = Runtime.getRuntime().exec(cmd); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; out.print("执行结果:<br>"); while ((line = input.readLine()) != null) { out.print(line+"<br/>"); } } catch (IOException e) { e.printStackTrace(); } } else if(dateval != null && timeval != null) { if(dateval.length() != 8) { out.print("日期格式错误!<br>"); return; } String[] log = {"sh", "-c", "echo \""+curdate+" "+user+" from "+ip+" settime "+dateval+" "+timeval+"\" >> log.txt"}; String[] cmd = {"sh", "-c", "date -s \""+dateval+" "+timeval+"\""}; try { Runtime.getRuntime().exec(log); Process proc = Runtime.getRuntime().exec(cmd); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; out.print("执行结果:<br>"); while ((line = input.readLine()) != null) { out.print(line+"<br/>"); } } catch (IOException e) { e.printStackTrace(); } } /* #!/bin/sh cd ~game su game <<EOF ./restart.sh $1 $2; EOF */ %> </body></html>
相关文章推荐
- Shell脚本通过参数传递调用指定函数
- java jsp调用shell(带参数)脚本并返回值
- 通过ant调用shell脚本执行adb命令
- Java之怎么通过java去调用并执行shell脚本以及问题总结(转)
- jsp调用shell脚本
- java jsp调用shell(带参数)脚本并返回值
- 通过shell脚本调用oracle存储过程并加入定时任务
- 通过C++和shell脚本去解析URL && c++调用shell脚本后将脚本的内容返回给程序
- 一个通过不同的文件扩展名来调用不同的解压程序的shell脚本
- shell脚本调用java jar包 的问题总结
- 通过脚本案例学习shell(二) --- 通过线性显示/etc/passwd内容了解while read用法 推荐
- 如何在shell脚本中调用expect实现自动化
- Linux通过shell脚本计算网卡流量
- 【如何使用shell 脚本调用java进程】
- 通过JSP 页面调用servlet方法?
- 使用ssh登录shell脚本远程调用
- SHELL脚本直接调用存储过程
- SHELL脚本直接调用存储过程
- 微信调用jssdk在网页端实现调用扫一扫,java+jsp
- 调用bash shell脚本的方式