Разблокировка базы данных keepassxc при входе в систему... так близко, но как устранить оставшуюся проблему?

Разблокировка базы данных keepassxc при входе в систему... так близко, но как устранить оставшуюся проблему?

На основе этого чрезвычайно полезного ответаЗапустить KeePassXC при загрузке Я почти добился желаемого результата — разблокировка keepassxcпри входе в систему заработала.

Однако у меня (и другого пользователя, который ответил-прокомментировал по той же проблеме) осталась одна проблема, которая не дает ей быть полезной. А именно, согласно связанному ответу, я даю команду...

secret-tool lookup keepass <database_name> | keepassxc --pw-stdin <path-to-your-database>.kbdx

...и это работает, если keepassxcзапущено... но я получаю это приглашение на следующей строке после команды

Database password:

и скрипт зависает в ожидании ввода.

Части сценария работают... Я могу выдать

secret-tool lookup keepass <database_name>

и я ввожу правильный пароль.

Я могу выдать

echo <password> | keepassxc --pw-stdin <path-to-your-database>.kbdx

и он запускается keepassxcи входит в систему... но я все равно получаю приглашение и скрипт зависает.

Если я сделаю

echo <password> | keepassxc --pw-stdin <path-to-your-database>.kbdx &

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

Так что, похоже, мне нужно как-то это предоставить enter?

  • Версия Ubuntu: 18.04
  • версия keepassxc: 2.6.4

решение1

Короткий ответ

То, что вы видите, — это нормальное поведение. Терминал будет освобожден только после завершения KeePassXC.

Длинный ответ

Приглашение Database password:, которое вы видите на терминале, является результатом опции, которую --pw-stdinвы предоставили keepassxcопции. Поскольку есть конвейер, стандартный ввод — это не ваша клавиатура, а вывод предыдущей команды echo.

Пока KeepassXC запущен, ваш запрос заблокирован. Это нормально и происходит с любой другой программой. Например, попробуйте запустить nautilusс терминала.

Вы можете освободить приглашение, переместив этот процесс в фоновый режим: нажмите Ctrl+ Z, затем введите bg, чтобы продолжить выполнение процесса в фоновом режиме. fgснова выведет его на передний план. Это «традиционная» практика терминала.

Если процесс находится на переднем плане, терминал будет освобожден, когда вы выйдете из KeePassXC, либо выполнив выход из него в графическом пользовательском интерфейсе, либо нажав Ctrl+ Cв терминале.

Такое поведение незаметно, если вы не запускаете команду из эмулятора терминала, например, из средства запуска на рабочем столе или с помощью сочетания клавиш, или даже с помощью диалогового окна Alt+ F2запустить.

Связанный контент