Run a .sh script through JAVA ?

Hi All,
I have a shell script that basically gives me some status on my UNIX box. The name of the script is "scstat". But I need to parse the output shown by this script using JAVA.
Does anybody know of any code or let me know the ways to implement this......your help is appreciated.
Best Regards, sangita

Test with string "ls -al", etc..
import java.io.DataInputStream;
import java.io.IOException;
* Created on Apr 26, 2004
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
* @author root
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
public class Execute {
     public static void main(String[] args) {
          Execute ex = new Execute();
          ex.execute("./scstat.sh" );     //if in current directory, need the path.
     /**Returns the output
      * @param string
     public static String execute(String string) {
          Process p;
          String s = null;
          try {
               p = Runtime.getRuntime().exec(string);
          //     p.waitFor();
          DataInputStream in = new DataInputStream(p.getInputStream());
          while ( (s=in.readLine())  !=  null){
               System.out.println(s);
          } catch (IOException e) {
               e.printStackTrace();
          return s;
}

Similar Messages

  • Running Unix Shell scripts through Java

    How to run Unix shell scripts through Java program ?

    Use:
    Process p = Runtime.getRuntime().exec("sh script.sh");Then you can use:
    p.getOutputStream and read the output of your program.

  • Running a shell script through java

    Hi all,
    I have a simple question here.
    How can I run a shell script through java and put the text output into a string.
    I'd be very grateful if you could show me sample code...
    Have a great day,
    Pesho

    Runtime.exec()
    There are plenty of examples. Read the following before continuing, however, as it will save alot of headaches:
    http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

  • Exceuting SQL Script through java

    Hi All
    I am making an installer for my application. How do i execute a SQL script through java. Its a sepeate file that has the SQL script for DB creation.
    Regards
    Abhinav

    If you database support ";" to separate sqll, then you can use Statement.execute(sql); to run all SQLscipt once, otherwise you need to load all sqls into Vector, then reun sql step by step. Copy some code for instance:
    public final static Object[] getSQLStatements(String sqlFile) throws java.
    io.IOException {
    java.util.Vector v = new java.util.Vector(1000);
    try {
    java.io.BufferedReader br = new java.io.BufferedReader(new java.io.
    FileReader(sqlFile));
    java.util.Vector batchs = new java.util.Vector(10);
    String temp;
    while ( (temp = br.readLine()) != null) {
    temp = temp.trim();
    if (temp.length() == 0)
    continue;
    switch (temp.charAt(0)) {
    case '*':
    case '"':
    case '\'':
    // System.out.println(temp);
    break; //Ignore any line which begin with the above character
    case '#': //Used to begin a new sql statement
    if (batchs.size() > 0) {
    v.addElement(getSQLStatements(batchs));
    batchs.removeAllElements();
    break;
    case 'S':
    case 's':
    case '?':
    if (batchs.size() > 0) {
    v.addElement(getSQLStatements(batchs));
    batchs.removeAllElements();
    v.addElement(temp);
    break;
    default:
    batchs.addElement(temp);
    break;
    if (batchs.size() > 0) {
    v.addElement(getSQLStatements(batchs));
    batchs.removeAllElements();
    br.close();
    br = null;
    catch (java.io.FileNotFoundException fnfe) {
    v.addElement(sqlFile); //sqlFile is a sql command, not a file Name
    Object[] statements = new Object[v.size()];
    for (int i = 0; i < v.size(); i++)
    statements[i] = v.elementAt(i);
    return statements;
    for (int i = 0; i < statements.length; i++) {
    if (statements[i] instanceof java.lang.String) {
    String temp = (java.lang.String) statements;
    switch (temp.charAt(0)) {
    case 'S':
    case 's':
    case '?':
    System.out.println(temp);
    rs = stmt.executeQuery(temp);
    ResultSetMetaData resultSetMetaData = rs.
    getMetaData();
    int iNumCols = resultSetMetaData.getColumnCount();
    for (int j = 1; j <= iNumCols; j++) {
    System.out.println(resultSetMetaData.getColumnLabel(j)
    + " " + resultSetMetaData.getColumnTypeName(j)
    + " " + resultSetMetaData.getColumnType(j)
    + " " + resultSetMetaData.getPrecision(j)
    + " " + resultSetMetaData.getScale(j)
    Object colval;
    long ncount = 0;
    while (rs.next()) {
    // System.out.print(rs.rowDeleted()+" ");
    ncount++;
    for (int j = 1; j <= iNumCols; j++) {
    colval = rs.getObject(j);
    System.out.print(colval + " ");
    System.out.println();
    rs.close(); //Let the CONCUR_UPDATABLE resultSet release its open files at once.
    rs = null;
    System.out.println(
    "The total row number of resultset: " + ncount);
    System.out.println();
    break;
    default:
    int updateCount = stmt.executeUpdate(temp);
    System.out.println(temp + " : " + updateCount);
    System.out.println();
    else if (statements[i] instanceof java.lang.Object[]) {
    int[] updateCounts;
    Object[] temp = (java.lang.Object[]) statements[i];
    try {
    for (int j = 0; j < temp.length; j++){
    System.out.println( temp[j]);
    stmt.addBatch( (java.lang.String) temp[j]);
    updateCounts = stmt.executeBatch();
    for (int j = 0; j < temp.length; j++)
    System.out.println((j+1)+":"+temp[j]);
    for (int j = 0; j < updateCounts.length; j++)
    System.out.println((j+1)+":" +updateCounts[j]);
    catch (java.sql.BatchUpdateException e) {
    updateCounts = e.getUpdateCounts();
    for (int j = 0; j < updateCounts.length; j++)
    System.out.println((j+1)+":"+updateCounts[j]);
    java.sql.SQLException sqle = e;
    do {
    System.out.println(sqle.getMessage());
    System.out.println("Error Code:" +
    sqle.getErrorCode());
    System.out.println("SQL State:" + sqle.getSQLState());
    sqle.printStackTrace();
    while ( (sqle = sqle.getNextException()) != null);
    catch (java.sql.SQLException sqle) {
    do {
    System.out.println(sqle.getMessage());
    System.out.println("Error Code:" +
    sqle.getErrorCode());
    System.out.println("SQL State:" + sqle.getSQLState());
    sqle.printStackTrace();
    while ( (sqle = sqle.getNextException()) != null);
    stmt.clearBatch();
    System.out.println();

  • Run a UNIX Script from java

    Hi,
    how can i run a unix script from java application. This java application is on windows.
    How can i do this.
    thanks,

    Hi,
    how can i run a unix script from java application.
    This java application is on windows.
    So I think it's safe to assume that the target script is on a remote unix server.
    Take a look at http://sourceforge.net/projects/sshtools/

  • Running a Unix Script through a Java Program

    Hi !!!!!!!!! Can anybody plz suggest me an approach for the following queries -
    1.  How to execute a unix script through a java program ?
      2.  How to send the o/p of the script to a java program so that it can be used .

    import java.io.*;
    public RunScript
       public static void main(String args[])
          try
              Process p = Runtime.getRuntime().exec("script.sh");
              BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));     
              while ((line = input.readLine()) != null)
                 System.out.println(line);
              input.close();
          catch(Exception e)
              e.printStackTrace();

  • Running Shell scripts through JAva

    Hi,
    I tried to execute a Shell script through a Java program.
    The code I used is as below:
    import java.lang.*;
    import java.io.*;
    public class sys {
    public static void main(String[] args) {
    Runtime rt = Runtime.getRuntime();
    String[] callAndArgs = { "chgpasswd" };
    try {
    Process child = rt.exec(callAndArgs);
    child.waitFor();
    System.out.println("Process exit code is: " + child.exitValue());
    catch(IOException e) {
    System.err.println( "IOException starting process!");
    catch(InterruptedException e) {
    System.err.println( "Interrupted waiting for process!");
    The "chgpasswd" shell script calls the "passwd" command of Unix.
    It threw out an IO exception.
    Then I gave the parameter as "./chgpasswd". It now gave an exit value of 255.
    The "chgpasswd" script exists in the same directory as the .class file.
    I checkd up the exit code reference...it says exit value of 255 could mean as exit code out of range........an exit code > 255....which unfortunately has no documentation, I guess.
    Can you help ?

    This is on a Unix platform, correct? Assuming so...
    If I remember correctly, exit codes can be greater than 255. To get the real exit code equates to something like: exitcode & 512 to obtain the real exit code.
    Make sure "chgpasswd" shell script has the execute permissions set. Additionally, make sure that the first line of the script (the magic line) has the appropriate shell/interpreter to execute specified. For example, if "chgpasswd" were a Bourne (sh) script, the first like would be:
    #!/bin/shFor perl, it may be something like:
    #!/usr/bin/perlIt needs to be the absolute path to the shell/interpreter is the point.

  • Can we execution  sql script through java ?

    Hi All,
    Can we execute sql script ("name.sql") through java programe.
    I am not talking about reading sql script one by one and excute.
    I just want to send this sql script to oracle console.
    Or any body can give other alternative I have to lot of db operation in less time.
    - Vikas Kumar Sahu

    Kumar,
    not sure whether this is any help, but you can try and use the code below.
    I've knocked it together in about an hour so it's far from production ready (particularly, assumes one-line comments starting with '#' and nothing else - queries are assumed multi-line, but terminated by ';' the following would cause trouble:
    SELECT * FROM table; SELECT *
    FROM another_table;
    and, of course, you can't get to the ResultSet.
    But, hey, it's a start!
    Best,
    Marco.
    (www.infinitebw.com)
    admin (at) infinitebw.com
    package com.ibw.database;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.sql.*;
    import com.ibw.exception.DatabaseException;
    public class SqlScript {
         public final static char QUERY_ENDS = ';';
         private File script;
         private Connection conn;
         private Statement stat;
         * @param args
         * @throws SQLException
         public SqlScript(String scriptFileName) throws SQLException {
              script = new File(scriptFileName);
    // this is a 'custom' class, just use instead getConnection() from the
    // DriverManager instead
              conn = ConnectionManager.getConn("test");
              stat = conn.createStatement();
         public static void main(String[] args) {
              try {
                   SqlScript sqlScript = new SqlScript("C:/temp/myscript.sql");
                   sqlScript.loadScript();
                   sqlScript.execute();
              } catch (SQLException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
         protected void loadScript() throws IOException, SQLException {
              BufferedReader reader = new BufferedReader(new FileReader(script));
              String line;
              StringBuffer query = new StringBuffer();
              boolean queryEnds = false;
              while ((line = reader.readLine()) != null) {
                   if (isComment(line))
                        continue;
                   queryEnds = checkStatementEnds(line);
                   query.append(line);
                   if (queryEnds) {
                        stat.addBatch(query.toString());
                        query.setLength(0);
         private boolean isComment(String line) {
              if ((line != null) && (line.length() > 0))
                   return (line.charAt(0) == '#');
              return false;
         public void execute() throws IOException, SQLException {
              stat.executeBatch();
         private boolean checkStatementEnds(String s) {
              return (s.indexOf(QUERY_ENDS) != -1);
    }

  • How to run the perl script from java ?

    Hi , I need to run the pearl script from the server and to get the result of the script thro' java using SSH
    Is there any 3rd party SSH API in java ?
    Please help me out
    thanks in advance
    karthik

    This seems like a very strange thing to want to do.
    What is the perl script doing?
    Do other programs (not some shell script) access this server-side perl script from a different machine?
    If so how do they do it?
    What currently triggers the perl script to execute?
    What currently handles the output from the perl script?
    If you can answer these questions (and understand the answers) you should be able to come up with a different approach to this.
    You do not really want to call a remote perl script from a Java program, you want to achieve the effect you think that would have if you could do it.
    So find the answers to the above questions, write them on 3" x 5" cards and lay them out on your desk.
    What flow of control needs to happen? Which piece of code needs to produce or consume which piece of data?
    If that fails, ask you self or who ever is making you do this what are the use-cases?
    If you do not know what use-cases are or do not understand them well enough try reading
    Use Case Modeling (The Addison-Wesley Object Technology Series) by Kurt Bittner and Ian Spence (Paperback - Aug 30, 2002)
    http://www.amazon.com/s/ref=nb_ss_gw/002-7908514-4043267?url=search-alias%3Dstripbooks&field-keywords=use+cases&x=0&y=0
    It is a short and easy to read book on the subject and also one of the best.
    You MUST understand WHAT you are trying to achieve before you can decide HOW you are going to achieve it.

  • How to run unix shell script from java web applet

    hi all
    i have created one java applet. my apache web server is on unix server.
    i have created one shell script in same directory where my .class and .htm files reside...
    how to run this shell script from applet? it should search this .sh file on server and not on the client browser machine...
    thanks in advance

    I suppose you could make the shell script into a CGI, configure the server to execute CGIs, and then make the applet open the URL of that CGI.

  • Running command line commands through java

    How do I run other programs through Java and capture their output. E.g. If I want to capture output of 'ls *.txt' what do I do ? If you can paste some sample code or point me to some tutorial that would be cool.
    Thanks,

    I tried that
    Process proc = Runtime.getRunTime().exec("curl " + query);
    but now what. From the documentation I could see that
    public abstract OutputStream getOutputStream()
    might be helpful. But then which OutputStream class to use ? I am looking for a coding example. If you could paste it, that would be great.

  • Run chm help file through java code

    hello,
    would you tell me how can i run a help.chm file using java code. i am trign this but no luck.
    first try
    Process pp=run.exec("C:/Program Files/Internet Explorer/IEXPLORE.exe ./res/bobftphelp.chm" );
    Second try
              Process pp=run.exec(" ./res/bobftphelp.chm" );
    It run fine a help.doc file but not help.chm file.
    please help me
    Thanka in advance
    Ravi Charan

    The second address given to that function, does it relate to the class that its being called from? cause i've got
    Runtime.getRuntime().exec("C:\\WINDOWS\\hh.exe .\\HelpFile_9_3.chm" );where HelpFile_9_3 is in the same folder as my class, but it won't work. Can anyone help?
    Also, can you search within a chm file from Java? If I get that above code working, I presume it'll open the help file to the main page. I'd like to search within that document for a word or phrase - possible?
    Thanks!
    Edited by: Pulkse.co.uk on Sep 10, 2008 8:18 AM

  • Trying to execute a python script through java

    I would like to make a command line call from java to execute a python script. The command line call would look like this:
    tilemaker.py -s 128 -Q 0 -b FFFFFF AlternateExample.png
    Also this has to be platform independent.
    I am aware of Jython but I can't use it at this point due to technical restrictions.

    you can use the jep (Java Embedded Python) package...it's very simple and u just need to call a method.....
    see the following links....
    http://jepp.sourceforge.net/javadoc/jep/Jep.html
    http://jepp.sourceforge.net/

  • How to run a Test Script through RFC

    I created a Test Script A in system A.
    And I created  Test Script B in system B.
    I  want to refer Test Script A in in Test Script B.
    But there is an information "Test Script A cannot found in local system.",
    because the 2  Test Script  are in different systems.
    I do not want upload Script A into system B.
    Is there a way to call Test Script A in system B?

    Hi Uwe,
    Thanks for your help.
    I have a question about the Function module   ECATT_EXECUTE.
    I want to to run a eCATT Test Configuration with External Variants.
    So I enter the following valus into import parameters
    TO_EXECUTE-OBJ_TYPE = 'ECTC'
    TO_EXECUTE-OBJ_NAME = '/SMB91/ARTICLE_O001_R80'
    IT_VAR_EXT-OBJ_TYPE = 'ECTC'
    IT_VAR_EXT-OBJ_NAME = '/SMB91/ARTICLE_O001_R80'
    IT_VAR_EXT-VAR_EXT_MODE = 'X'
    IT_VAR_EXT-VAR_EXT_FILE = 'SMB99_RETAIL_MM41_711.TXT'
    IT_VAR_EXT-VAR_EXT_PATH = 'C:\DATA\RETAIL'
    When EXECUTE the Function,
    the ecatt is not get the External Variants 'SMB99_RETAIL_MM41_711.TXT'
    from the path 'C:\DATA\RETAIL'  I entered.
    it use a  different path which is form  the Start profile values .
    How to make the ecatt  use the path I entered ?
    Hope for your reply , thanks.
    Weston

  • How do i print parameters in shell script through java

    Hi,
    I am sorry if have posted this query in wrong thread!!!
    How do i print the parameter in shell script which are passed from java programm?
    i have tried in different ways.. but the actual param value is not printing when i execute the java programm
    java code is here
    import java.io.IOException;
    public class TestShell {
          * @param args
    public static void main(String[] args) {
             String inputFilePath=args[0];
              String inputFileName=args[1];
              String outputFileName=args[2];
              String outputFilePath=args[3];
              Runtime r = Runtime.getRuntime();
              String[] cmdArray = new String[]{"Test.sh",inputFilePath, inputFileName, outputFileName, outputFilePath};
              try {
                   r.exec(cmdArray);
                   System.out.println("Test.sh executed successfully.");
              } catch (IOException e) {
                   e.printStackTrace();
    }I need a shell script to print paramenters (inputFilePath, inputFileName, outputFileName, outputFilePath)
    Thanks,
    Jasmin

    user13836688 wrote:
    But my code is something look like thisWell unless I've completely lost my marbles (possible) or Java Runtime.exec() does something I've never heard of, I can't even see how that will execute. For a start, assignments in the Bourne shell take the form ofinfile = $inputFilename;orinfile = "inputFilename";not what you've got; and the first form would only work if you've set the appropriate environment variables.
    Are you sure you're not confusing this with a Javascript script?
    Winston
    Edited by: YoungWinston on Apr 18, 2011 12:51 PM
    And BTW, you don't need to put ';' at the end of each statement, unless there's more than one on a line.
    Edited by: YoungWinston on Apr 18, 2011 12:54 PM
    BTW2: 'printf "%d", inpath' also looks very dodgy, since 'inpath' is unlikely to be a number (in fact, it's unlikely to be anything).
    I think you might want to get a book on scripting.

Maybe you are looking for

  • Obtaining originally requested URI for 404 processing, Apache JBoss CF8

    Hey all. The issue I'm facing, in a (rather large) nutshell: when a user requests a directory which doesn't exist, Apache 2.2 forwards the request to JBoss 4.2.3.GA, which loads the 404 template that I've specified in the web.xml file. That happens t

  • Flex list icon states

    Hello all, I have a list where each item has the same icon.  I want the icon to have a rollover state... I can't do this through the list functions IconField or IconFunction because they only fire when the data changes. Is there a way to swap icons i

  • Embedded Profiles

    Dear All, I wish to check my understanding of embedded profiles. I will have to print out from a second machine that I will not have the ICC profile I am using installed. You use Edit>Convert to Profile Edit>Colour Settings is set to preserve profile

  • Photoshop CC 2014 is corrupting layers while their being saved

    Some large layered  files are showing layer corruption. Anyone know what's going on. I cannot save my work now. I use frequency shift technique to clean up metal surfaces, so blending modes are used. Also on some layers a pink tinted layer icon is vi

  • It's possible reads in a same e-reader, books with different Adobe ID

    it's possible reads in a same e-reader, books with different Adobe ID