2016-08-03 2 views
0

ausführen Ich bin ein JSP-Entwickler. Ich muss meine langsam, nicht reagierend, laggy, (Sie bekommen den Punkt) Entwicklung ubuntu "Server" manchmal herunterfahren, wenn seine Tastatur nicht mehr auf Eingabe reagiert. Ich habe Tomcat bereits richtig konfiguriert, und selbst wenn meine Tastatur nicht mehr reagiert, kann ich sie als Server verwenden (Zugriff auf Webseiten, die von Tomcat bedient werden). Meine Idee ist es, eine JSP-Seite zu erstellen, die sudo poweroff aufruft. Aber ich habe keine Ahnung, wie ich das machen soll. Ich habe versuchtWie sudo Poweroff in Java

Runtime.getRuntime.exec("sudo poweroff"); 

aber es funktioniert nicht für mich. Ich habe die sudoers-Datei bereits bearbeitet, damit der tomcat-Benutzer diese Aktion durchführen kann, ohne ein Passwort zu benötigen. Wie kann ich das erreichen?

+0

Dies könnte Ihnen helfen, für Runtime.exec(): http://stackoverflow.com/questions/8877236/unable-to-execute-java-program-from-jsp-using-runtime-getruntime-exec. Wenn Sie sudo benötigen, können Sie ein C-Programm schreiben, das setuid root ist und Poweroff aufruft. – user3486184

+0

Sie können dies nicht tun. Es ist unmöglich – Turtle

+0

Dies ist eine schreckliche Idee, aber Sie wollen 'sudo/sbin/shutdown -h jetzt '. Es wäre wahrscheinlich eine bessere Idee, openssh-server zu installieren und einen Remote-ssh zu verwenden, um es herunterzufahren. –

Antwort

2

Wenn der Benutzer mit Tomcat hat sudo perms (w/oa Passwort), sollte es machbar sein - aber der Anruf sollte wie folgt sein:

Runtime.getRuntime().exec(new String[]{"sudo", "poweroff"});

Der Befehl und Parameter können nicht alle in einer großen Zeichenfolge übergeben werden.

Überprüfen Sie die Dokumentation für weitere Informationen aus: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String[])

PS: Dies ist wahrscheinlich eine schlechte Idee. :)

+0

Die Java-Dokumente haben auch [diese Methode] (https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec (java.lang.String)), so dass Ihre Antwort ist falsch, zumindest nach der Argumentation, die Sie gaben – vikarjramun

+0

Haben Sie es versucht? Die Methode, auf die Sie verweisen, ist für einen Befehl ohne Parameter. – Larry