Как подать отчет об ошибке для конкретной версии Ubuntu?

Одна идея состоит в том, чтобы запустить процесс в фоновом режиме, перенаправляя его stdout (stderr?) в файл, а ваш сценарий должен ждать и контролировать этот файл в цикле. Всякий раз, когда процесс печатает приглашение пароля, скрипт передает пароль в процесс через его stdin.

Достижение этого на самом деле сложно. Вы можете использовать два сценария, один для мониторинга вывода и подачи паролей, а другой для их запуска сначала, применяя необходимые переадресации.

Таким образом, сценарий запуска:

#!/bin/bash
TEMP_FILE=/tmp/hapboon.stdout
start-dfs.sh  <(./feed-passwords.py "$TEMP_FILE")  > "$TEMP_FILE"

По какой-то причине я буду использовать Python для другого:

#!/usr/bin/python3
PASSWORD="""TYPE_YOUR_PASSWORD_HERE"""

from sys import argv
temp_file = argv[1]  # Raises exception if argument is missing

counter = 0
maximum = 3
previous_length = 0

while True:
    with open(temp_file) as f:
        output = f.read()
    if len(output) == previous_length:
        continue
    previous_length = len(output)
    last_line = output.strip().split('\n')[-1]
    if last_line.endswith(' password:'):
        print(PASSWORD)  # Our stdout goes to `start-dfs.sh`
        counter += 1
    if counter == maximum:
        break

Я ничего не тестировал. Одно из предположений, на которое основан этот подход, заключается в том, что тот, кто получает пароль через свой stdin, сам start-dfs.sh, который имеет довольно хорошую возможность быть неверным. Стартовые скрипты часто просто вызывают другие процессы, поэтому пароль, вероятно, нужно отправить в stdin других процессов.

Возможно, вам придется поработать с самим скриптом start-dfs.sh и перенаправить его на stdin процессы, которые получат пароль. Это также означает, что наш скрипт feed-passwords.py должен каждый раз печатать пароли в соответствующий файл, что, вероятно, означает, что архитектура всего подхода изменится.

Кроме того, пока мы еще не находимся, еще одна вещь об этом скрипте, который является негибким; он работает только с заданным количеством паролей (определяется переменной maximum). Возможно, было бы желательно изменить его таким образом, чтобы он продолжал следить за запросами пароля до тех пор, пока не пройдет определенный тайм-аут (скажем, 15 секунд), поэтому он вмещает любое количество приглашений пароля без необходимости менять номер каждый раз. (Я могу помочь вам в этом, если это необходимо.)

Другое примечание. Если вы не хотите хранить свой пароль, просто замените строку PASSWORD=... на: PASSWORD=input("Type your password: "). Это позволит вам вводить пароль только один раз при каждом запуске скрипта и не будет хранить ваш пароль нигде.

0
задан 12 June 2012 в 20:41

7 ответов

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 25 July 2018 в 18:43

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 2 August 2018 в 00:52

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 4 August 2018 в 16:22

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 6 August 2018 в 01:01

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 7 August 2018 в 18:28

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 10 August 2018 в 07:09

Я думаю, что эта страница решает мою проблему, в частности шаги 1-6 в разделе «Процедуры».

2
ответ дан 15 August 2018 в 19:09

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

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