Пустой вывод ssh-keygen с subprocess.run и os.system в python3.10 на macOS Ventura 13.1 ⇐ Python
Пустой вывод ssh-keygen с subprocess.run и os.system в python3.10 на macOS Ventura 13.1
Я пытался вывести подписанный открытый ключ, сгенерированный из ssh-keygen (CLI), используя Python и библиотеку «подпроцесса». Я также попробовал библиотеку «os» с теми же результатами. Я действительно хочу понять, почему он не делает то, что я хочу: не отображает вывод «ssh-keygen -Lf {keyfile}» на экране так, как я этого ожидаю.
Когда я использую эту команду для того же ключевого файла с помощью CLI (darwin/macOS Ventura 13.1), я получаю ожидаемые результаты. Когда я использую команду в Python3.10, я получаю код возврата «1» и никаких существенных ошибок, которые помогут мне понять проблему. См. ниже:
Ожидаемые результаты:
shell-prompt$> ssh-keygen -Lf ~/.ssh/signed_key.pub /Users/USER/.ssh/signed_kali-os.pub: Введите: сертификат пользователя [email protected]. Открытый ключ: RSA-CERT SHA256:УДАЛЕНО. Подписание CA: RSA SHA256:REDACTED (с использованием rsa-sha2-256) Идентификатор ключа: «[email protected]-УДАЛЕНО». Серия: УДАЛЕНО Действительно: с 24.01.2023T20:56:07 по 24.01.2023T21:01:37. Руководители: основной пользователь Критические параметры: (нет) Расширения: разрешение-pty Выходные данные базового сценария Python3.10 имеют либо значение «1» при печати кода возврата, либо пустое значение (Нет) при печати стандартного вывода и/или стандартного потока вывода. Я испробовал все возможные варианты печати.
Это два решения кода, которые я безуспешно пытался использовать. Когда я заменяю команду (ssh-keygen) чем-то элементарным, например, «ls -l» или «cat», я получаю ожидаемый результат. Я уверен, что переменная SignedPath работает так, как ожидалось, потому что она работает в других частях кода, которые не показаны, и когда я заменяю переменную жестко запрограммированным путем, все равно происходит сбой.
1) если sys.platform == "linux" или sys.platform == "linux2" или sys.platform == "darwin": keyOut = subprocess.run(['ssh-keygen','-Lf',signedPath],capture_output=True) печать (keyOut.stdout.decode()) 2) os.system('ssh-keygen -Lf {key}'.format(key=signedPath)) Что я ищу? В конечном счете, я хотел бы использовать этот код для вывода подписанного открытого ключа на экран, потому что мне нравится формат вывода, который я получаю с помощью ssh-keygen, и у меня были проблемы с другими библиотеками ключей SSH в Python. Если есть лучшее решение, я бы хотел получить в этом помощь, но я действительно пытаюсь понять, почему этот конкретный код не работает, поэтому мне нужен ответ на это более чем отдельное решение. Любая помощь здесь будет очень признательна.
Я пытался вывести подписанный открытый ключ, сгенерированный из ssh-keygen (CLI), используя Python и библиотеку «подпроцесса». Я также попробовал библиотеку «os» с теми же результатами. Я действительно хочу понять, почему он не делает то, что я хочу: не отображает вывод «ssh-keygen -Lf {keyfile}» на экране так, как я этого ожидаю.
Когда я использую эту команду для того же ключевого файла с помощью CLI (darwin/macOS Ventura 13.1), я получаю ожидаемые результаты. Когда я использую команду в Python3.10, я получаю код возврата «1» и никаких существенных ошибок, которые помогут мне понять проблему. См. ниже:
Ожидаемые результаты:
shell-prompt$> ssh-keygen -Lf ~/.ssh/signed_key.pub /Users/USER/.ssh/signed_kali-os.pub: Введите: сертификат пользователя [email protected]. Открытый ключ: RSA-CERT SHA256:УДАЛЕНО. Подписание CA: RSA SHA256:REDACTED (с использованием rsa-sha2-256) Идентификатор ключа: «[email protected]-УДАЛЕНО». Серия: УДАЛЕНО Действительно: с 24.01.2023T20:56:07 по 24.01.2023T21:01:37. Руководители: основной пользователь Критические параметры: (нет) Расширения: разрешение-pty Выходные данные базового сценария Python3.10 имеют либо значение «1» при печати кода возврата, либо пустое значение (Нет) при печати стандартного вывода и/или стандартного потока вывода. Я испробовал все возможные варианты печати.
Это два решения кода, которые я безуспешно пытался использовать. Когда я заменяю команду (ssh-keygen) чем-то элементарным, например, «ls -l» или «cat», я получаю ожидаемый результат. Я уверен, что переменная SignedPath работает так, как ожидалось, потому что она работает в других частях кода, которые не показаны, и когда я заменяю переменную жестко запрограммированным путем, все равно происходит сбой.
1) если sys.platform == "linux" или sys.platform == "linux2" или sys.platform == "darwin": keyOut = subprocess.run(['ssh-keygen','-Lf',signedPath],capture_output=True) печать (keyOut.stdout.decode()) 2) os.system('ssh-keygen -Lf {key}'.format(key=signedPath)) Что я ищу? В конечном счете, я хотел бы использовать этот код для вывода подписанного открытого ключа на экран, потому что мне нравится формат вывода, который я получаю с помощью ssh-keygen, и у меня были проблемы с другими библиотеками ключей SSH в Python. Если есть лучшее решение, я бы хотел получить в этом помощь, но я действительно пытаюсь понять, почему этот конкретный код не работает, поэтому мне нужен ответ на это более чем отдельное решение. Любая помощь здесь будет очень признательна.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение