Пароль для загрузки скрипта - PullRequest
0 голосов
/ 20 апреля 2019

Я загружаю огромные файлы и у меня есть скрипт загрузки на python. Поскольку данные должны храниться в их оригинальном формате, я загружаю их только пару лет, обрабатываю их, затем удаляю оригинал, прежде чем загружать следующие несколько лет. Для каждого набора лет у меня есть отдельный скрипт загрузки, и я просто создаю быстрый скрипт bash для их запуска

#!/bin/bash
python download_1901-1909.py
## processing, delete
python download_1910-1919.py
## processing, delete
python download_1920-1929.py
## processing, delete

[...]

Для загрузки скипа, я должен ввести пароль. Я знаю, что можно сделать автоматическую передачу пароля с помощью spawn, но я не смог заставить его работать. Попытка спавна делает это

#!/usr/bin/expect -f
spawn python download_1901-1909.py
expect "Password:" 
send "mypassword"
interact

выходы

 sh test.sh 
 test.sh: line 2: spawn: command not found
 couldn't read file "Password:": no such file or directory
 test.sh: line 4: send: command not found
 test.sh: line 5: interact: command not found

Как передать пароль скрипту загрузки Python?

1 Ответ

1 голос
/ 20 апреля 2019

Этот ответ пытается решить ваш вопрос о завершении того, что вам нужно, а не вопрос о выполнении #!/usr/bin/expect, который может быть тем, о чем вы спрашиваете.

Вы можете попробовать использовать -c параметр expect inline.

Например,

#!/bin/bash
expect -c "spawn python download-1901_1909.py; expect \"assword\"; send \"mypassword\r\n\"; interact"
expect -c "spawn python download-1910_1919.py; expect \"assword\"; send \"mypassword\r\n\"; interact" 
# and the remaining, similarly

Примечание:

  1. Вашей детали send может потребоваться отправить \r\n для "имитации" клавиши Enter для завершения ввода пароля.

  2. Вы можете использовать sed в пределах for просто для линий.

  3. «assword» предназначен для предотвращения ввода первой буквы этого слова, «Password» и «password», для некоторой переносимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...