- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 javafx 开发应用程序,我正在尝试在终端中使用命令打开一个应用程序,我正在使用我的 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","-c","echo tester| sudo -S",a.getAbsolutePath(),"--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。
Sudoers 可以通过命令 visudo
进行编辑。看这里作为一个例子,它是如何在 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 开始。
应用应该改用授权服务。
引用资料:
关于java - 如何在 Java 中为 OS X 运行 sudo 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388236/
sudo 命令 1、sudo 简介 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户
我正在尝试更改 source.list。 主机有一个用户 deploy 和密码 deploy 我可以连接 ssh 并使用 sudo 对 source.list 进行任何操作。然而 ansible 似乎
我希望以我当前用户的权限运行 TOMCAT,而不是 root 的环境变量。 vagrant@dev:~/Workspace/eurekastreams$ echo $JAVA_OPTS -Xmx102
这个问题在这里已经有了答案: How to install python modules without root access? (9 个回答) 3年前关闭。 最终目标是在 redhat 机器上的
我一直在尝试允许 EC2 亚马逊服务器('ec2-user')的普通用户访问某个库。 我做了:“sudo chown -R ec2-user/usr”,我现在意识到这是一个致命的错误。它起作用了,但是
我正在尝试使用 cgi (python) 配置 apache2。为此,我必须更改某些文件夹和文件的权限,但每次尝试更改文件或文件夹的权限时,我都会收到 sudo fatal error 。 例如: 1
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我不想在 sudoers 文件中禁用 requiretty。请建议当我在 cron 作业中执行脚本时是否有其他方式启动终端 最佳答案 这可能是一个奇怪的解决方法,但您可以使用 -t 选项通过 cron
寻找将当前用户的别名传递给 sudo 的方法命令,我找到了以下 on ArchWiki : Passing aliases If you use a lot of aliases, you might
我已将 Royal TS 设置为在多台 Linux 计算机上使用我的用户名自动登录。我想让它在连接后自动运行 sudo su -,输入我的密码,这样只需双击连接即可获得 root 权限。 我已经通过创
我正在尝试使用涉及使用 sudo 的子进程。 它在终端中运行良好: sudo /home/pi/Desktop/fm_transmitter/bin/Release/fm_transmitter
我想通过 ssh 连接到远程服务器,更改用户然后执行脚本。我正在使用 subprocess 来执行此操作,但似乎 sudo -u userB -i 并未更改用户。 HOST = 'remote_ser
我正在尝试使用 Ansible 来配置一个 Vagrant 框和一个 EC2 服务器。使用 --connection=local 时,它在 Vagrant 框上工作正常,但似乎只是忽略了 sudo:
嗨,我为 Ansible 编写了一个剧本来安装一些应用程序。我遇到了麻烦,因为我必须以 root 身份运行所有东西,这不是一个好主意。 所以我创建了一个 sudo 用户并创建了一个用于身份验证的私钥。
我想通过 electron 写一个应用程序,但要求是更新需要 root 的文件允许。 通过 cli 很容易实现,就像 sudo vi xxx . 是否可以通过 electron 更新文件? ? 最佳答
我已经安装了以下 pkgs: ii tigervnc-common 1.10.1+dfsg-1 amd
我有一个经销商 Web 服务器,正在将其迁移到新计算机中。源服务器所有者提供了一个用户(我们称之为用户 A),该用户对其他用户具有 sudo 访问权限,但对 root 没有权限。我的用户没有对我需要提
use std::fs::OpenOptions; use std::io::Write; fn main() { let mut source_list = OpenOptions::new
我正在尝试使用命令 sudo jupyterhub 启动 JupyterHub。这会启动服务器,但用户无法登录。但是,当我使用 sudo -s 切换到 root 用户,然后输入 jupyterhub
我正在尝试安装 pip,但我在 StackOverflow 中陷入了相互冲突的答案中(请阅读末尾的评论以了解重复的问题)。 instructions说下载get-pip.py并使用 phyton 运行
我是一名优秀的程序员,十分优秀!