подавить вывод Paramiko stderr - PullRequest
0 голосов
/ 05 октября 2018

Я использую paramiko как часть скрипта Python.В этом сценарии я также использую модуль журналирования python для входа как в файл журнала, так и в stderr.В консоли должно отображаться только то, что я указываю через logger.debug, logger.info и т. Д.К сожалению, когда я выполняю вызовы paramiko следующим образом:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, key_filename=keyfile)

Следующее сообщение выводит на stderr:

CryptographyDeprecationWarning: подписчик и верификатор устарели.Пожалуйста, используйте знак и подтвердите взамен.

Я пытался подавить, изменив запись в paramiko на CRITICAL следующим образом:

logging.getLogger("paramiko").setLevel(logging.CRITICAL)

, а также направив его в файл, подобный этому:

paramiko.util.log_to_file('filename.log')

Но ни один из них не работает.

Есть ли способ сделать так, чтобы эта остановка отображалась как вывод консоли?

1 Ответ

0 голосов
/ 31 января 2019

Это проблема, которая все еще существует с paramiko==2.4.2;он запланирован, по-видимому, для следующего выпуска 2.x , поэтому, скорее всего, для 2,5.

Проблема, о которой они заявляют, по существу, "старше paramiko, новее cryptography"

Тем временем вы можете попробовать это исправить:

pip uninstall cryptography ; pip install cryptography==$DESIRED_VERSION

Замените $DESIRED_VERSION на нужной вам версией .paramiko 2.4.2 был выпущен в сентябре 2018 года, последний выпуск, который выглядит совместимым, - криптография 2.3.1.В моей настройке это работает.

По сути, это означает понижение уровня вашего пакета криптографии, поэтому подумайте дважды, прежде чем сделать это.

...