Как бороться с интерактивным API в Python - PullRequest
6 голосов
/ 10 февраля 2011

Я нахожусь в ситуации, когда мне нужно передать некоторые тексты в приглашение, сгенерированное API (кажется, для API это довольно странное поведение, я впервые столкнулся с этим), как показано ниже:

kvm_cli = libvirt.open("qemu+ssh://han@10.0.10.8/system")

затем появляется подсказка с запросом пароля ssh (password for 10.0.10.8 is:), я должен вручную ввести его там, чтобы перейти и получить нужный объект kvm_cli.

Я попытался использовать модуль pexpect, чтобы справиться с этим, однако он предназначен для командной строки ОС вместо API.

Можно также обойти это, используя файлы сертификации ssh, но в нашемсценарий.

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

1 Ответ

4 голосов
/ 10 февраля 2011

Я не пользователь libvirt, но считаю, что проблема не в библиотеке, а в способе подключения.Кажется, вы подключаетесь через ssh, поэтому вам нужно аутентифицироваться.

Я читал страницу libvirt на ArchWiki , и я думаю, что вы можете попробовать:

  • настройка простого способа подключения (сокет TCP / IP) или
  • настройка логина SSH без пароля для вашего виртуального хоста.
...