2017-03-14 14 views
0

ここにコードがある、これまでの変数に関する
注:
'ports' - これは、サーバーの任意の数を含んでいます
'nodes_u'「ポートのリストに任意の数のポートがあるかもしれません名前とIPアドレスのペア
'serv_name_u'は何でもかまいませんが、
'port_qty'定義された後、静的である「ポートの書式設定+ forループの入れ子になった複数のリスト

ports = ['443', '80'] 
nodes_u = ['SERVER1', '10.0.0.1', 'SERVER2', '10.0.0.2'] 
serv_name_u = "TESTING" 
port_qty = 2 

for i in range(0, len(ports)): 
    print("ltm pool "+serv_name_u+"_{0}_pool {{ \n members {{" 
      .format(ports[i])) 
    for i in range(0, len(nodes_u), 2): 
     print("  {0} {{ \n   address {1} \n  }}" 
       .format(nodes_u[i], nodes_u[i+1])) 
に記載されているポートの数に等しいですここ

が出力

ltm pool TESTING_443_pool { 
    members { 
     SERVER1 { 
      address 10.0.0.1 
     } 
     SERVER2 { 
      address 10.0.0.2 
     } 
ltm pool TESTING_80_pool { 
    members { 
     SERVER1 { 
      address 10.0.0.1 
     } 
     SERVER2 { 
      address 10.0.0.2 
     } 

の一例である私の質問あるいは私が把握しようとしていますが、私は唯一のプール部にサーバー名の後に表示されるポート番号を取得する方法です!出力はこのようになります。

ltm pool TESTING_443_pool { 
    members { 
     SERVER1:443 { <<<Port Number Here! 
      address 10.0.0.1 
     } 
     SERVER2:443 { <<<Port Number Here! 
      address 10.0.0.2 
     } 
ltm pool TESTING_80_pool { 
    members { 
     SERVER1:80 { <<<Port Number Here! 
      address 10.0.0.1 
     } 
     SERVER2:80 { <<<Port Number Here! 
      address 10.0.0.2 
     } 

私は何かを試すたびに、両方のポートがリストされてしまうか、または「ポート」リストのインデックス範囲を超えて繰り返しが繰り返されます。また、入力をキャプチャするか出力を生成する良い方法がある場合、私はすべての耳です!

+3

ようこそStackOverflow。 [良い質問をするにはどうすればよいですか?](http://stackoverflow.com/help/how-to-ask)と[最小限の完全かつ検証可能なサンプルを作成する方法](http:// stackoverflow。 com/help/mcve)、返信して質問を言い直してください –

+0

フィードバックに素敵な回答:)このような方法でこれらの文字列を作成する理由はありますか?印刷出力の特定のインデントレベルを欲しいという問題はありますか? – roganjosh

+0

ええと私は基本的にF5ロードバランサに貼り付けることができるコードを出力する小さなスクリプトを書こうとしています。おそらくF5のためのAPIがありますが、私はそれをまだ進歩させていません! :)とにかく、それは期待している特定の構文があり、それは私が生産しようとしている出力です。 –

答えて

0

ネストさfor -loopを削除し、ちょうど外側for - ループの両方で印刷ステートメントを含む、インデックス:{1}に挿入port数:

for i in range(0, len(ports)): 
    print("ltm pool "+serv_name_u+"_{0}_pool {{ \n members {{" 
      .format(ports[i])) 
    # for i in range(0, len(nodes_u), 2): 
    print("  {0}:{1} {{ \n   address {2} \n  }}" 
      .format(nodes_u[i], ports[i], nodes_u[i+1])) 

出力:

List of nodes: 
ltm node SERVER1 { 
    address 10.0.0.1 
    } 
ltm node SERVER2 { 
    address 10.0.0.2 
    } 
ltm pool TESTING_443_pool { 
    members { 
     SERVER1:443 { 
      address 10.0.0.1 
     } 
ltm pool TESTING_80_pool { 
    members { 
     10.0.0.1:80 { 
      address SERVER2 
     } 

試み#2: 異なるインクリメンタ名(iおよびj)を使用すると、

for i in range(0, len(ports)): 
    print("ltm pool "+serv_name_u+"_{0}_pool {{ \n members {{" 
      .format(ports[i])) 
    for j in range(0, len(nodes_u), 2): 
     print("  {0}:{1} {{ \n   address {2} \n  }}" 
       .format(nodes_u[j], ports[i], nodes_u[j+1])) 

が出力:二つのリストを区別するために、ネストされたfor -loopsは、所望の出力を得ることで入力をキャプチャまたは出力を生成するためのより良い方法については

ltm pool TESTING_443_pool { 
    members { 
     SERVER1:443 { 
      address 10.0.0.1 
     } 
     SERVER2:443 { 
      address 10.0.0.2 
     } 
ltm pool TESTING_80_pool { 
    members { 
     SERVER1:80 { 
      address 10.0.0.1 
     } 
     SERVER2:80 { 
      address 10.0.0.2 
     } 

を、使用することを検討してください入力のための異なるデータ構造、keysnameportvaluesとそれぞれ対応するvaluesと入力します。

+0

ほぼそうではありません!私はそれを試して、あなたと同じ出力を得ました、各プールは両方のサーバーをメンバーとして含めるべきです。また、サーバーの名前を印刷する代わりにTESTING_80_poolをよく見て、IPを印刷した後、サーバーの名前。私はこれがステップサイズ2と関係していると信じています。 –

+0

ああ、私の間違いは、最初の出力例の代わりに2番目の出力をターゲット出力として使用しました。それを指摘してくれてありがとう! :)私はそれを修正しようとします。 – davedwards

+0

@Charles Crosland私はあなたが正しいと思う、問題はあなたが提案したものに似ているようだ、私は別のショットを与えた。 – davedwards

関連する問題