Reputation: 2421
I am using ProcessBuilder to run a Linux command on a server:
ProcessBuilder pb = new ProcessBuilder("/usr/bin/printf %b", sendMessage,
URL, " @serendipity | /usr/bin/perl /usr/local/bin/foo/bar -u nagios -s");
I am trying to broadcast a message that will be piped to a paging system called bar. But when executing the jar file on the server, I constantly get this:
java.io.IOException: Cannot run program "/usr/bin/printf %b": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at sms_serendipity.sms_serendipity.SmsSendMessage.sendMessage(SmsSendMessage.java:59)
at sms_serendipity.sms_serendipity.SmsSendMessage.randomizeLinks(SmsSendMessage.java:48)
at sms_serendipity.sms_serendipity.SmsParseWeb.regexHttp(SmsParseWeb.java:103)
at sms_serendipity.sms_serendipity.SmsParseWeb.parseXML(SmsParseWeb.java:77)
at sms_serendipity.sms_serendipity.SmsParseWeb.locateWebAudio(SmsParseWeb.java:44)
at sms_serendipity.sms_serendipity.mainClass.main(mainClass.java:11)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 6 more
It's my first time using ProcessBuilder (I have also tried with Runtime.exec() as well). Can someone tell me what I may do to correct the command I am trying to run?
Upvotes: 1
Views: 420
Reputation: 2421
I have figured out a way of getting this working. It took a bit of experimenting but here is what I did.
ProcessBuilder pb = new ProcessBuilder(
"/bin/dash",
"-c",
"/usr/bin/perl /usr/local/bin/foo/bar -u nagios -s " + sendMessage + URL + fooUser,
"/bin/echo");
I had it log the stdout to a text file and confirmed that the broadcast works.
Upvotes: 0
Reputation: 43738
Read the error message carefully: you try to execute the program /usr/bin/printf %b
which of course does not exist.
The program is called /usr/bin/printf
.
Upvotes: 1