Передайте пароль sudo для команды, которая ожидает ввода - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать сценарий оболочки и (чтобы не вводить текст, к тому же пока игнорируем вопросы, связанные с безопасностью), хочу напрямую передать пароль команде "sudo", например,

pword="mypassword"
echo $pword | sudo -S whoami

Thisработает просто отлично.Но теперь, когда сама команда ожидает ввода, этот метод, похоже, не работает, например,

echo $pword | sudo -S cat<<<"Hello"

Это приведет к ошибке «неверный пароль».В настоящее время мое решение состоит в том, чтобы сначала запустить «фиктивную команду», как в примере 1, и использовать тот факт, что для второй команды система больше не запрашивает пароль.Однако кто-нибудь знает лучшее решение, чтобы заставить его работать?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете отложить активацию "здесь документа" (конструкция <<<), выполнив что-то вроде этого:

  echo $pw | sudo -S sh -c ' cat <<<"Hello" '

Лучшее решение - использовать sudo -A вместо sudo -Sпосле определения переменной среды $SUDO_ASKPASS для ссылки на программу, которая выдаст ваш пароль.Тогда вам не придется беспокоиться о борьбе за стандартный ввод с остальной частью командной строки.Вы должны создать эту программу Askpass (это может быть сценарий оболочки), чтобы она была читаемой, записываемой и выполняемой только вами, чтобы ваш пароль был надежно скрыт внутри программы.

...