pyghmi
Python スクリプトで IPMI コマンドを送信するために使用される Python ライブラリに問題があります。私の目標は、HTTP API を実装して、HTTP 要求を介して IPMI コマンドを送信することです。
すでにセッションを作成し、ライブラリでいくつかのコマンドを送信できますが、セッションが 30 秒間 IDLE のままになると、セッション自体がログアウトされます。セッションがログアウトされると、新しいセッションを作成できません。「セッションがログアウトされました」というエラー、またはデッドロックが発生します。
以前のセッションがログアウトされたときに新しいセッションを作成できない場合、サーバーを常に稼働させ、リクエストを受信したときにセッションを作成したい場合はどうすればよいですか?
私が試したこと:
from pyghmi.ipmi import command
ipmi = command.Command(ip, user, passwd)
res = ipmi.get_power()
print(res)
# wait 30 seconds
res2 = ipmi.get_power() # get "Session logged out" error
ipmi2 = command.Command(ip, user, paswd) # Deadlock if wait < 30 seconds, else no error
res3 = ipmi2.get_power() # get "Session logged out" error
# Impossible to create new command.Command() Session, every command will give "logged out" error
もう 1 つの問題は、呼び出しで「onlogon コールバック」関数を指定して非同期の方法を使用できないことですcommand.Command()
。これは、呼び出し元でコールバックの戻り値が必要になり、この種のスレッド動作では不可能であるためです。
編集:ここで提供されているいくつかの例を既に試しましたが、それは常に1回限りの実行スクリプトですが、永遠に「稼働」できるものを探しています.