Как уже упоминалось, ребята, вы можете использовать sudo
, только если ваше текущее использование настроено в системе как то, которое может работать sudo
. В противном случае (в общем случае) вы должны ввести пароль.
Вам необходимо ввести пароль, если вы хотите запускать команды на удаленных компьютерах, а также с помощью ssh
или удаленно копировать файлы с помощью scp
.
Некоторые команды могут принимать пароль в качестве параметра командной строки. Например, утилита mysql
может принять пароль после переключения -p
. Некоторые другие команды более строгие: они не исключают пароль в командной строке и даже не позволяют вводить пароль через перенаправление ввода stdin процесса. Примерами являются ssh
и scp
.
Единственный способ убедиться, что вы всегда можете программно запустить любую команду, требующую ввода пароля, - это эмулировать терминал. Это то, что делает утилита expect
. Взгляните на его справочную страницу: http://linux.die.net/man/1/expect
Я использовал expect
в прошлом. это утилита, управляемая сценариями, которая позволяет имитировать действия пользователя точно так же, как это делает пользователь, когда он работает с терминалом. Мы запустили ожидаемый скрипт из java как обычный внешний процесс, используя ProcessBuilder
.