ネットワーク¶
ネットワーク接続や関連するトピックを扱うクラスやサブルーチンです。
-
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.comはuser1としてログインされたexample.comへの接続を作成しますが、その後で``user2@example.com`` を指定するとuser2として新しく2番めの接続が作られます。同じことがポートにも当てはまります。同じホストへ2つの違うポートを指定すると、2つの別々の接続が作成されます。ポートが指定されなければ、22が適用されます。つまり
example.comはexample.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として特定のホスト文字列を与えることもできます。