Сценарий BASH - Как имитировать ввод пароля пользователем

Я пытаюсь создать сценарий bash, используемый для разблокировки внешнего диска, который защищен паролем с помощью проприетарного программного обеспечения WD. Поскольку Я комбинирую это с другими сценариями bash, Мне нужно, чтобы он взял пароль, указанный в начале с помощью read -s -p "Введите пароль WD:" wdpass и используйте его, когда запрашивается сценарием WD .

Вот что у меня есть на данный момент:

#!/bin/bash
sudo blkid #only need this to get the sudo password right away
wait
read -p "Enter drive ID (ie. sda): " driveid
read -s -p "Enter WD password: " wdpass

sudo apt install python3 python3-dev python3-pip git; sudo pip3 install git+https://github.com/evox95/wdpassport-utils
sudo pip3 install --user git+https://github.com/crypto-universe/py_sg
cd ~; wget https://raw.githubusercontent.com/evox95/wdpassport-utils/master/wdpassport-utils.py

sudo ~/wdpassport-utils.py --unlock --device /dev/$driveid
expect "[wdpassport] password for /dev/${driveid}: "
send "$wdpass"
wait

Я также пробовал следующие комбинации вместо expect и send (но ничего не помогло):

  • sudo ~ / wdpassport -utils.py --unlock --device / dev / $ driveid <(echo «$ wdpass»)
  • echo «$ wdpass»
  • echo $ wdpass
  • «$ wdpass»
  • $ wdpass
0
задан 31 March 2021 в 14:01

2 ответа

Сценарий wdpassport-utils.py, на который вы ссылаетесь, использует функцию Python getpass.getpass() для получения пароля. Может быть, самым простым методом будет просто изменить это значение с помощью бэш-скрипта (например, используя sed) на input() (который будет читать входные данные из stdin) перед вызовом wdpassport-utils. py, а затем используйте строку, упомянутую выше:

sudo ~/wdpassport-utils.py --unlock --device /dev/$driveid <(echo "$wdpass")

или, в более общем виде:

echo "$wdpass" | sudo ~/wdpassport-utils.py --unlock --device /dev/$driveid
0
ответ дан 23 April 2021 в 23:28

Следует использовать расширение 'expect' до Tcl. Оно предназначено для таких задач автоматизации и многое другое. Об этом написана целая книга ("Exploring Expect"). https://en.wikipedia.org/wiki/Expect

0
ответ дан 23 April 2021 в 23:28

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

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