2013-08-11 64 views
6

Tôi đã triển khai một công cụ nhỏ java sniffer với jpcap. Cho đến nay nó hoạt động tốt, nhưng nó cần quyền root để có được quyền truy cập vào các thiết bị mạng. Trong trường hợp của tôi xuất dự án của tôi để một jar Runnable, tôi có thể chạy nó bằng cách sử dụng sudo trong terminal:chạy jar với các đặc quyền root trên mac os x bằng một cú nhấp chuột

$ sudo java -jar littleSniffer.jar 

Có ai biết một "một cú nhấp chuột" -solution để chạy jar Runnable tôi với quyền root. Tôi muốn đưa công cụ đó cho đồng nghiệp của tôi, và tôi sẽ bắt đầu nó mà không cần sử dụng thiết bị đầu cuối. Có thể bằng cách sử dụng ứng dụng tự động?

Trả lời

7

Hãy thử một cái gì đó như thế này:

Nếu bạn hài lòng với thiết bị đầu cuối, chỉ cần tạo một file mới và đưa vào một cái gì đó như thế này:

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

và lưu các tập tin như blah.command (các. tiện ích mở rộng lệnh chạy tệp sh trong thiết bị đầu cuối khi nhấp đúp).

Nếu bạn muốn một cái gì đó một chút đẹp hơn, bạn có thể sử dụng lệnh osascript như thế này:

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

nào sẽ sử dụng một yêu cầu GUI cho mật khẩu gốc.

Chú ý: Nếu tập tin .command của bạn không hoạt động, bạn có thể cần phải:

chmod +x blah.command 

để làm cho nó Runnable.

+0

Có vẻ tốt. Cách tiếp cận osascript được mô tả trong câu trả lời là http://stackoverflow.com/a/2714651/274350 và có một số gợi ý tốt khác về câu hỏi đó. –

0

Thử nhúng JAR vào tập lệnh shell bằng cách sử dụng uuencode/uudecode. Tạo một kịch bản shell gọi littleSniffer.command với các dòng sau đây trong nó:

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

Sau đó, chạy uuencode -m littleSniffer.jar littleSniffer.jar >> littleSniffer.command để nhúng các JAR bên trong kịch bản.

+1

Có lẽ đó chỉ là tôi, nhưng kịch bản của bạn không có ý nghĩa. Bạn có thể giải thích nó làm gì không? Cảm ơn. –

+1

@ GáborBakos Nó loại bỏ bất kỳ tệp JAR nào trước đó (ví dụ nếu tập lệnh bị gián đoạn), giải mã chính nó (uudecode không giải mã toàn bộ tập lệnh, có dấu 'bắt đầu' và 'kết thúc'), chạy tệp JAR và sau đó loại bỏ nó. – Mitsos101