OpDemandシェルプロジェクトは、C2システムへのコマンドラインクライアント·インタフェースが含まれています。これらのpythonモジュールはOpDemandのコマンド&コントロール技術(C2)の一部である。
のオープンソースの
C2-シェルプロジェクトはOpDemandすることにより、オープンソースの行われている。
のC2シェルのドキュメントの
始める前に
- あなたは、アクティブC2アカウントが必要です。 https://c2.opdemand.com/で無料で1を作成します。
- 命令は、OSXやLinuxを前提と(Windowsがテストされていませんが、動作するはずです)
<強い>インストールの
インストールは、標準のdistutils規則を使用します。
sudoのPythonのsetup.pyインストール
のコンフィグレーションの
ローカルクライアントの設定にあなたのC2ログイン用メールアドレスを追加します。
C2現地集合--email=c2user@opdemand.com
C2はローカルgetは現在の設定が表示されます。
ログインする
以上のように構成されたメールアドレスを使用し、パスワードの入力が求められますC2ログインを、発行します。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ C2はログイン
パスワード:
2011-06-07 08:44:12052 - INFO - => POST https://c2core.opdemand.com/session
2011-06-07 08:44:13095 - INFO - GET https://c2core.opdemand.com/template
2011-06-07 09:21:21879 - INFO - <= 200 OK、アプリケーション/ JSONの1822バイトを読み込む
テンプレートの[#のJSONリスト
&NBSP; {
&NBSP;#最初のテンプレート
&NBSP;}、
&NBSP; {
&NBSP;#2番目のテンプレート
&NBSP;}
]
2011-06-07 09:21:21881 - INFO - 0.524872sで(テンプレート/リスト)成功
あなたが展開するテンプレートの_id値を見つけ、あなたのクリップボードにコピーします。
新しいプラットフォームを作成
目的のテンプレートを選択して、新鮮なプラットフォームを作成し、テンプレート_id、のC2テンプレートの負荷を発行します。
ユーザー@ボックス:〜/ワークスペース/ C2 - シェル$ C2テンプレート負荷--_ ID = 6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09:42:36711 - INFO - => POST https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2/load
2011-06-07 09:42:38606 - INFO - <= 201作成された、アプリケーションの14850バイトを読み込む/ JSON
{
&NBSP;#テンプレートのはるかに長いJSON表現
}
2011-06-07 09:42:38757 - INFO - 2.061932sで(テンプレート/ロード)成功
リストプラットフォーム
あなたのアカウントで利用可能なプラットフォームを表示するにはC2プラットフォームリストを発行します。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォームリスト
2011-06-07 09:46:48327 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 09:46:48884 - INFO - <= 200 OK、アプリケーション/ JSONの566バイトを読み込む
[
&NBSP; {
&NBSP;#あなたの新しいプラットフォーム
&NBSP;}
]
2011-06-07 09:46:48885 - INFO - 0.572228sで(プラットフォーム/リスト)成功
クリップボードにこのプラットフォームの_idをコピーします。
プラットフォームを読む
リスト操作のみコレクション内の項目の要約表現を示している。あなたが読んC2プラットフォームを発行し、_idを提供しなければならない(そのネストされたコンポーネントを含むもの)プラットフォームの完全な表現を表示するには:
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォーム読む--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:16:06050 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:16:06984 - INFO - <= 200 OK、アプリケーション/ JSONの14850バイトを読み込む
{
&NBSP;#完全なプラットフォームの表現
}
2011-06-07 10:16:07152 - INFO - (プラットフォーム/読み込み)1.117754sで成功
JSONレスポンスでの作業
上記のプラットフォームは、読みには長すぎる。幸いC2シェルは読みやすく、任意のC2シェルコマンドからJSON出力を行う統合されたJSONのprettifierが含まれています。
単純にパイプどんなC2コマンドをかなりC2に:
ユーザー@ボックス:〜/ワークスペース/ C2 - シェルの$ C2テンプレート--_ ID = 6c86dfc5ddfe464199021b8dcaf521a2を読む| C2かわいい
2011-06-07 09:32:00646 - INFO - => GET https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09:32:01378 - INFO - <= 200 OK、アプリケーション/ JSONの12022バイトを読み込む
2011-06-07 09:32:01535 - INFO - (テンプレート/読み込み)0.904613sで成功
tiers.0.name「ネットワーク層」
tiers.0.doctype「ティア」
tiers.0._rev「1-5a37d211b276deee536cd72a016af8fa」
清書JSONの...残り
すべてのC2コマンドは、標準入力から読み込み、標準出力に書き込みます。これは生のJSONと清書JSONはUNIXスタイルのパイプを使用する他のコマンドにパイプすることができることを意味します。 (例えば、grepを)。
プラットフォームを設定
最初のデフォルトの設定情報のためのプラットフォームとgrepをお読みください。
ユーザー@ボックス:〜/ワークスペース/ C2 - シェルの$ C2プラットフォームは--_ ID = 7bbeacb1082e4810bb1a6643d024496eを読む| C2かなり| grepを設定
2011-06-07 10:26:29828 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:26:30486 - INFO - <= 200 OK、アプリケーション/ JSONの14850バイトを読み込む
2011-06-07 10:26:30635 - INFO - (プラットフォーム/読み込み)0.821403sで成功
config.access_network「0.0.0.0/0」
config.image_id「AMI-06ad526f」
config.doctype "設定"
config._rev「1-38d720a0975e4d377ccbfd3cb7864185」
config.access_port "22"
config.cloud_name "US-東-1」
config.clone_.parent_id「ceee3724a3674bc096a2a6d2dfde7209」
config.clone_.parent_impl.cls_「c2core.resolve.Config」
config.admin_network「0.0.0.0/0」
config._id「ceee3724a3674bc096a2a6d2dfde7209」
config.impl.cls_「c2core.resolve.Config」
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0「7bbeacb1082e4810bb1a6643d024496e」
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "設定"
metadata.config_info.access_port「ポートは、サーバー上で聴く "
metadata.config_info.access_network「公共のユーザのネットワークマスク」
metadata.config_info.cloud_name「AWS領域の名前」
metadata.config_info.admin_network「管理ユーザーのネットワークマスク」
1.1.1.1/32 - の1つのホストへのすべてのネットワークアクセスを制限しましょう。これはaccess_networkとadmin_networkキーを変更する必要があります。
設定は、独自の_idと_revと、ネストされた文書であるので、我々は直接設定文書を変更する必要があります。これを行うために、我々は表現を読み取り、更新操作に配管のRESTfulな慣習に従ってください。
ユーザー@ボックス:〜/ワークスペース/ C2 - シェルの$ C2の設定読み取る--_ ID = ceee3724a3674bc096a2a6d2dfde7209 | C2コンフィグアップデート - --access_network = 1.1.1.1 / 32 --admin_network = 1.1.1.1 / 32
2011-06-07 10:35:39643 - INFO - 標準入力からの読み込み、オブジェクト、Ctrl-Cを破る...
2011-06-07 10:35:39661 - INFO - => GET https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10:35:40573 - INFO - <= 200 OK、アプリケーション/ JSONの692バイトを読み込む
2011-06-07 10:35:40574 - INFO - (設定/読み込み)0.931527sで成功
2011-06-07 10:35:40603 - INFO - => PUT https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10:35:41316 - INFO - <= 200 OK、アプリケーション/ JSONの694バイトを読み込む
{
&NBSP; "_ ID": "ceee3724a3674bc096a2a6d2dfde7209」、
&NBSP; "_ REV": "2-6a1cac4a1851fead776d4184e1218028」、
&NBSP; "access_network": "1.1.1.1/32」、
&NBSP; "access_port": "22"、
&NBSP; "admin_network": "1.1.1.1/32」、
&NBSP; "clone_":{
&NBSP; "PARENT_ID": "ceee3724a3674bc096a2a6d2dfde7209」、
&NBSP; "parent_impl":{
&NBSP; "cls_": "c2core.resolve.Config"
&NBSP;}
&NBSP;}、
&NBSP; "cloud_name": "US-東-1」、
&NBSP; "doctypeを": "設定"、
&NBSP; "image_idは": "AMI-06ad526f」、
&NBSP; "implの":{
&NBSP; "cls_": "c2core.resolve.Config"
&NBSP;}、
&NBSP; "景色":{
&NBSP; "7bbeacb1082e4810bb1a6643d024496e":[
&NBSP;
&NBSP; "7bbeacb1082e4810bb1a6643d024496e」、
&NBSP; "設定"
&NBSP;]
&NBSP;]
&NBSP;}
}
2011-06-07 10:35:41317 - INFO - 0.730138sで(設定/更新)成功
親文書の更新、ネストされた構成を含む確認するために、プラットフォームの構成を再読み込み:
ユーザー@ボックス:〜/ワークスペース/ C2 - シェルの$ C2プラットフォームは--_ ID = 7bbeacb1082e4810bb1a6643d024496eを読む| C2かなり| grepを設定
2011-06-07 10:37:11131 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:37:11825 - INFO - <= 200 OK、アプリケーション/ JSONの14852バイトを読み込む
2011-06-07 10:37:11977 - INFO - (プラットフォーム/読み込み)0.862029sで成功
config.access_network「1.1.1.1/32」
config.image_id「AMI-06ad526f」
config.doctype "設定"
config._rev「2-6a1cac4a1851fead776d4184e1218028」
config.access_port "22"
config.cloud_name "US-東-1」
config.clone_.parent_id「ceee3724a3674bc096a2a6d2dfde7209」
config.clone_.parent_impl.cls_「c2core.resolve.Config」
config.admin_network「1.1.1.1/32」
config._id「ceee3724a3674bc096a2a6d2dfde7209」
config.impl.cls_「c2core.resolve.Config」
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0「7bbeacb1082e4810bb1a6643d024496e」
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "設定"
metadata.config_info.access_port「ポートは、サーバー上で聴く "
metadata.config_info.access_network「公共のユーザのネットワークマスク」
metadata.config_info.cloud_name「AWS領域の名前」
metadata.config_info.admin_network「管理ユーザーのネットワークマスク」
プラットフォームを開始
キューに入れ場所で私たちのAWSの資格情報、および当社のプラットフォームで、私たちは移動する準備が整いました。 C2プラットフォームの開始を発行し、オーケストレーションを開始してみましょう:
ユーザー@ボックス:〜/ワークスペース/ C2 - シェル$ C2プラットフォーム開始--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:42:52849 - INFO - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/start
2011-06-07 10:42:53816 - INFO - <= 202受理、アプリケーション/ JSONの0バイトを読み込む
2011-06-07 10:42:53816 - INFO - 0.981219sで(プラットフォーム/開始)成功
プラットフォームの進行を追跡するには、すべてのネストされたオブジェクトの状態のための完全なプラットフォームの表現とgrepをお読みください。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォーム読む--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2はかなり| grepの状況
2011-06-07 10:43:06530 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:43:07228 - INFO - <= 200 OK、アプリケーション/ JSONの22227バイトを読み込む
2011-06-07 10:43:07451 - INFO - (プラットフォーム/読み込み)0.935643sで成功
tiers.0.status_.value "建物"
「鍵ペアが作成した「tiers.0.keypair.status_.detail
tiers.0.keypair.status_.value "構築された」
「ルールが正常に認可」tiers.0.sg.status_.detail
tiers.0.sg.status_.value "構築された」
tiers.1.status_.value "建物"
「保留中の現在、実行中のを待っている」tiers.1.server.status_.detail
tiers.1.server.status_.value "建物"
status_.detail「トリガー操作を開始」
status_.value "開始"
私たちは、プラットフォームレベルのステータスが開始され見ることができます。 「世論調査」状態に再発行して、このコマンドの回数を。状態のためにgrepをすることは、コンポーネントが現在移行している実証するのに便利です。プラットフォームが完了すると、以下のように、ステータスが見えるはずです。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォーム読む--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2はかなり| grepの状況
2011-06-07 10:44:21015 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:44:21736 - INFO - <= 200 OK、アプリケーション/ JSONの27129バイトを読み込む
2011-06-07 10:44:21988 - INFO - (プラットフォーム/読み込み)0.990599sで成功
tiers.0.status_.detailは「正常に開始されました」
「実行中」tiers.0.status_.value
「鍵ペアが作成した「tiers.0.keypair.status_.detail
「実行中」tiers.0.keypair.status_.value
「ルールが正常に認可」tiers.0.sg.status_.detail
「実行中」tiers.0.sg.status_.value
tiers.1.status_.detailは「正常に開始されました」
「実行中」tiers.1.status_.value
「22 / TCPでの準備ができてリスナー」tiers.1.server.status_.detail
「実行中」tiers.1.server.status_.value
status_.detail「成功した操作を開始する」
status_.value「実行中」
22 / TCP上の準備ができてサーバーリスナーで「実行中」の親レベルのステータスに注意してください。当社のプラットフォームは、準備ができています。
プラットフォームを使用して、
すべてのプラットフォームは、それらがどのように使用されるかについての情報を公開します。ほとんどのプラットフォームでは、いくつかの組み合わせを公開する:
- のURL
- ホスト名/ポートの組み合わせ
- ログイン
- パスワード
私たちは、公開のためのプラットフォームとgrepを読めば、私たちは、このプラットフォームは、単純なSSHのURLを公開し見ることができます:
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォーム読む--_ ID = 7bbeacb1082e4810bb1a6643d024496e |かなりc2は| grepはパブリッシュ
2011-06-07 10:51:30694 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:51:31764 - INFO - <= 200 OK、アプリケーション/ JSONの27129バイトを読み込む
2011-06-07 10:51:32038 - INFO - (プラットフォーム/読み込み)1.367026sで成功
tiers.1.server.publish.access_url「SSH://ubuntu@ec2-50-19-55-84.compute-1.amazonaws.com/ "
metadata.publish_info.access_url「プラットフォームにアクセスするためのURL "
プラットフォームは出版するための一般的なパターンは、次のとおりです。
- 管理者URL
- 管理者ログイン
- 管理者パスワード
- アクセスURL
プラットフォームの停止
プラットフォームが停止すると、そのステータスは次のようになります。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォーム読む--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2はかなり| grepの状況
2011-06-07 10:57:51345 - INFO - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:57:52128 - INFO - <= 200 OK、アプリケーション/ JSONの27966バイトを読み込む
2011-06-07 10:57:52424 - INFO - (プラットフォーム/読み込み)1.093576sで成功
「正常に停止」tiers.0.status_.detail
tiers.0.status_.valueは「停止」
「鍵ペアが作成した「tiers.0.keypair.status_.detail
tiers.0.keypair.status_.valueは「停止」
「ルールが正常に認可」tiers.0.sg.status_.detail
tiers.0.sg.status_.valueは「停止」
「正常に停止」tiers.1.status_.detail
tiers.1.status_.valueは「停止」
「停止し、現在停止して待っている」tiers.1.server.status_.detail
tiers.1.server.status_.valueは「停止」
status_.detail「停止操作に成功」
status_.valueは「停止」
プラットフォームはまだ雲の中に存在していないが、それはなくなりました(それは、しかし、ごくわずかなストレージコストをかけている)高価な計算コストをかけている。また、もはやC2プラットフォーム料を負担しないいる。この時点で、あなたのプラットフォームが効果的に何も費用はかかりません。
プラットフォームが停止し、制限することなく開始することができる。
プラットフォームを破壊する
実際にお使いのプラットフォームに含まクラウドコンポーネントのすべてを破壊するためには、ターゲットプラットフォームの_idを破壊し、提供するC2プラットフォームを発行する必要があります。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォームを破壊--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:04:10667 - INFO - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/destroy
2011-06-07 11:04:11953 - INFO - <= 202受理、アプリケーション/ JSONの0バイトを読み込む
2011-06-07 11:04:11953 - INFO - 1.300462sで(プラットフォーム/破壊する)は、成功
プラットフォームを削除
あなたがプラットフォームを一覧表示する場合には、破壊されたプラットフォームがまだ存在していることがわかります。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォームリスト|かわいいC2
2011-06-07 11:12:02771 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 11:12:03149 - INFO - <= 200 OK、アプリケーション/ JSONの1577バイトを読み込む
2011-06-07 11:12:03150 - INFO - 0.394324sで(プラットフォーム/リスト)成功
0.views.7bbeacb1082e4810bb1a6643d024496e.0.0「7bbeacb1082e4810bb1a6643d024496e」
0.time_.disconnect.date_「1307466249.487580」
0.time_.stop.date_「1307465858.607597」
0.time_.start.date_「1307465019.767619」
0.time_.build.date_「1307465019.475195」
0.time_.destroy.date_「1307466249.487347」
0.time_.connect.date_「1307466240.220381」
0.status_.detail「成功した操作を破壊する」
0.status_.value「破壊された」
0.doctype「プラットフォーム」
0._rev「7-38fe44c5a900894adf48f4a416c94338」
0.template.cls_「lib.platform.vanilla.natty.UbuntuNattyPlatform」
0._id「7bbeacb1082e4810bb1a6643d024496e」
偽0.state.running
偽0.state.transitioning
偽0.state.built
0.impl.cls_「lib.platform.vanilla.natty.UbuntuNattyPlatform」
0.interval_.destroy 9.3936290740966797
0.interval_.stop 33.600441932678223
0.interval_.build 57.54404091835022
0.interval_.start 57.836580991744995
間隔からあなたはそれが取った見ることができます:
- このプラットフォームを開始する58秒
- それを停止する33秒
- それを破壊するために9秒
あなたは、常に破壊されたプラットフォームを再起動し、再び雲のコンポーネントを再構築することができます。しかしプラットフォームとそのネストされた文書を削除完了するには、削除C2プラットフォームを発行する必要があります。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォームは削除--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:15:45235 - INFO - => DELETE https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:15:46474 - INFO - <= 204いいえコンテンツ、アプリケーション/ JSONの0バイトを読み込む
2011-06-07 11:15:46474 - INFO - 1.252582sで(プラットフォーム/削除)成功
確認するために、私たちは私たちのプラットフォームのリストが空になり見ることができます:
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のプラットフォームリスト
2011-06-07 11:15:51890 - INFO - => GET https://c2core.opdemand.com/platform
2011-06-07 11:15:52296 - INFO - <= 200 OK、アプリケーション/ JSONの2バイトを読み込む
2011-06-07 11:15:52297 - INFO - 0.423616sで(プラットフォーム/リスト)成功
ログアウト
C2情報を発行することによって、我々は我々のセッションのステータスを見ることができます:
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2の情報
2011-06-07 11:17:11656 - INFO - => GET https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11:17:12134 - INFO - <= 200 OK、アプリケーション/ JSONの4082バイトを読み込む
{
&NBSP; "アカウント": "C2-opdemand」、
&NBSP; "電子メール": "gabriel@opdemand.com」、
&NBSP; "expires_at": "2011年6月10日(金曜日)午前8時44分AM」、
&NBSP; "SESSION_ID": "73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95"
}
2011-06-07 11:17:12138 - INFO - 0.497018s中(情報)成功
ログアウトすると、単にC2ログアウトです。
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2のログアウト
2011-06-07 11:17:44903 - INFO - => DELETE https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11:17:45330 - INFO - <= 204いいえコンテンツ、アプリケーション/ JSONの0バイトを読み込む
2011-06-07 11:17:45330 - INFO - 0.443405s中(ログアウト)成功
ユーザー@ボックス:〜/ワークスペース/ C2-シェル$ c2の情報
2011-06-07 11:17:49025 - INFO - 0.000376s中(情報)成功
のC2についての
OpDemandのコマンド&コントロール·テクノロジー(C2)は、クラウド·コンピューティング·インフラの導入と管理を自動化します。 「起動、停止、クローンと、破壊する「C2は、あなたの雲の指令を与えるような単純なようにインターフェースを持つ
の要件の:ます。
- のPythonます。
コメントが見つかりません