Что другие переменные удара доступны во время выполнения, такого как $USER, который может помочь на моем сценарии?

Это связано с вопросом, Почему это обходит пароль SUDO?. В том из респондентов ответил на вопрос потрясающим способом, и очень, очень ясный любому новичку. Теперь вот вопрос, который я, может казаться, не изображаю.

Я записал, сценарий для запуска плагина Firefox VMware (не волноваться. Я бросил это и теперь выполнил vBox очень счастливо. Я оставил VMware для своих серверов :))

Я должен был запустить плагин как sudo, но я также должен был передать аргумент (пароль) ему, который, оказалось, был тем же.

Так, если мой пароль был Hello123, команда была бы: sudo ./myscript.sh hi other Hello123

Работая из командной строки, сценарий попросил бы мой sudo пароль и затем работал бы. Я хотел получить тот пароль и передать его также. Я также хотел работать графически, таким образом, я попробовал gksudo, и существует опция -p это возвращает пароль для переменного присвоения.

Ну, это было кошмаром, потому что я все еще предложить исходный sudo: посмотрите ниже

Find UserName

vUser=$USER
Find password (and hopefully enable sudo)

vP=gksudo -p -D somedescriptiontext echo
Execute command

gksudo ./myscript.sh hi $vUser $vP

И мне все еще предлагают дважды.

Таким образом, моим вопросом является сгиб тримарана:

  1. Есть ли переменная, которую я могу использовать для пароля, точно так же, как существует один для пользователя, $USER?

  2. Есть ли другой способ, которым я должен присваивать значение, получающееся из команды, в которой я имею $vP? Я задаюсь вопросом при выполнении способа, которым у меня есть он, делает это на непосвященной сессии а не текущей, так как я получаю некоторые дополнительные ошибки типа предупреждения на некоторых переменных.

  3. Я пытался использовать Zenity, чтобы просто получить текст, но затем конечно, я не мог передать то значение sudo, таким образом, я мог только использовать его в качестве параметра, который откладывает меня в 2 подсказках.

2
задан 13 April 2017 в 15:24

3 ответа

Вы можете назначить выполнение определенных команд без необходимости ввода пароля с помощью sudo (man visudo). Например, у вас может быть такая строка, если ваше имя пользователя - psusi:

%psusi ALL = NOPASSWD: /usr/local/bin/myscript.sh

Будьте предельно осторожны с предоставлением полностью доверяющего доступа sudo.

0
ответ дан 13 April 2017 в 15:24

Программа, которую вы ищете, называется expect. Вы пишете сценарий, в котором вы говорите программе ожидать определенных подсказок (таких как подсказки пароля), а затем отправляете некоторый ответ через стандартный ввод, такой же, как при вводе с клавиатуры. Я использовал его в прошлом, чтобы обойти надоедливые парольные запросы, от которых я не мог (легко) избавиться.

sudo aptitude install expect
man expect
0
ответ дан 13 April 2017 в 15:24

1) Нет, так как это выдаст ваш пароль кому-либо в вашей системе

2) Возвращаемое значение из gksudo - это целое число, указывающее, было ли в нем ошибка или нет. Ключ -p имеет ПЕЧАТЬ пароля к его стандартному выводу.

3) Почему вы даже пытаетесь получить пароль? Пропустите первый вызов gksudo и просто используйте второй.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: