Как использовать sudo в аммонитовой оболочке "
Одна вещь, которая отвлекает от Scala REPL, это то, что нет прямого способа загрузки зависимостей maven/sbt.
Я нашел раковину аммонита, которая имеет удобную вещь, как load.ivy
что довольно мило у этого также есть приличная обертка по файловой системе.
Однако я не нашел способ сделать sudo. Так, например, если я перебираю файлы в каталоге и у меня нет разрешения на папку, команда не выполняется
ls.rec! cwd | (x => x.size -> x.last) sortBy (-_._1) take 3
ошибка
java.nio.file.AccessDeniedException: /Users/foo/Library/Saved Application State/com.bitrock.appinstaller.savedState
sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:407)
java.nio.file.Files.newDirectoryStream(Files.java:457)
Кто-нибудь знает, как сделать sudo в аммонитовой оболочке?
1 ответ
Существует несколько способов предоставить пароль для sudo из вызовов процесса JVM:
- Как выполнить команду bash с привилегиями sudo в Java?
- Как запустить команду sudo без пароля из Java-программы?
- Выполните команду оболочки linux с "sudo", используя java, не вводя требуемый пароль
- Как ввести пароль для sudo, используя Java Runtime?
Лично я нашел самое простое решение - установить SUDO_ASKSPASS
переменная окружения. Что-то вроде
val sudo = "sudo"
val askPass = "/usr/bin/ssh-askpass"
val procBuilder = Process(List(sudo, "-A", ???), None, "SUDO_ASKPASS" -> askPass)
val res = procBuilder.!