Skip to main content

网络

处理网络连接和相关主题的类和子例程。

fabric.network.disconnect_all()

断开所有当前连接的服务器。

用于 fab 主循环的结尾,也供图书馆用户使用。

class fabric.network.HostConnectionCache

Dict子类允许缓存主机连接/客户端。

这个子类将在请求密钥时智能地创建新的客户端连接,或者返回先前创建的连接。

当需要实现网关连接和 ProxyCommand 时,它还处理创建新的套接字对象,并将它们交给内部连接方法。

键值与整个结构中的主机说明符相同:可选用户名+ @,强制主机名,可选 : +端口号。例子:

  • example.com - 典型的Internet主机地址。

  • firewall - 非典型但仍然合法的本地主机地址。

  • user@example.com - 附有特定用户名。

  • bob@smith.org:222 - 连接特定的非标准端口。

当没有给出用户名时,使用 env.userenv.user 在启动时默认为当前正在运行的用户,但可能被用户代码或指定的命令行标志覆盖。

请注意,同一主机名的不同显式用户名将导致进行多个客户端连接。例如,指定 user1@example.com 将创建与 example.com 的连接,以 user1 身份登录;后来指定 user2@example.com 将创建一个新的第二连接为 user2

同样适用于端口:指定两个不同的端口将导致与正在进行的同一主机的两个不同连接。如果没有给出端口,则假设为22,因此 example.com 等于 example.com:22

__getitem__(key)

Autoconnect +返回连接对象

__weakref__

对象的弱引用列表(如果已定义)

connect(key)

强制与 key 主机字符串的新连接。

fabric.network.connect(user, host, port, cache, seek_gateway=True)

创建并返回连接到给定主机的新SSHClient实例。

参数:
  • user – 连接为的用户名。
  • host – 网络主机名。
  • port – SSH守护程序端口。
  • cache – 启用网关时用于缓存/存储网关主机的 HostConnectionCache 实例。
  • seek_gateway – 是否尝试为此连接设置网关套接字。因此,实际的网关连接可以防止递归。
fabric.network.denormalize(host_string)

删除给定主机字符串的默认值。

如果用户部分是默认用户,则将其删除;如果端口是端口22,它也被删除。

fabric.network.disconnect_all()

断开所有当前连接的服务器。

用于 fab 主循环的结尾,也供图书馆用户使用。

fabric.network.get_gateway(host, port, cache, replace=False)

创建并返回网关套接字(如果需要)。

此函数检查 env 的网关或代理命令设置,并返回必需的套接字状对象供最终主机连接使用。

参数:
  • host – 目标服务器的主机名。
  • port – 要在目标服务器上连接的端口。
  • cacheHostConnectionCache 对象,其中网关 SSHClient 对象将被检索/缓存。
  • replace – 是否强制替换缓存的网关客户端对象。
返回:

socket.socket 样对象,或 None (如果没有创建)。

fabric.network.join_host_strings(user, host, port=None)

将用户/主机/端口字符串转换为 user@host:port 组合字符串。

此函数不负责处理缺少的用户/端口字符串;为此,请参阅 normalize 函数。

如果 host 看起来像IPv6地址,它将被括在方括号中

如果省略 port,则返回的字符串将是 user@host 格式。

fabric.network.key_filenames()

返回当前env.host_string的SSH密钥文件名列表。

考虑ssh_config和env.key_filename,包括对列表的规范化。还对任何键文件名执行 os.path.expanduser 扩展。

fabric.network.key_from_env(passphrase=None)

从私钥的文本字符串返回paramiko-ready键

fabric.network.needs_host(func)

env.host_string 为空时,提示用户输入 env.host_string 的值。

这个装饰器基本上是一个安全网,愚蠢的用户忘了以一种方式指定主机/主机列表。它应该用于包装需要网络连接的操作。

由于我们在 main() 中如何执行每个主机的命令,因此无法在此时指定多个主机,因此将只提示单个主机。

因为这个装饰器设置 env.host_string,它将提示每个命令一次(并且只有一次)。由于 main() 在命令之间清除 env.host_string,所以这个装饰器最终还会每个命令提示用户一次(当然,在多个命令没有设置主机的情况下)。

fabric.network.normalize(host_string, omit_port=False)

规范化给定的主机字符串,返回显式主机,用户,端口。

如果给定 omit_port 并且为True,则只返回主机和用户。

此功能将处理SSH配置文件,如果Fabric配置为这样做,并将使用它们填充一些默认值或交换主机名别名。

fabric.network.normalize_to_string(host_string)

normalize()返回一个元组;这将返回另一个有效的主机字符串。

fabric.network.prompt_for_password(prompt=None, no_colon=False, stream=None)

如果需要,提示并返回新密码;否则返回None。

除非 no_colon 为True,否则附加尾随冒号。

如果用户提供空密码,则会重新提示用户,直到他们输入非空密码。

prompt_for_password 会根据当前连接的主机自动生成用户提示。要覆盖此值,请为 prompt 指定一个字符串值。

stream 是将打印提示的流;如果没有给出,默认为 sys.stderr

fabric.network.ssh_config(host_string=None)

返回当前env.host_string主机值的ssh配置dict。

记忆加载的SSH配置文件,但不是特定的每个主机结果。

此功能执行必要的“是SSH配置启用?检查,如果没有,将简单地返回一个空的dict。如果SSH配置 is 启用,并且env.ssh_config_path的值不是有效的文件,它将中止。

可以将显式主机字符串作为 host_string