- - PR -
ネットワーク上の相手がWindowsかを確認するには
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-19 02:13
ちゃっぴさんありがとうございます。
マルチスレッドはひとつの答えだと思います。 WMIで食いつく処理を通過できたら(Y)→Windows端末orサーバードメイン環境下用処理 ↓(N) WMISNMPで食いつけたら(要コミュニティ名)(Y)→通信機器など向け処理 ↓(N) 非SNMP環境向けの処理 上記のような処理をスレッドに叩き込んであげれば見た目止まってないように 動くでしょうし。 ただ、実行順序が追い抜かれるようなことを避けたいと思っていましたので 何とかかわせないかなとこんな実装になってしまいました。 # なんで追い抜かれたらいけないのとかは勘弁してください。 # 個々のスレッドの結果をスタックするような手法を採れば # みなさんのお手を煩わせることもなかったかもしれないですね。。。 > 望ましい方法としては、AD の computer account を > query してやればいいでしょう 渋木宏明(ひどり)さんへの返信にも書かせていただいたんですが ADの使い道がいまひとつ浮かびません。もう少しヒントをもらえないでしょうか。 | ||||||||
|
投稿日時: 2006-10-19 07:27
私は、WMIで接続できるか知りたいなら、WMIで接続できるか否かで判断します。何処まで事前処理を行ったとしても、本質的な解決にはならないですよね。
順番が前後する事が問題なら、WMIで接続を行う処理だけをマルチスレッドにすればよいでしょう。処理対象の端末のリストを持っていますよね?マルチスレッドで、それぞれの端末についてWMI形式で接続できたのか、WMISNMPで接続できたのか、非SNMP処理になったのかを、フラグを立てます。本処理はフラグが立つのを待って、続きの処理を行います。最初の数台でWMIで接続できなかった場合少々待たせることになりますが、それ以降の端末であれば殆ど待ちなしで動作するはずです。 WMIで接続できるはずなのに、WMIで接続できなかった場合を問題としているなら、調査のための情報収集としてnmapを使うのはありだと思います。その後、その端末を探し出して設定を変更するなりするわけですが。 | ||||||||
|
投稿日時: 2006-10-19 09:05
直前に書かれている通り、
すればいいのです。 AD はドメインに参加しているコンピュータの一覧を持っているんですから、それに載っていなければ「ドメインに参加していないコンピュータまたは他のネットワーク機器」ということになります。 あらかじめ書いておくと、機器がオンラインかオフラインかはまた別な問題です。 | ||||||||
|
投稿日時: 2006-10-24 02:28
アドバイスを参考に判定と後処理をマルチスレッド化して
結果の出力をスレッドごとにスタックし出力することにしました。 ADをつかうという意味では、Domain Adminsで接続に行くので WMIで接続できた=ドメインコンピュータという考えで 特にもう一度Queryをかけるようなことはしませんでした。 御礼が遅れましたが、ありがとうございました。 |