2013-08-11 16 views
6

Ho implementato un piccolo strumento sniffer java con jpcap. Finora funziona bene, ma ha bisogno dei privilegi di root per accedere ai dispositivi di rete. In caso di posso esportare il mio progetto per un barattolo eseguibile, posso eseguirlo utilizzando sudo nel terminale:esegui jar con i privilegi di root su mac os x con un clic

$ sudo java -jar littleSniffer.jar 

Qualcuno conosce un "one click" -solution di eseguire il mio vaso eseguibile con privilegi di root. Voglio dare questo strumento ai miei compagni di lavoro, e sarebbe bello che potessero avviarlo senza usare il terminale. Forse usando l'app di Automator?

risposta

7

provare qualcosa di simile:

Se si è soddisfatti con il terminale, basta creare un nuovo file e mettere in qualcosa di simile:

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

e salvare il file come blah.command (la. command extension esegue il file sh nel terminale con doppio clic).

Se volete qualcosa di un po 'più bello, è possibile utilizzare il comando osascript in questo modo:

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

che utilizzerà una richiesta GUI per la password di root.

NOTA: Se il file .command non è in esecuzione, potrebbe essere necessario:

chmod +x blah.command 

per renderlo eseguibile.

+0

Sembra buono. L'approccio osascript è descritto nella risposta come http://stackoverflow.com/a/2714651/274350 e ci sono altri buoni suggerimenti su quella domanda. –

0

Provare a incorporare il JAR in uno script di shell usando uuencode/uudecode. Creare uno script shell chiamato littleSniffer.command con le seguenti linee in esso:

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

Quindi eseguire uuencode -m littleSniffer.jar littleSniffer.jar >> littleSniffer.command per incorporare il JAR all'interno dello script.

+1

Probabilmente sono solo io, ma il tuo script non ha senso. Potresti elaborare quello che fa? Grazie. –

+1

@ GáborBakos Rimuove qualsiasi file JAR precedente (ad esempio se lo script è stato interrotto), decodifica se stesso (uudecode non decodifica l'intero script, ci sono i segni 'inizio' e 'fine'), esegue il file JAR e quindi lo rimuove. – Mitsos101