我尝试通过遵循fabric documentation中的示例,使用ls
模块运行一个简单的命令(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
在Shell中运行命令?由于fabric
使用SSH,在使用fabric
之前是否需要任何SSH配置?
我在Python 3.7.0的macOS Sierra 10.12.5上运行fabric
答案 0 :(得分:1)
在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
Ofen,服务器名还不够,您需要添加域名,例如myserver.mydomain.com
。