2013-08-11 11 views
6

Zaimplementowałem małe narzędzie sniffer dla java z jpcap. Do tej pory działa dobrze, ale potrzebuje uprawnień roota, aby uzyskać dostęp do urządzeń sieciowych. W przypadku wyeksportować projekt do runnable słoik, mogę go uruchomić za pomocą sudo w terminalu:Uruchom jar z uprawnieniami roota na Mac OS x jednym kliknięciem

$ sudo java -jar littleSniffer.jar 

Czy ktoś zna „jednego kliknięcia” -solution uruchomić mój słoik runnable z uprawnieniami roota. Chcę dać to narzędzie moim kolegom z pracy i byłoby mi miło, że mogliby zacząć to bez użycia terminala. Może za pomocą aplikacji automatyzacji?

Odpowiedz

7

Spróbuj czegoś takiego:

Jeśli jesteś zadowolony z terminalu, wystarczy utworzyć nowy plik i umieścić w coś takiego:

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

i zapisz plik jako blah.command (the. rozszerzenie polecenia uruchamia plik SH w terminalu po dwukrotnym kliknięciu).

Jeśli chciałbyś coś nieco ładniejszy, można użyć polecenia osascript tak:

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

który wykorzysta wniosek GUI dla hasła root.

UWAGA: Jeśli plik .command nie jest uruchomiony, może być konieczne:

chmod +x blah.command 

aby runnable.

+0

Wygląda dobrze. Podejście osascriptowe jest opisane w odpowiedzi jako http://stackoverflow.com/a/2714651/274350 i istnieją również inne dobre sugestie na temat tego pytania. –

0

Spróbuj osadzić plik JAR w skrypcie powłoki, używając uuencode/uudecode. Utwórz skrypt o nazwie littleSniffer.command z następujących linii w nim:

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

Następnie uruchom uuencode -m littleSniffer.jar littleSniffer.jar >> littleSniffer.command w celu osadzenia JAR wewnątrz skryptu.

+1

Prawdopodobnie to tylko ja, ale twój scenariusz po prostu nie ma sensu. Czy mógłbyś rozwinąć to, co robi? Dzięki. –

+1

@ GáborBakos Usuwa wszystkie poprzednie pliki JAR (na przykład, jeśli skrypt został przerwany), sam dekoduje (uudecode nie dekoduje całego skryptu, są znaczniki "begin" i "end"), uruchamia plik JAR, a następnie usuwa to. – Mitsos101