Как я могу предоставить переменную Bash в getpass() Python?

#python #mysql #bash

#python #mysql #bash

Вопрос:

Я вызываю скрипт Python, поставляемый как часть пакета из написанного мной скрипта Bash, который вызывает скрипт в дополнение к выполнению различных других действий. В частности, ранее в сценарии Bash я использовал диалоговое окно пароля Zenity, чтобы получить пароль пользователя MySQL root и сохранить его в переменной Bash для выполнения некоторой настройки базы данных. Позже вызывается скрипт Python, и он тоже хочет получить пароль пользователя MySQL root.

Я попытался просто повторно использовать переменную, содержащую пароль, используя канал и строку here , но ни то, ни другое не работает; скрипт просто зависает там, пока я не вернусь к терминалу и снова не введу пароль. Я немного покопался в скрипте Python и обнаружил, что он использует getpass для запроса пароля. Есть ли какой-нибудь способ, которым я могу дать ему пароль из ранее созданной переменной Bash, чтобы мне нужно было запрашивать его у пользователя только один раз через графический интерфейс?

Комментарии:

1. Это ваш сценарий? можете ли вы изменить его, чтобы получить пароль в качестве аргумента?

2. Попробуйте поискать expect решения.

3. @Korem Нет, это не мое. На самом деле это из более старой версии ERPNext.

Ответ №1:

Если информация уже присутствует в переменной bash (скажем, имя pwd ), ИМХО, самым простым решением является экспорт ее в среду.

 export pwd
 

Затем вы можете получить его в скрипте Python :

 pwd = os.environ('pwd')