Ошибка имени узла сокета с модулем Python Fabric - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь запустить простую команду (ls) с помощью модуля fabric, следуя примерам, приведенным в документации Fabric .Однако, когда я пытаюсь вызвать метод run для объекта Connection, я получаю

socket.gaierror: [Errno 8] имя узла или имя сервера не предоставлены или не известны

import fabric 
c = fabric.Connection('host')
c.run('ls')

Ранее я использовал модуль socket, и вышеописанная ошибка обычно возникает при запуске socket.gethostbyname(socket.gethostname()) для привязки сокета к машине.Однако socket.gethostbyname(socket.gethostname()) работает без ошибок для меня.

Как успешно использовать fabric для запуска команд в оболочке?Поскольку fabric использует SSH, нужны ли какие-либо конфигурации SSH перед использованием fabric?


Я использую fabric на macOS Sierra 10.12.5 на Python 3.7.0

1 Ответ

0 голосов
/ 04 октября 2018

В конструкторе Connection необходимо указать реальное имя хоста.

Например:

import fabric

c = fabric.Connection('localhost')
c.run('ls')

Если протокол SSH не настроен, у вас есть другое сообщение об ошибке,Например:

paramiko.ssh_exception.NoValidConnectionsError: [Errno None] Unable to connect to port 22 on 127.0.0.1, ::1 or fe80::1%lo0

Часто имени сервера недостаточно, необходимо добавить имя домена, например myserver.mydomain.com.

...