Zum Inhalt springen

Shell Script mit Java aufrufen


Empfohlene Beiträge

Geschrieben

Hi Leute,

wie kann ich denn ein Shell Script aus einem Java Servlet heraus aufrufen? :confused:

--> HTML Seite mit Button --> Button wird gedruckt --> Servlet wird ausgeführt --> Shell Script wird aufgerufen

Vielen Dank für eure Hilfe,

ciao

clavo

Geschrieben

Ich habe das selber noch nicht ausprobiert und habe daher auch kein Beispiel:

Ich gehe mal davon aus, dass du in deinem Servlet mit der doGet() methode arbeitest, ansonsten eben mit der doPost(), oder was auch immer. Jedenfalls fügst du im Servlet mal folgende Zeile ein, und ersetzt eben an der entsprechenden stelle... (ich denke das mußt du mit voller Pfadangabe machen, damit die VM dann auch das Script findet).

...

java.lang.Runtime.getRuntime().exec("und hier den Aufruf, so wie du ihn in der COmmandLine eintippen würdest");

...

Geschrieben

package de.wmc.bstbl;

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Shell extends HttpServlet {

public void doPost (HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {

doGet(request, res);

}

public void doGet (HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {

// Shell Aufruf

java.lang.Runtime.getRuntime().exec("Aufruf wie in der CmmandLine");

}

}

Geschrieben

Nochmal zur Erläuterung, sorry!

Ich habe ein ShellScript, welches ich von einer HTML Seite aus aufrufen muss. Über einen Button auf der HTML Seite soll das Servlet gestartet werden, welches den Aufruf zum Öffnen der *.SH Datei enthält.

DANKE

clavo

Geschrieben

ALso wie du das mit dem Button machst lasse ich jetzt mal Außenvor. Davon habe ich nicht so die Ahnung.

Aber mal zu den Grundlagen. Die doGet methode wird aufgerufen, wenn du das Servlet einfach so im Browser aufrufst, oder einen redirect auf die entsprechende stelle machst (halt so, wie du den url im Tomcat angegeben hast).

Die doPost() methode, wird aufgerufen, wenn du ein html-Formular hast und als action das Servlet angibst mit der method post.

Normalerweise macht man es dann so, dass das Servlet, sollte es zum Beispiel die doPost methode nicht unterstützen, dass man dann an den Browser eine req.sendError(...) zurückgibt, der entsprechendes bewirkt.

Es kann aber durchaus sein, dass dein Aufruf so auch funktioniert. Du leitest ja einfach nur alles an die doGet() um.

Jetzt mußt du eben nur noch den Text in "" durch den shell-Aufruf ersetzten und dann funktioniert es hoffentlich. Im Pfad mußt du mal ein wenig mit // und \\ rumprobieren. Ich glaube einen Backslash mußt du dann doppelt setzen, um den zu maskieren, oder so...

Geschrieben

Den Aufruf wie in der CommandLine muss ich noch einfügen, doch folgender Wust kommt wenn ich meinen Button (Aufruf des Servlets) drücke:

Error: 500

Location: /servlet/de.wmc.bstbl.Shell

Internal Servlet Error:

java.io.IOException: CreateProcess: Aufruf wie in der CmmandLine error=2

at java.lang.Win32Process.create(Native Method)

at java.lang.Win32Process.(Win32Process.java:66)

at java.lang.Runtime.execInternal(Native Method)

at java.lang.Runtime.exec(Runtime.java:551)

at java.lang.Runtime.exec(Runtime.java:418)

at java.lang.Runtime.exec(Runtime.java:361)

at java.lang.Runtime.exec(Runtime.java:325)

at de.wmc.bstbl.Shell.doGet(shell.java:19)

at de.wmc.bstbl.Shell.doPost(shell.java:12)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)

at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:597)

at org.apache.tomcat.servlets.InvokerServlet.service(InvokerServlet.java:257)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)

at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)

at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)

at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)

at java.lang.Thread.run(Thread.java:484)

Geschrieben
Original geschrieben von clavo

Error: 500

Location: /servlet/de.wmc.bstbl.Shell

Internal Servlet Error:

java.io.IOException: CreateProcess: Aufruf wie in der CmmandLine error=2

at java.lang.Win32Process.create(Native Method)

at java.lang.Win32Process.(Win32Process.java:66)

at java.lang.Runtime.execInternal(Native Method)

at java.lang.Runtime.exec(Runtime.java:551)

at java.lang.Runtime.exec(Runtime.java:418)

at java.lang.Runtime.exec(Runtime.java:361)

at java.lang.Runtime.exec(Runtime.java:325)

at de.wmc.bstbl.Shell.doGet(shell.java:19)

at de.wmc.bstbl.Shell.doPost(shell.java:12)

at javax.servlet.http.HttpServlet.service(Ht

Jo, und das besagt für mich nix anderes, als dass dein Betriebssystem nix mit "Aufruf wie in der CmmandLine" anfangen kann. Setz mal was richtiges ein!

Geschrieben

:WD

Ok, danke schonmal!

Ich bin jetzt bis um 13:15 beim Essen und werde dann mal ein ShellScript damit verbinden und den richtigen Aufruf einfügen. Wenn es an meinem Rechner nicht funzt geh ich auf ne Unix Maschine.

bis gleich! DANKE (ich hoff`du bist dann auch noch da)

ciao, Mahlzeit

clavo

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...