如何在java中为OS X运行sudo命令
我正在使用
javafx中的app,我正在尝试使用终端中的命令打开一个应用程序,我正在使用我的java代码运行命令我的命令有一些变量它有我的安装程序文件的路径,因为文件名不会总是相同可以在更新构建时有所不同.
这是一个示例,因为我正在运行命令它不是我正在运行的确切命令,但命令格式是相同的. Process process = Runtime.getRuntime().exec("echo password | sudo -S open -a safari"); String line; BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); 该过程没有给出任何输出它停在那里没有任何反应. 我已尝试过此链接中提到的内容 How to execute bash command with sudo privileges in Java? 但它也没有奏效. 我也从我的java代码运行像“chmod x”这样的命令这些命令运行正常. runCommand = "echo" + " " + password + "| sudo -S " + """ + a.getAbsolutePath() + """ + " --deploymentFile=" + """ + b.getAbsolutePath() + """; 其中a.getAbsolutePath()是安装程序文件的路径,b.getAbsolutePath()是我们用于安装应用程序的部署文件的路径. pb.getInputStream() 打印命令,当我复制并粘贴它是终端它运行正常. pb.getErrorStream() 不给任何东西. 我试过跑步 String[] cmd = {"/bin/bash","-c","echo tester| sudo -S ",""",a.getAbsolutePath()," --deploymentFile=",b.getAbsolutePath()}; 和 String[] cmd = {"/bin/bash","echo tester| sudo -S","--deploymentFile=",b.getAbsolutePath()}; 也 getErrorStreamusage: sudo -h | -K | -k | -L | -V getErrorStreamusage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user name|#uid] getErrorStreamusage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u getErrorStream user name|#uid] [-g groupname|#gid] [command] getErrorStreamusage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user getErrorStream name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>] getErrorStreamusage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user getErrorStream name|#uid] file ... 解决方法
须藤
我强烈建议编辑sudoers文件并允许运行应用程序的用户通过sudo使用特定命令而不提示输入密码而不是使用echo passwd sudo …建设. 这样就可以避免在应用程序或配置文件中以明文(或最好稍微混淆)存储密码,并且您无需使用调用sudo等的shell脚本调用shell. 可以通过命令visudo编辑Sudoers.在这里看一下如何在unbuntu上完成它,但在任何unix上都是一样的. https://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password 补充参考号:https://www.sudo.ws/man/1.8.16/sudoers.man.html 我觉得你问的是错误的问题…… 在mac上授权 在需要执行需要额外权限的操作的mac应用程序上,不应该使用sudo来开始. 应用程序应该使用授权服务. 参考文献: > Introduction to Authorization Services Programming Guide (apple) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – Android架构蓝图“todo-mvp-dagger”,其中是@Provi
- java – 将ServletOutputStream读取到String
- java – Android BroadcastReceiver onReceive更新MainActi
- java – PrimeFaces 3.0 – 当树在a中时节点选择中的异常
- Perforce挂起的更改列表差异脚本
- android文件下载代码
- java – Android:如何从服务器日期开始构建日期
- 如何使用notify-send向另一个用户发送通知?巴什
- java – 我应该在代码中添加ActionListener的方式和位置?
- 如何在JavaFX Thread之外更新TableView项