2013-08-11 10 views
6

Ich habe ein kleines Java-Sniffer-Tool mit jpcap implementiert. Bis jetzt funktioniert es gut, aber es benötigt Root-Rechte, um Zugang zu den Netzwerk-Geräten zu erhalten. Im Falle der ich mein Projekt in ein lauffähiges Glas exportieren, kann ich es durch die Verwendung sudo in Terminal ausführen:run jar mit root-Rechten auf mac os x mit einem Klick

$ sudo java -jar littleSniffer.jar 

Hat jemand weiß, ein „one click“ -Lösung mein runnable jar mit Root-Rechten auszuführen. Ich möchte dieses Werkzeug meinen Arbeitskollegen geben, und es wäre nett, wenn sie es ohne das Terminal starten könnten. Vielleicht mit der Automator App?

Antwort

7

so etwas wie dieses Versuchen:

Wenn Sie mit Terminal zufrieden sind, nur eine neue Datei erstellen und in etwas so:

#!/bin/sh 
sudo java -jar littleSniffer.jar 

und speichern Sie die Datei als blah.command (die. Befehlserweiterung führt die SH-Datei im Terminal mit Doppelklick aus).

Wenn Sie etwas ein bisschen schöner möchten, können Sie den Befehl osascript wie folgt verwenden:

#!/bin/sh 
osascript -e "do shell script \"java -jar littleSniffer.jar\" with administrator privileges" 

, die eine GUI Anforderung für das Root-Passwort verwenden.

HINWEIS: Wenn Ihr .command Datei nicht ausgeführt wird, müssen Sie eventuell:

chmod +x blah.command 

es runnable zu machen.

+0

Sieht gut aus. Der osaskript-Ansatz wird in der Antwort als http://stackoverflow.com/a/2714651/274350 beschrieben und es gibt auch andere gute Vorschläge zu dieser Frage. –

0

Versuchen Sie, das JAR mithilfe von uuencode/uudecode in ein Shell-Skript einzubetten. ein Shell-Skript erstellen littleSniffer.command mit den folgenden Zeilen in ihm genannt:

#!/bin/bash 
rm -f littleSniffer.jar 
uudecode $0 
sudo java -jar littleSniffer.jar 
rm -f littleSniffer.jar 
exit 

Dann laufen uuencode -m littleSniffer.jar littleSniffer.jar >> littleSniffer.command um die JAR im Skript einzubetten.

+1

Wahrscheinlich ist es nur ich, aber dein Skript macht einfach keinen Sinn. Könnten Sie erläutern, was es tut? Vielen Dank. –

+1

@ GáborBakos Es entfernt alle vorherigen JAR-Dateien (zum Beispiel, wenn das Skript unterbrochen wurde), dekodiert sich selbst (Uudecode dekodiert nicht das gesamte Skript, gibt es 'Anfang' und 'Ende'), führt die JAR-Datei und dann entfernt es. – Mitsos101