Python Fabric 模块的套接字节点名错误

Socket nodename error with Python Fabric module

我正在按照 fabric documentation 中的示例尝试使用 fabric 模块 运行 一个简单的命令 (ls)。但是,当我尝试在 Connection 对象上调用 run 方法时,我收到

socket.gaierror: [Errno 8] nodename nor servname provided, or not known

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

我以前用过socket模块,上面的错误一般是在运行宁socket.gethostbyname(socket.gethostname())给机器绑定socket的时候出现的。但是,socket.gethostbyname(socket.gethostname()) 运行 对我来说没有错误。

如何在 shell 中成功使用 fabric 到 运行 命令?由于 fabric 使用 SSH,在使用 fabric 之前是否需要任何 SSH 配置?


我 运行宁 fabric 在 Python 3.7.0

macOS Sierra 10.12.5

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.