ネットワーク

ネットワーク接続や関連するトピックを扱うクラスやサブルーチンです。

fabric.network.disconnect_all()

その時点のすべての接続されているサーバーから接続を解除します。

fab のメインループの最後で使われ、またライブラリーのユーザーによって利用されることを想定しています。

class fabric.network.HostConnectionCache

ホスト接続/クライアントのキャッシュを許可する辞書サブクラス。

このサブクラスは、キーがリクエストされたときに理にかなった新しいクライアント接続を作成するか、もしくはその前に作成された接続を返します。

また、ゲートウェイ接続と ProxyCommand の実装が求められたときに新しいソケットライクなオブジェクトを作成し、それらを内部接続メソッドに渡す処理をします。

キーバリューはFabric全体のホスト指定子と同じです。オプションとしてユーザー名 + @、必須ホスト名、オプションの : + ポート番号です。

  • example.com - よくあるインターネットのホストアドレス。
  • firewall -特殊な、しかし有効なローカルのホストアドレスです。
  • user@example.com - 特定のユーザー名が付加されています。
  • bob@smith.org:222 - 特定の非標準なポートをともなっています。

ユーザー名が与えられない場合は env.user が使われます。 env.user のデフォルトは起動時のカレント実行中ユーザーですが、ユーザーのコードもしくはコマンドラインフラグでの指定によりオーバライドできます。

同一のホスト名で別のユーザー名が指定された場合、複数のクライアント接続が形成されます。例えば、 user1@example.comuser1 としてログインされた example.com への接続を作成しますが、その後で``user2@example.com`` を指定すると user2 として新しく2番めの接続が作られます。

同じことがポートにも当てはまります。同じホストへ2つの違うポートを指定すると、2つの別々の接続が作成されます。ポートが指定されなければ、22が適用されます。つまり example.comexample.com:22 と同等になります。

__contains__(k) → True if D has a key k, else False
__delitem__(key)

x.__delitem__(y) <==> del x[y]

__getitem__(key)

自動接続 + 戻り値接続オブジェクト

__setitem__(key, value)

x.__setitem__(i, y) <==> x[i]=y

__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 -- ターゲットサーバーへ接続するためのポート。
  • cache -- HostConnectionCache オブジェクトで、どのゲートウェイ 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 対応のキーを返します。

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の場合、ホストをユーザーのみが返されます。

この関数は、Fabricがそのように設定されている場合にSSHコンフィグファイルを処理し、いくつかの初期値を埋めたりホスト名エイリアスをスワップするために利用されます。

fabric.network.normalize_to_string(host_string)

normalize() はタプルを返しますが、これは別の有効なホスト名を返します。

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

必要時に新しいパスワードのためのプロンプトを表示し、それを返します。それ以外は何も返しません。

no_colon が True でない限り最後にコロンが付加されます。

もしユーザーが何もパスワードを入力しなければ、空ではないパスワードを入力するまでプロンプトがそのユーザーに表示されます。

prompt_for_password はその時点で接続しているホストに応じてユーザープロンプトを自動生成します。この挙動をオーバーライドするには prompt に文字列の値を指定します。

stream はプロンプトが書き込まれる先のストリームです。何も指定されなければ、デフォルトの sys.stderr になります。

fabric.network.ssh_config(host_string=None)

カレントの env.host_string ホストの値のための ssh 設定辞書を返します。

読み込んだSSHコンフィグファイルをメモ化しますが、ホストごとの結果に限定されたものではありません。

この関数は必要な "SSHコンフィグが有効か?" チェックを行い、有効でなければ単に空の辞書を返します。SSHコンフィグが 有効 で env.ssh_config_path の値が有効なファイルではない場合、中断します。

host_string として特定のホスト文字列を与えることもできます。