Я использую 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 logging на CRITICAL следующим образом:
logging.getLogger("paramiko").setLevel(logging.CRITICAL)
Также, направляя его в файл следующим образом:
paramiko.util.log_to_file('filename.log')
Но никто не работает.
Есть ли способ, чтобы эта остановка отображалась как консольный вывод?
Это проблема, которая все еще существует с 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. В моей настройке это работает.
По сути, это означает, что вы должны понизить свой пакет криптографии, поэтому подумайте дважды, прежде чем делать это.
virtualenv
? на случай, если это поможет. да, мне пришлось искать ответ, и этот пост продолжал появляться, так что подумал, что я отвечу :-)