Scala 使用“sudo”运行have sbt task launch子流程的安全方法`
我正在用SBT编写一些DevOps脚本,我需要一个任务,通过Scala 使用“sudo”运行have sbt task launch子流程的安全方法`,scala,scripting,sbt,Scala,Scripting,Sbt,我正在用SBT编写一些DevOps脚本,我需要一个任务,通过sudo启动一个子流程,用户可以通过sudo提示符安全地键入密码。sbt中是否有一种方法允许子进程临时但完全捕获控制台的stdin,并通过密码击键传递到sudo 我没有在SBT中看到这一点,但我可以建议在sudoers列表中添加用户(或用户组)和命令,这样它就不会提示输入密码 我从SBT运行一些Docker任务时非常成功地做到了这一点 例如,在build.sbt中: docker := { (test in Test).value
sudo
启动一个子流程,用户可以通过sudo
提示符安全地键入密码。sbt中是否有一种方法允许子进程临时但完全捕获控制台的stdin
,并通过密码击键传递到sudo
我没有在SBT中看到这一点,但我可以建议在sudoers列表中添加用户(或用户组)和命令,这样它就不会提示输入密码
我从SBT运行一些Docker任务时非常成功地做到了这一点
例如,在build.sbt
中:
docker := {
(test in Test).value
(stage in Docker).value
"./docker-stuff.sh" !
}
…然后docker stuff.sh
有sudo
命令。简短回答
您可以在build.sbt
或build.scala
中使用以下代码:
import sbt.Process
val sudo = taskKey[Unit]("Executes commands with sudo!")
sudo := {
Process("sudo ls /", new File(".")).!<
}
在这种情况下,将使用正在运行的Java进程的当前工作目录作为工作目录。谢谢您的想法。不幸的是,在我的用例中,我不能强迫用户进行这样的系统更改。回答得很好!谢谢
sudo := "sudo ls /".!<