代码之家  ›  专栏  ›  技术社区  ›  Matthew Rankin val

为什么在使用结构python库时接收到低级套接字错误?

  •  19
  • Matthew Rankin val  · 技术社区  · 15 年前

    当我运行命令时:

    fab -H localhost host_type
    

    我收到以下错误:

    [localhost] Executing task 'host_type'
    [localhost] run: uname -s
    
    Fatal error: Low level socket error connecting to host localhost: Connection refused
    
    Aborting.
    

    有什么想法吗?谢谢。

    FabFiel.Py

    from fabric.api import run
    def host_type():
        run('uname -s')
    

    配置

    • 织物1.0a0(从 most recent Github commit---b8e1b6a )
    • 帕拉米科1.7.4
    • 隐密码2.0.1
    • 虚拟环境1.3.3版
    • python 2.6.2+(release26维护:74924,2009年9月18日,16:03:18)
    • Mac OS x0.61
    4 回复  |  直到 8 年前
        1
  •  25
  •   Mark Rushakoff    15 年前

    重要的部分不是消息的“低级错误”部分——重要的部分是“连接被拒绝”部分。当您试图连接到一个关闭的端口时,会收到一条“连接被拒绝”的消息。

    最有可能的情况是,在Fabric运行时,您的计算机上没有运行ssh服务器。如果你这样做了

    ssh localhost
    

    你可能会收到一条类似于

    ssh: connect to host localhost: Connection refused
    

    因此,您必须在计算机上安装一个ssh服务器,然后才能从那里继续使用fabric。

        2
  •  2
  •   Hraban    12 年前

    我有同样的问题,但原因不同:虽然我可以通过ssh(默认端口22)轻松登录到服务器,但是fabric尝试在关闭的端口9090上连接。

    最后,我意识到我在旧的fabfile中为一些wsgi服务器设置定义了“env.port=9090”;虽然这不是问题,但几周前我更新了python安装,现在fabric使用env.port进行ssh连接。 我刚重命名了配置,一切又恢复正常了。

        3
  •  2
  •   RichVel    8 年前

    在OS X 10.11.4和Fabric1.10.1中也会发生这种情况,在这种情况下,您使用vagrant ssh'ing到一个虚拟机,它从本地主机进行端口转发。在这种情况下,本地主机正在解析为IPv6 ::1 地址(不是由于 /etc/hosts 文件),并给出此错误。

    修复方法是通过使用 127.0.0.1 FabFile中的地址而不是主机名。在中使用主机名 /ETC/主机 这个地址不起作用。

    你也可以试试这些 useful tips for debugging connection issues in Fabric .

        4
  •  1
  •   ForceBru    9 年前
    env.roledefs = {
    'role1': env.hosts[0:5],
    'role2':[env.hosts[5],]
    }
    

    如果“role”值为 不是列表 . 例如,上面的代码可以工作,但下面的代码不行。

     env.roledefs = {
    'role1': env.hosts[0:5],
    'role2':env.hosts[5],
    }