【问题标题】:run jar with root privileges on mac os x by one click一键在mac os x上以root权限运行jar
【发布时间】:2013-08-11 20:13:46
【问题描述】:

我用jpcap 实现了一个小型Java 嗅探器工具。到目前为止,它运行良好,但它需要 root 权限才能访问网络设备。如果我将项目导出到可运行的 jar,我可以在终端中使用 sudo 运行它:

$ sudo java -jar littleSniffer.jar 

有没有人知道“一键式”解决方案以 root 权限运行我的可运行 jar。我想将该工具提供给我的同事,如果他们可以在不使用终端的情况下启动它,那就太好了。也许通过使用自动化应用程序?

【问题讨论】:

    标签: jar root jpcap


    【解决方案1】:

    试试这样的:

    如果您对终端感到满意,只需创建一个新文件并输入如下内容:

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

    并将文件另存为 blah.command(.command 扩展名通过双击在终端中运行 sh 文件)。

    如果你想要更好的东西,你可以像这样使用 osascript 命令:

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

    这将使用 GUI 请求获取 root 密码。

    注意:如果您的 .command 文件没有运行,您可能需要:

    chmod +x blah.command
    

    使其可运行。

    【讨论】:

    【解决方案2】:

    尝试使用 uuencode/uudecode 将 JAR 嵌入到 shell 脚本中。 创建一个名为 littleSniffer.command 的 shell 脚本,其中包含以下行:

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

    然后,运行uuencode -m littleSniffer.jar littleSniffer.jar >> littleSniffer.command以便将 JAR 嵌入到脚本中。

    【讨论】:

    • 可能只有我一个人,但你的脚本没有意义。你能详细说明它的作用吗?谢谢。
    • @GáborBakos 它删除任何以前的 JAR 文件(例如,如果脚本被中断),自行解码(uudecode 不会解码整个脚本,有“开始”和“结束”标记),运行 JAR 文件,然后将其删除。
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2014-07-15
    • 2012-02-21
    • 2010-09-09
    • 1970-01-01
    • 2011-10-15
    • 2010-11-25
    相关资源
    最近更新 更多