Shell script doesnot execute within java code

Hi
I have the following code
public static void main (String[] args) throws IOException, InterruptedException {
String command1 = "sh -c /home/test.sh";
// create a process for the shell
ProcessBuilder pb = new ProcessBuilder("sh", "-c", command1);
pb.redirectErrorStream(true); // use this to capture messages sent to stderr
Process shell = pb.start();
InputStream shellIn = shell.getInputStream(); // this captures the output from the command
int shellExitStatus = shell.waitFor(); // wait for the shell to finish and get the return code
int c;
while ((c = shellIn.read()) != -1) {System.out.write(c);}
// close the stream
try {shellIn.close();} catch (IOException ignoreMe) {}
}When I run sh -c /home/test.sh from the commandline on my linux box, it works. But when run from within the above java code, it doesnot.Can you please point to what could be missing?
Many Thanks.

Nish_B wrote:
Thanks for the pointer. /home was just an example.
I modified the code to follow the example.
String command1 ="/home/test.sh";
try
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command1);
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t)
t.printStackTrace();
You really really do need to read the traps article.
>
Is there a way to run as a background process? Use a thread.
Currently when I run the above, the script runs and holds the input, I tried passing "&" to the command1 string as well as concatenating it to the exec arg but seems like the test.sh script then fails since it takes that as a parameter.Read the traps article.
So can I run the above script via the java code and let it run as a background process?Read the traps article.

Similar Messages

  • Problem with executing shell script on linux through java code.

    i am facing problem to kill jboss process on linux that is my application requirement. for that i created one shell script that will get all the process for jboss instance and kill them when i am running that script from command prompt on linux its working perfectly.
    The command i am using ---
    /opt/RW9/jboss/v4.0.5.GA/bin/restartjboss.sh.
    but when i am running through java code its not working.
    the java code i am using is:-
    pp = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "/opt/RW9/jboss/v4.0.5.GA/bin/restartjboss.sh"});
    could anyone tell me what is the problem ?
    Edited by: akm198110 on Sep 2, 2008 9:24 AM

    I got the problem after long struggle ,after doing proper path i am able to execute the shell script..

  • Shell script to execute java program

    Hi there,
    In my script to execute my Java program, I have assigned a variable as follows:
    PROGRAM_ROOT = "C:/program"
    A jar file that my program needs is located in C:/program/build. ie. it is located in "PROGRAM_ROOT/build".
    In my script I have a property set as follows:
    -Dprogram.build="$PROGRAM_ROOT/build"
    When I execute the script using cygwin, the above line gets converted to the following:
    -Dprogram.build="$PROGRAM_ROOT
    /build"
    i.e. the concatenation of "PROGRAM_ROOT" and "build" results in PROGRAM_ROOT<carriage_return>\build.
    Is there a way to use PROGRAM_ROOT and concatenate "/build" to it?

    You'd have to build your own client/server implementation or use a remote messaging framework (like RMI) to help you with this if you wanted to do it in pure Java.
    It would be easier to just kick off some other installed process to send the message, e.g. install cygwin and pipe the command to start the shell and run the script through ssh. If you wrote a Java program to kick this off, it would only be a couple lines of code, and not really necessary.
    It's not ideal to try to do remote command administration just using Java.

  • How to get the Weblogic Server Id from within java code

    I would like to log which server (among a cluster) a certain job is running on. Is there a way to get the server id from within Java code (this code is in a session bean if that is relevant.)
    By server id I mean the "Name" column in the summary of servers on the weblogic console.
    Thanks,
    ken

    Use the two entries close to the bottom of the page: "list WebLogic
    MBeans:listMBeans.jsp
    display MBean attributes and operations:showMBean.jsp"
    Nils
    Anatoly wrote:
    >
    Cameron,
    That page has these items on it:
    which one do you think helps with my issue?
    Misc WebLogic examples
    LongRunningTask
    Execute tasks in parallel using WebLogic Execute Threads
    Weblogic stats (5.1)
    Reload Servlet(s) programmatically (5.1)
    Network classload from WebLogic:using reflection,or the launcher
    Weblogic 5.1 debugging properties
    Seppuku pattern readme
    Using dynamic proxies to intercept EJB invocations (6.1)
    list WebLogic MBeans:listMBeans.jsp
    display MBean attributes and operations:showMBean
    Thanks to Marcelo Caldas for filter by type option and nice UI!
    Using com.sun.jdmk.comm.HtmlAdaptorServer with WebLogic 6.1
    Cool
    EJBGen
    Dimitri
    back
    "Cameron Purdy" <[email protected]> wrote in message news:<3c7a745d$[email protected]>...
    JMX ... see http://dima.dhs.org/misc/ for some info on JMX in Weblogic.
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    Clustering Weblogic? You're either using Coherence, or you should be!
    Download a Tangosol Coherence eval today at http://www.tangosol.com/
    "Anatoly" <[email protected]> wrote in message
    news:[email protected]..
    Does anyone know who to get the managing server URL's port
    from within the EJB code running on Weblogic 6.1?
    The URL port is not default (not 7001), but when creating
    initial context, I am not specifying the URL in properties.
    Due to that, trying to the the PROVIDER_URL property from
    environment does not return anything.
    Appreciate any responses.
    -Anatoly
    ============================
    [email protected]

  • Setting Windows Envirnoment variables within Java code!!

    Hello All,
    How to setup Windows envirnoment variables within Java code dynamically.
    int customer = jList1.getSelectedIndex();
    System.out.println(customer);
    switch (customer)
    case 0:
    System.out.println("HOME1");
    break;
    case 1:
    System.out.println("HOME2");
    break;
    case 2:
    System.out.println("HOME3");
    break;
    case 3:
    System.out.println("HOME4");
    break;
    default:
    System.out.println("HOME5");
    break;
    }

    set windows %HOME% variableWhat is it?
    A system-wide resource? Something pertinent to the processes of a given user? Or does it apply only to your Java process?

  • Start weblogic server within java code

    From edoc.bea.com, I got:
    ====
    The following sections describe alternate ways to start an Administration Server:
    Starting an Administration Server from the Windows Start Menu
    Starting an Administration Server When the Host Computer Boots
    Starting an Administration Server With the java weblogic.Server Command
    ====
    Could we start weblogic server within java code?
    (like ServerLoader provided by JBoss?)
    Thanks in advance.
    -Kevin

    The follwoing code:
    //====
    import weblogic.*;
    public class MyTest
    public static void main(String[] args)
              String[] myArgs = new String[6];
              myArgs[0] = "-Dweblogic.home=C:\\bea";
              myArgs[1] = "-Dweblogic.RootDirectory=C:\\bea\\weblogic81\\samples\\domains\\examples";
              myArgs[2] = "-Dweblogic.ConfigFile=C:\\bea\\weblogic81\\samples\\domains\\examples\\config.xml";
              myArgs[3] = "-Dweblogic.Name=examplesServer";
              myArgs[4] = "-Dweblogic.management.username=weblogic";
              myArgs[5] = "-Dweblogic.management.password=weblogic";
              Server.main( myArgs );
    //====
    Seems that did not feed the arguments in:
    C:\myTest>java -cp .;%CLASSPATH% MyTest
    <Sep 22, 2005 6:08:40 PM EDT> <Info> <Security> <BEA-090065> <Getting boot ident
    ity from user.>
    Enter username to boot WebLogic server:

  • How to write a shell script to execute a procedure with out parameter

    Hi,
    How to write a shell script to execute a procedure with out parameter.
    here is my procedure
    PROCEDURE sample(invar1 VARCHAR2,
    invar2 VARCHAR2,
    invar3 VARCHAR2,
    invar4 VARCHAR2,
    ecode out number);
    Any example really helpfull
    Thanks in advance

    Or if we're passing values in, maybe something like:
    Test procedure:
    CREATE OR REPLACE PROCEDURE p (myin IN VARCHAR2, myout OUT VARCHAR2)
    AS
    BEGIN
        myout :=
            CASE myin
                WHEN 'A' THEN 'APPLE'
                WHEN 'B' THEN 'BANANA'
                ELSE 'STARFRUIT'
            END;
    END;Shell script:
    #!/bin/bash
    my_shell_variable=$1
    unset ORACLE_PATH
    sqlplus -s un/pw@db <<-EOF
    set feedback off pause off
    set pagesize 0
    set autoprint off
    VAR out varchar2(30)
    VAR myin varchar2(30)
    exec :myin := '${my_shell_variable}'
    BEGIN
      p(:myin, :out);
    END;
    print out
    exit
    EOFTest:
    /Users/williamr: xx A
    APPLE
    /Users/williamr: xx B
    BANANA
    /Users/williamr: xx
    STARFRUITObviously in a real script you would not hardcode the password or let it show in a "ps" listing.
    Message was edited by:
    William Robertson

  • How to execute a java code ...

    how to execute a java code just like in javascript:
    for example in javascript: we can create a function :
    name_fonction=new Function("param1","param2",..., "Instructions");
    but can it be supported in the common java code? how to do it?
    Je suis a little urgent...
    Thanks a lot!!!

    See beanshell
    http://www.beanshell.org/
    which should be include in the next J2SE 6.0 or 7.0.
    See JSR 274 at http://jcp.org/en/jsr/detail?id=274
    --Marc (http://jnative.sf.net)                                                                                                                                                                                                                                                                                                                                                               

  • Running Shell Scripts within Java code!!!

    Hi,
    How do I run a shell script from my Java code???
    Also I need to ensure my next line of Java code is executed only after the shell script has finished executing.
    Since my shell script just cuts out some line for a txt file and then only my Java code parses the cut-out file section and processes certain info.
    Please help!!!
    Thanks!!!

    Runtime.exec and, if you need your Java to stop until the external executable is complete, Process.waitFor.
    And you'll want to read this:
    http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

  • Shell script for executing java program

    i want to write a shell script which will export the classpath and compile & run the java program.
    any references from where i can get that?

    Try typing "man sh" at the command prompt.
    Ultimately it'll end up looking a lot like this:
    #!/bin/sh
    CLASSPATH=/path/to/a.jar:/path/to/anther.jar
    JAVA_HOME=/path/to/where/you/installed/java
    $JAVA_HOME/bin/java your.classes.package.YourClass

  • Execute PL/SQL block with named binds from within java code?

    Hi guys,
    Is there any good way to execute my PL/SQL code, for example
    BEGIN         :x := :x+1; END;
    from my Java code? I need nothing complicated, just static code block with named binds.
    I have tried the Oracle exetnded JDBC (setXXXbyName methods):
      public static void main(String[] args){     try {     Class.forName("oracle.jdbc.driver.OracleConnection");     Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","user","password"); String SQL="begin :x:=:x+1; end;"; OracleCallableStatement stmt; stmt=(OracleCallableStatement)conn.prepareCall(SQL); stmt.setIntAtName("x", 5); stmt.registerOutParameter("x", Types.INTEGER); stmt.execute(); System.out.println(stmt.getInt("x"));     } catch (Exception x) { x.printStackTrace();    }   }
    And get the java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!
    Then i've tried SQLJ appoach:
      public static void main(String[] args){     try {     Class.forName("oracle.jdbc.driver.OracleConnection");     Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","user","password");       Oracle.connect(conn);       System.out.println("Connected!");           int x=3;       #sql { BEGIN         :x := :x+1;       END; };           System.out.println("x=" + x);     } catch (Exception x) { x.printStackTrace();    }   }
    And x=3 had retuned... Although 4 expected.
    Then, I've set parameter sqlj.bind-by-identifier=true
    And result is another exception! java.sql.SQLException: Missing IN or OUT parameter at index:: 2
    Can you please mark my mistakes/point to correct solution?
    Thanks in advance,
    Alexey

    Found another solution, this time working at least...
      public void testPLSQL() {
           String dynamicSQL=
                "declare\n" +
                "  v_CursorID  INTEGER;\n" +
                "  v_BlockStr  VARCHAR2(500);\n" +
                "  v_Dummy     INTEGER;\n" +
                "  v_x         String(18);\n" +
                "BEGIN\n" +
                "  v_CursorID := DBMS_SQL.OPEN_CURSOR;\n" +
                "  v_BlockStr :=?;" +
                "  DBMS_SQL.PARSE(v_CursorID, v_BlockStr, DBMS_SQL.V7);\n" +
                "  v_x:=?;"+
                "  DBMS_SQL.BIND_VARIABLE(v_CursorID, ':x', v_x,18);\n" +
                "  v_Dummy := DBMS_SQL.EXECUTE(v_CursorID);\n" +
                "  DBMS_SQL.VARIABLE_VALUE(v_CursorID, ':x', v_x);\n" +
                "  DBMS_SQL.CLOSE_CURSOR(v_CursorID);\n" +
                "  ?:=v_x;"+
                "  COMMIT;\n" +
                "EXCEPTION\n" +
                "  WHEN OTHERS THEN\n" +
                "    DBMS_SQL.CLOSE_CURSOR(v_CursorID);\n" +
                "    RAISE;\n" +
                "END DynamicPLSQL;";
             try {
                   Class.forName("oracle.jdbc.driver.OracleConnection");
                   Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","user", "password");
                   System.out.println("Profit");
         String SQL="begin :x:=:x+1; end;";
         OracleCallableStatement stmt;
         stmt=(OracleCallableStatement)conn.prepareCall(dynamicSQL);
         stmt.setString(1, SQL);
         int x=3;
         stmt.setInt(2, x);
         stmt.registerOutParameter(3,     Types.INTEGER);
         stmt.execute();
         x=stmt.getInt(3);
         System.out.println(x);
         assertEquals(4, x);
             } catch (Exception ex) {
                  ex.printStackTrace();
                  assertTrue(false);
      }Now the only thing I need is to code some kind of preprocessor of SQL block, to prepare the dynamicSQL lair for SQL critter...
    Please please please show me something less complicated! :8}

  • Using a UNIX shell script to run a Java program (packaged in a JAR)

    Hi,
    I have an application (very small) that connects to our database. It needs to run in our UNIX environment so I've been working on a shell script to set the class path and call the JAR file. I'm not making a lot of progress on my own. I've attached the KSH (korn shell script) file code.
    Thanks in advance to anyone who knows how to set the class path and / or call the JAR file.
    loggedinuser="$(whoami)"
    CFG_DIR="`dirname $0`"
    EXIT_STATUS=${SUCCESS}
    export PATH=/opt/java1.3/bin:$PATH
    OLDDIR="`pwd`"
    cd $PLCS_ROOT_DIR
    java -classpath $
    EXIT_STATUS=$?
    cd $OLDDIR
    echo $EXIT_STATUS
    exit $EXIT_STATUS

    Hi,
    I have an application (very small) that connects to
    our database. It needs to run in our UNIX environment
    so I've been working on a shell script to set the
    class path and call the JAR file.
    #!/bin/sh
    exec /your/path/to/java -cp your:class:paths:here -MoreJvmOptionsHere your.package.and.YourClass "$@"Store this is a file of any name, e.g. yuckiduck, and then change the persmissions to executechmod a+x yuckiduckThe exec makes sure the shell used to run the script does not hang around until that java program finishes. While this is only a minor thing, it is nevertheless infinite waste, because it does use some resources but the return on that investment is 0.
    CFG_DIR="`dirname $0`"You would like to fetch the directory of the installation out of $0. This breaks as soon as someone makes a (soft) link in some other directory to this script and calls it by its soft linked name. Your best bet if you don't know a lot of script programming is to hardcode CFG_DIR.
    OLDDIR="`pwd`"
    cd $PLCS_ROOT_DIRVery bad technique in UNIX. UNIX supports the notion of a "current directory". If your user calls this program in a certain directory, you should assume that (s)he does this on purpose. Making your application dependent on a start in a certain directory ignores the very helpful concept of 'current directory' and is therefore a bug.
    cd $OLDDIRThis has no effect at all because it only affects the next two lines of code and nothing else. These two lines, however, don't depend on the current directory. In particular this (as the cd above) does not change the current directory for the interactive shell your user is working in.
    echo $EXIT_STATUS
    exit $EXIT_STATUSEchoing the exit status is an interesting idea, but if you don't do this for a very specific purpose, I recommend not to do this for the simple reason that no other UNIX program does it.
    Harald.

  • Unix shell script wont execute from ODI

    Hi All.
    I have an interface that calls a shell script to append a record number to a flat file. The shell script is  called by the Execute OS command action.
    This works fine in our dev environment as we have migrated the code to a new environment it no longer works.
    The error I'm getting from the session task is "wrong process code: 127" and from the session step
    ODI-1226: Step Append Record Number into the file fails after 1 attempt
    ODI-1242: Operating System command execution fails
    I'n calling the shell script as below:
    sh xxc_rms_append_record_number.sh
    The shell is in the same directory as the agent i.e. agent/bin
    Thanks in adavance
    Guy

    Hi ,
    I assume you are using ODI 11g.
    Please try / check the below steps --
    1> Try to use OdiOsCommand instead of OSCommand .
    2> Try to execute the shell script in the directory in the path you want to run (not from ODI)
    3> Recheck the path whether you should run in that directory or not (Environment wise directory can be changed)
    Thanks

  • Unix shell script should execute (run) webI report.

    Hi
    i am new to BO.
    I have webI reports developed, can any one tell me how  to execute a webI reprot using unix sheel script.

    Hello Vijaya,
    Thatu2019s an interesting question.  BusinessObjects does not supply any native UNIX shell interfaces or scripts for running/executing Webi Reports. Not knowing what it is you are exactly trying to accomplish Iu2019ll give a very general answer.
    I have had several customers who had requirements to have external systems execute, refresh and export reports in BusinessObjects Enterprise before.  These external systems could execute a shell script so what they have ended up doing is creating generic Java applications that use the BusinessObjects BOE Java SDK. Once they had the Java application created their external application could execute a java directory or they created shell wrappers that were called.  So what you could do is create some Java applications that wrap the functionally you need and then execute those from the command line.
    With that said there is a lot of functionally built into BusinessObjects Enterprise.  If I was to know exactly what you were trying to achieve I might be able to point you in the direction of an existing product feature.
    Cheers,
    David.

  • Execution of remote shell scripts(on AIX ) from Java Application

    import java.io.BufferedReader;
    import java.io.PrintWriter;
    import java.io.InputStreamReader;
    import java.io.IOException;
    public class Test
         public static void main(String args[])
         throws Exception
              String str = "xxxxxx";
              Runtime rt = Runtime.getRuntime();
              Process p = rt.exec("rsh -l raman 172.16.12.10 ");
              BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
              PrintWriter pw = new PrintWriter(p.getOutputStream());
              pw.println(str);
              pw.println("ls -l");
              pw.flush();
              pw.close();
              while ((str = br.readLine()) != null) {
                   System.out.println(str);
    Hi All,
    I want to login into the remote AIX server and want to execute the shell
    scripts which are available at AIX server.Above program is not executing
    kindly if u have any answer provide me..
    regards
    Rama

    Try JRexec library:
    http://www.jcraft.com/jrexec/

Maybe you are looking for

  • OLAP performance issue with Webi

    After lots of research I haven't found good information anywhere. We are an SAP shop, run SAP ECC, BW with BWA and for the last couple of years Business Objects as well. Since we are a utility company, our reporting needs for a good majority of our a

  • Linux Installation- I can't find the required install script

    I'm trying to follow the LabVIEW installation guide for Linux, but I am having trouble. This post will be kind of long, as I will try to tell you everything I have done so far. I'm also kind of new to Linux, so I'm sure there are many things I don't

  • I can't use ios 5.1 what i do?????

    i can't update ios 5.1 when update itune error says Recycle Bin empty and i can't  erase all content and settings when i do my phone will hang

  • Capturing OnLocation to a SAN drive

    Is anyone capturing through OnLocation to a network drive under a SAN? I'm talking SAN, Storage Area Networking like Fibre or iSCSI, and not NAS, Network Attached Storage like some cheap ethernet box. Why do I ask this? I recon that this may be the b

  • Error in VAT registration No

    Hi I am getting an error for vat registration no while putting the data in Vendor master data(xk01) for country GB,have checked the country Settings to,the Length of digits is 14 whereas i am putting 11 digits Error : Vat Registration No Invaild Than