Servlet
tomcat
- 測試tomcat 的執行權限
- 如何讓 Servlet 執行 shell 或其他指令
- 如何編譯 Servlet 與執行
如何讓 Servlet 執行 shell 或其他指令
servlet 就是 java ,因此呼叫shell 或指令用同一個語法
Runtime.getRuntime().exec( "/path/my_shell.sh");
如何編譯 Servlet 與執行
需要額外引入 servlet-api.jar 與 jsp-api.jar (此兩個檔可以到 tomcat_home/lib/)
HelloWorldExample?.java
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* $Id: HelloWorldExample.java 500674 2007-01-27 23:15:00Z markt $ * */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /** * The simplest possible servlet. * * @author James Duncan Davidson */ public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale()); response.setContentType("text/html"); PrintWriter out = response.getWriter(); Runtime.getRuntime().exec( "/home/waue/a.sh"); out.println("<html>"); out.println("<head>"); String title = rb.getString("helloworld.title"); title="waue test!"; out.println("<title>" + title + "</title>"); out.println("</head>"); out.println("<body bgcolor=\"white\">"); // note that all links are created to be relative. this // ensures that we can move the web application that this // servlet belongs to to a different place in the url // tree and not have any harmful side effects. // XXX // making these absolute till we work out the // addition of a PathInfo issue out.println("<a href=\"../helloworld.html\">"); out.println("<img src=\"../images/code.gif\" height=24 " + "width=24 align=right border=0 alt=\"view code\"></a>"); out.println("<a href=\"../index.html\">"); out.println("<img src=\"../images/return.gif\" height=24 " + "width=24 align=right border=0 alt=\"return\"></a>"); out.println("<h1>" + title + "</h1>"); out.println("</body>"); out.println("</html>"); } }
編譯過後需將class 檔 放到 $tomcat_home/webapps/examples/WEB-INF/classes/ 資料夾下
重新啟動 tomcat 或 用 manager/的 reload examples 資料夾
測試tomcat 的執行權限
範例中會執行 /home/waue/a.sh
a.sh 的執行權限為 700 擁有者為 waue
#!/bin/bash date=`date` echo "gogogo" > a.txt echo "$date" >> a.txt
如果 tomcat 的執行權限不是 waue ,則無法執行也無法寫入
答案如預期,證明 tomcat 的執行權限即為 啟動tomcat 的使用者。
Last modified 14 years ago
Last modified on May 28, 2010, 2:01:51 PM