私は Python の素晴らしさを身につけるために努力してきましたが、私が学ぶための最良の方法の 1 つは実行することです。そのため、私が取り組んできた多くのプロジェクトの 1 つは、Cisco UCS 環境からファームウェア情報を取得することです。シスコが UCS をクエリするための Python SDK を提供していることを発見した後。私はそれを私の出発点として使用しました。以下は、UCS とは何か、および UCS Python SDK を明確にするためのリンクです。
Cisco UCS の説明: http://www.cisco.com/c/en/us/products/servers-unified-computing/index.html
Cisco UCS Python SDK: https://communities.cisco.com/docs/DOC-37174
Cisco dev サイトから参照されたスクリプト: https://sreeninet.wordpress.com/2014/09/20/cisco-ucs-automation-using-python-sdk/ <-- これは私のスクリプトのコードの大部分が来たところですから、主要な小道具から Sreenivas まで。
私のスクリプト: http://pastebin.com/txjnHi9q
サーバー ブレード、シャーシ、およびファブリック インターコネクトのそれぞれについて、名前、モデル、およびファームウェアのバージョンを取得したいだけです。したがって、シスコが提供する SDK と上記のリンクにあるスクリプトの大部分を使用すると、私のスクリプトは UCS にログインし、A と B のファブリック インターコネクト、UCS マネージャにクエリを実行して、モデルとファームウェアの両方のバージョンを取得できます。
私のスクリプトは、次のような結果を表示します。
UCS Manager Version: 2.2(3f)
Fabric Interconnect A:
Model: N10-S6200
Software Ver: 5.2(3)N2(2.23f)
Fabric Interconnect B:
Model: N10-S6200
Software Ver: 5.2(3)N2(2.23f)
Blade Chassis:
N20-C6508
N20-C6508
Blade Servers:
N20-B6625-1
N20-B6625-1
上記のように、ファブリック インターコネクトと UCS Manager のファームウェア バージョンを正常に取得できました。ブレードシャーシとブレードサーバーの名前、モデル、およびファームウェアを取得するために同じ方法を使用しようとしましたが、それがこの初心者にとってより困難な場所です.
上記のスクリプトの 46 行目を見ると、次のコードが表示されます。
molist = handle.GetManagedObject(None, None, {OrgOrg.DN:"sys/mgmt/fw-system"}
「sys/mgmt/fw-system」は、ファームウェアのバージョンを取得しようとしたときに混乱する場所です。以下に示すように、124 行目と 133 行目で参照されているブレードとシャーシのモデル番号しか取得できません。
molist = handle.GetManagedObject(None, EquipmentChassis.ClassId())
molist1 = handle.GetManagedObject(None, ComputeBlade.ClassId())
UCS はブレードのファームウェアを「sys/chassis-N/slot-N/mgmt/fw-system」に保存します。N はシャーシとスロットの番号です。シャーシ 1 をシャーシ 2 -3 -4 などに増やし、スロット 1 をスロット 2 -3 -4 に増やしてみました。シャーシの数と各シャーシのブレードの数が常に同じではないため、これは機能しませんでした。たとえば、各シャーシは最大 8 つのサーバー ブレード (スロット) を保持できますが、すべてのシャーシに 8 つすべてが取り付けられているわけではありません。ブレードが 2 つあるものもあれば、6 つあるものもあります。最初のシャーシを通り過ぎて、シャーシ 2 にインクリメントしようとすると、スクリプトは無期限に一時停止します。関係ないかもしれませんが、シャーシとスロットの数が 3 桁になる可能性があることも考慮する必要があります。
Python で上記を実行する方法についてのアイデアはありますか?
関連する情報を見逃していた場合は、お詫び申し上げます。できる限りの質問に喜んでお答えします。:D