?
Solved

How to run unix command from JSP

Posted on 2006-07-13
7
Medium Priority
?
1,886 Views
Last Modified: 2008-02-01
Hello Experts,

Can anybody please guide me on how to run a unix commands from jsp application ported on the unix box?
My requirement is to navigate to a particular Unix directory and run the command like: text2ps  -l  -m  t.1.25, b.5,.5  -r 60  -c 165  -s0.85  | distill > av_report.pdf (this command creates PDF from ASCII/text files)

If you could give a sample code, it will be a great help.
Thanks.
0
Comment
Question by:AmolDesai23
  • 3
  • 3
7 Comments
 
LVL 9

Expert Comment

by:Weiping Du
ID: 17102146
How about run shell from JSP script?  not sure it is best answer...

<%@ page language="java"  import="java.io.*, java.lang.*"%>

<%
  Runtime rt = Runtime.getRuntime();
  Process prcs = rt.exec(“/bin/bash”); //or your csh shell location

  BufferedWriter cmd = new BufferedWriter(new OutputStreamWriter(prcs.getOutputStream()));
  cmd.write(“text2ps  -l  -m  t.1.25, b.5,.5  -r 60  -c 165  -s0.85  | distill > av_report.pdf”);
  cmd.flush();

  int returnCode = prcs.exitValue();
  prcs.destroy();

%>
0
 

Author Comment

by:AmolDesai23
ID: 17102259
Thank you Owenli.

Do I need to have my JSPs on a same Unix machine to run and try this code? What if I have to run this Unix command on a different Unix machine?
0
 
LVL 9

Expert Comment

by:Weiping Du
ID: 17102896
Yes, it should be on same machine. It is a separate process and not a thread within JVM.
You can call prcs.waitFor() to wait for the process to finish.

For  run this Unix command on a different Unix machine, I am not sure but I guess that you may need telnet API, try this package: de.mud.telnet OR org.apache.commons.net.telnet



0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 

Author Comment

by:AmolDesai23
ID: 17103049
Thanks again! does anybody have a code to execute above unix comand on a different Unix machine (via a telnet may be... as per Owenli)?

regards.
0
 
LVL 8

Expert Comment

by:kaliyugkaarjun
ID: 17105960
0
 

Author Comment

by:AmolDesai23
ID: 17107604
Thank you friend. I don't know much abt Unix and couldn't understand the code out there in that link.  Can i write something like this in my scriptlet? Will it work? if not...whats the solution?

    <%
    try
          {
          Runtime runTime = Runtime.getRuntime();
          Process process = runTime.exec ("text2ps  -l  -m  t.1.25, b.5,.5  -r 60  -c 165  -s0.85  | distill > av_report.pdf \r\n");
          InputStream inputStream = process.getInputStream();
          InputStreamReader   inputStreamReader = new InputStreamReader (inputStream);
          BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
          String line = null;
        while ( (line = bufferedReader.readLine()) != null )
    %>
    -- <%= line %>  <!-- this line is just for a debugging purpose-->
    <%    
        System.out.println(line);
          int exitVal = process.waitFor();
          System.out.println ("Process exitValue:  " + exitVal );
          }
          catch (Throwable t)
          {
               t.printStackTrace();
          }
    %>
0
 
LVL 9

Accepted Solution

by:
Weiping Du earned 1500 total points
ID: 17108133
AmolDesai,

The code will work fine.  You may need use whereis/which text2ps to find its absolute location path. such as:
runTime.exec ("/local/bin/text2ps  -l  -m  t.1.25, b.5,.5  -r 60  -c 165 ....
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Washington based MSP turned to OnPage to solve their needs for after-hours alerting when customers’ technologies failed. In this post  see how DNS benefited from rolling out OnPage as a solution: -Preserve their SLAs -Improve response time by…
Let us take a look at the scenario, you have a database that is corrupt and you run the ESEUTIL command only to find you are unable to repair it. How do you now get the data back?
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Watch the video to learn how one can deal with PST file corruption issue with an outstanding Kernel for Outlook PST Repair Tool easily. Using this tool, non-technical users can swiftly perform the repair process to restore their essential data witho…
Suggested Courses

600 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question