1. 程式人生 > >Servlet執行Shell並返回結果

Servlet執行Shell並返回結果

1.首先新建一個JavaWeb專案
新建一個Servlet類這裡以IndexServlet為例:
2.編輯IndexServlet.java檔案

//此處省略package

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/index.py") public class IndexServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { // TODO Auto-generated method stub // super.doGet(req, resp); String cmd = req.getParameter("cmd"); System.out.println(cmd); Process process = null; List<String> processList = new ArrayList<String>(); try
{ if (cmd!=null) { process = Runtime.getRuntime().exec(cmd); BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = ""; while ((line = input.readLine()) != null) { processList.add(line); } input.close(); } } catch (IOException e) { e.printStackTrace(); } String s = ""; for (String line : processList) { // System.out.println(line); s += line + "\n"; } if (s.equals("")) { resp.getOutputStream().write("null".getBytes()); }else { resp.getOutputStream().write(s.getBytes()); } } }

3.開啟伺服器,呼叫方式如下:
http://主機名:埠/應用名稱/index.py?cmd=命令名稱
樣例如下:

相關推薦

Servlet執行Shell返回結果

1.首先新建一個JavaWeb專案 新建一個Servlet類這裡以IndexServlet為例: 2.編輯IndexServlet.java檔案 //此處省略package import j

JSP執行Shell返回結果

在JavaWeb專案中新增一個jsp檔案,此處以shell.jsp為例 <%@page import="java.io.IOException"%> <%@page import

利用shell指令碼執行ssh遠端另一臺主機執行命令返回命令的結果

假設從主機A,檢查主機B上的程序, 需要在主機B上建立檢查使用者,例如叫x, 並設定通過public key認證登入SSH,不會可以google搜一下, 然後,在A機器上執行: ssh [email protected] ~/command.sh > re

/在文檔上下文裏執行腳本,返回結果

cal lua puppet launch window row out val console /在文檔上下文裏執行腳本,並返回結果(async () => { const browser = await puppeteer.launch({ args:

pl/sql 建立執行oralce儲存過程,返回結果

因為以前一直用sql server多,現在一下子用oracle ,工具什麼都不熟,侷限於sql server的思想  網上搜,和問朋友,跟我講了一大堆,什麼loop 啊,decalre啊,package啊,什麼命令視窗啊,什麼 sql plus啊,什麼不支援pl/sql啊.

用NamedParameterJdbcTemplate的execute,PreparedStatementCallback執行帶命名引數查詢返回結果..

先呼叫pg的函式生成cursor,再fetch all返回遊標資料集.JSONData lvRet=new JSONData(); TransJdbcTemplate lvTj = ContextH

Centos 執行shell命令返回127錯誤

建數據庫 mysq data 存在 思路 功能 自動創建 運行 用戶 shell腳本功能:連接mysql,自動創建數據庫,腳本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character-s

Python判斷用戶登錄狀態,返回結果

sed 成功 http gif 技術分享 user 狀態 and == username = "Anker" passward = "Abc123" number =2 for i in range(1,4,1): _username = input("use

java呼叫命令提示符返回結果(中文無亂碼)

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import

javaweb總結(九)--從jsp頁面傳送ajax請求,servlet接受引數返回json資料

來自:https://blog.csdn.net/yanghan1222/article/details/78447231   今天遇到了問題把我難住了,解決之後就趕緊來記下來 這是一個很簡單的更新使用者的問題 先來看看專案所需jar包 接下來就是jsp頁面的東西

CHttpFile POST方式提交資料返回結果

bool PostContent(CString strUrl/*介面地址*/, const CString &strPara/*傳送資料*/, CString &strContent/*介面返回資料*/, CString &strDe

C#呼叫Oracle儲存過程返回結果

1.建立一個儲存過程: createorreplaceprocedure GET_PERSON ( RC1 outsys_refcursor, RC2 outsys_refcursor ) is begin open RC1 for select * from PERSO

Binary Tree Level Order Traversal(二叉樹層序遍歷-儲存返回結果集)

題目描述 Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level). For example: Given

Python(66)_判斷用戶傳入的參數str中計算數字,字母,空格,以及其他的個數,返回結果

mage isspace odin alt str elif pac png 函數 #-*-coding:utf-8-*- ‘‘‘ 寫函數,判斷用戶傳入的參數str中計算數字,字母,空格,以及其他的個數,並返回結果 ‘‘‘ content = input(‘>>

Python(66)_判斷使用者傳入的引數str中計算數字,字母,空格,以及其他的個數,返回結果

#-*-coding:utf-8-*- ''' 寫函式,判斷使用者傳入的引數str中計算數字,字母,空格,以及其他的個數,並返回結果 ''' content = input('>>>') def func(s): num = 0 alpha = 0 space

從主Activity中呼叫子Activity,返回結果給主Activity

使用Intent在Activity間傳遞資料的方法; 1.以Sub-Activity的方式啟動子Activity 呼叫startActivityForResult(Intent,requestCode)函式。 2.設定子Activity的返回值 呼叫setResult()函式設定需要返回給父

android: startActivityForResult用法(啟動其他Activity返回結果

startActivityForResult:該方法用於啟動指定Activity,而且期望獲取指定Activity返回的結果。 例如應用程式第一個介面需要使用者進行選擇,但是這種選擇的列表資料很複雜,需要啟動另一個Activity讓使用者選擇。當用戶在第二個Activity

利用Future非同步獲取多執行緒的返回結果

Future介面是Java標準API的一部分,在java.util.concurrent包中。Future介面是Java執行緒Future模式的實現,可以來進行非同步計算。 有了Future就可以進行三段式的程式設計了,1.啟動多執行緒任務2.處理其他事3.收集多執行

在資料庫中批量執行SQL結果記錄到檔案中

         專案中有一個步驟:資料移植。資料移植要遷移很多的表,遷移完之後我們要看一下我們遷移的表的記錄數對不對。假如說有一百多張表,不可能每次都一張表一張表的去查詢然後記錄,這時候就得有一個指令碼可以自動執行。我在資料視覺化工具上怎麼試都不行,同時執行一百多個查詢語

獲取Executor提交的併發執行的任務返回結果的兩種方式/ExecutorCompletionService使用

當我們通過Executor提交一組併發執行的任務,並且希望在每一個任務完成後能立即得到結果,有兩種方式可以採取: 方式一: 通過一個list來儲存一組future,然後在迴圈中輪訓這組future,直到每個future都已完成。如果我們不希望出現因為排在前面的任務阻