Пустой вывод ssh-keygen с subprocess.run и os.system в python3.10 на macOS Ventura 13.1Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пустой вывод ssh-keygen с subprocess.run и os.system в python3.10 на macOS Ventura 13.1

Сообщение Anonymous »


Я пытался вывести подписанный открытый ключ, сгенерированный из 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. Если есть лучшее решение, я бы хотел получить в этом помощь, но я действительно пытаюсь понять, почему этот конкретный код не работает, поэтому мне нужен ответ на это более чем отдельное решение. Любая помощь здесь будет очень признательна.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»