ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2020年2月22日土曜日

Python for Win32 Extensions(Pywin32)でイベントログ(Eventlog)アクセス

イベントログを取得する用件がありPythonで処理してみることに。

WEBで検索してみると意外に容易にできそうな感じでPython for Win32 Extensions(Pywin32)のwin32evtlogモジュールのReadEventLogメソッドを使用。ただ思ったほど情報は多くないけれどサンプルソースからなんとか。。。

ReadEventLogメソッドの戻り値(PyEventLogRecordオブジェクト)のプロパティからイベントビューアーにあるレベルに該当するものを探してみると同じ名前のものはなくそれらしいのはEventTypeぐらい。

ただ、調べてみると値が微妙に違う・・・

EventTypeイベントビューアーのレベルEVENTCREATEコマンドの種類(/T)
0:成功情報 Level:0SUCCESS
1:エラーエラー Level:2ERROR
2:警告警告 Level:3WARNING
4:情報情報 Level:4INFORMATION

win32evtlogの定数をDIR関数で調べてみるとEventTypeに使えそうなものが以下の様な感じかも。


  • EVENTLOG_ERROR_TYPE : 1
  • EVENTLOG_WARNING_TYPE : 2
  • EVENTLOG_INFORMATION_TYPE : 4
  • EVENTLOG_AUDIT_SUCCESS : 8
  • EVENTLOG_AUDIT_FAILURE : 16
ついでに気になったこと(上手く実装できなかった箇所)
  • win32evtlogutil.SafeFormatMessageでイベントビューアーに表示しているメッセージを取得できないイベントが存在した。
  • イベントビューアーに表示しているイベントID(EventId)とは異なっていた。



2019年11月9日土曜日

JobScheduler1.13(インストール)

JP1に代わるジョブスケジュールソフトを探していて気になっていたJobSchedulerを試してみることに。

【ダウンロード】


sso-berlin.comサイトから以下のインストーラをダウンロード


  • JobScheduler Master 1.13 Windows 64bit
  • JobScheduler JOC Cockpit (required to control JobScheduler Master) 1.13 Windows 32/64bit
  • JobScheduler Universal Agent 1.13 Windows 64bit
  • JobScheduler Object Editor

【ライセンス】


JobSchedulerはオープンソース(GNU Public License)で利用可能らしいけれどユニバーサル・エージェントの同時複数タスク実行は有償ライセンスが必要らしい

【インストール環境】


・Windows2012Server 64bit
・Windows7 64bit

【JAVA】


・jdk1.8.0._u144 _x64
サーバは既にインストールしていた別のサーバからjdkをコピーしてJAVA_HOMEを設定した状態(インストーラーからインストールしていなかったために色々はまった・・・)

【Database】

別サーバで稼働中のOracle(11.2.0.4)を使用

【JobScheduler Engine(JobScheduler Master)】


JobScheduler本体、インストール自体はそれほど難しくなくインストレーションガイドや紹介サイトを参考にすればそれほど難しくないはずだったけれど・・・

setup.cmdを実行しても実行されない、setup.cmdを見てみると内部で使用している環境変数JRE_HOMEに設定できないのが原因らしい、きっとちゃんとJDK(JRE)をインストールしなかったのが悪い、とりあえずsetup.cmdにJRE_HOMEの設定を追加して無事起動。

インストーラーに従ってインストールは完了したもののサービスが起動せず・・・ログファイルを確認してみるとjvm.dllが見つからないというエラーメッセージ

"loadLibrary, Java Virtul machine jvm.dll"

きっとこれもJAVAのインストールの仕方が原因で偶然見つけた対応方法としてconfig¥sos.iniの[java]セクションのvmパラメータを有効にしてフルパスでjvm.dllを指定して無事起動

【JOC - JobScheduler Operations Center】


JobScheduler Masterは管理画面がなくJOCのインストールすることでWEB経由に管理が可能になるらしい、JOCはJobScheduler Masterと同じサーバにインストールしようはなくhttpプロトコルで通信できるらしい。

setup.cmdを実行するとインストーラー起動せず(またか・・・)、JOCのsetup.cmdはjava.exeに環境変数が使用されていないのでとりあえずシステム環境変数のPATHに追加してjava.exeを実行できるようにしてインストール完了。

ブラウザからJOCにアクセスしてみても表示せず・・・サービスが起動していない、またjvm.dllが見つからないのかと思い色々ファイルを探してみるもののそれらしい設定がない。

JOCはApache Commons Daemonを使用してサービス化しているようなのでレジストリを確認してみるあやしい箇所があり修正してみたところ無事起動


HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432¥Node¥Apache Software Foundation¥Procrun 2.0¥sos_joc¥Parameters¥Javaの以下のキーを

(修正前)
JavaHome=JRE
Jvm=auto

(修正後)
JavaHome=明示的にJDKのパスを設定
Jvm=フルパスでjvm.dllを明示的に設定

ブラウザからhttp://localhost:[ポート番号※]/にアクセスすると無事ログイン画面が表示
※ポート番号はインストール中のJettyポート番号として設定した番号

ID:root
Pass:root

デフォルトは英語表記だけれどユーザプロファイルの設定画面から日本語の選択が可能

【JOE - JobScheduler Object Editor】


インストーラーは他と同じく日本語を選べるがJOEを起動してみると英語表記(日本語選択はない)。
JobScheduler MasterをインストールするとJOEも含まれているようでJOEをあらためてインストールする必要はなかったかもしれない

【JobScheduler Universal Agent】


リモートでのジョブ実行を試す予定なのでWindows7端末にAgentをインストールしてみるとサービスが起動しない・・・。
エラーメッセージから127.0.0.1でlistenできないような雰囲気、インストールした端末はLANを2ポート持っていて1つはリンクアップしていない状態。

試しに有効になっているLANのアドレスに変更したところ無事起動できた。

ジョブの作成は別途にメモするとしてJobScheduler EngineからWindows7端末上でジョブを実行させてみるとエラー、端末上のサービスを確認するとAgentサービスが停止している。
Agentサービスは起動はするもののジョブの実行指示を受けるとエラーが発生しサービス停止するらしい。

試しに手動でAgentを起動させてみると無事ジョブ実行出来たのでサービスの実行ユーザ(ローカルシステム:LocalSystem)からAdministratorsグループのユーザに変更してみたところやはり問題なくジョブ実行できるようになりとりあえず完了。(ローカルシステムで動作しない理由は不明のまま)

とりあえず無事インストール完了、JAVAのインストールがいい加減だったおかげで色々苦労してしまった・・・。









2019年10月12日土曜日

自動でPCが起動していまう

PCをシャットダウンしても数分後に勝手に起動してしまうようになってしまった。

きっとWake On Lanの設定と思いBIOSの設定を見直しても改善せずなんでかと思っていたらWindowsのLANドライバに設定があることを忘れていた。

使用しているIntel 82579LM Gigabit Network Connectionのプロパティの「電源管理」タブにあるWake on LAN設定にある以下の項目のチェックを外した。

  • Wake On Magic Packet
  • Wake on Link
  • Wake on Pattern Match


最初はWake on Linkだけ外したけれどそれだけでは起動してしまった。

2018年6月16日土曜日

Windowsでポートフォワード

事情により直接ネットワークが繋がっていない別セグメントにあるOracleに接続させる要件がありあれこれ調べてみた。

幸いにもそれぞれのセグメントに繋がっているWindowsサーバがあり活用できないかとポートフォワードあたりをキーワードに検索するとSSHを使う方法がかなりヒットする。

ただ今回は通信を暗号化するする必要もなくただのルーターの様に動作してくれれば十分、そして見つけたのがnetshコマンドを利用したportproxy


  • クライアントアドレス:192.168.0.1
  • Windowsサーバアドレス:192.168.0.2、10.10.0.1
  • Windowsポートフォワード受付ポート番号:61521
  • Oracleサーバアドレス:10.10.0.2
  • Oracleリスナーポート番号:1521


(ポートフォワード登録)
netsh interface port proxy add v4tov4 listenport=61521 listenaddr=192.168.0.2 connectport=1521 connectaddress=10.10.0.2

(登録確認)
nets interface port proxy show all

(ポートフォワード削除)
nets interface portproxy delete v4tov4 listenport=61521 listenaddress=192.168.0.2


ポートフォワード設定した状態でクライアントからsqlplusコマンドでWindowsサーバのアドレス(192.168.0.2)の61521ポートに対して接続を行うとOracleサーバ(10.10.0.2)の1521ポートに接続された。

なんと便利なことか。

ただし、OracleがRAC構成の場合でSCAN VIPアドレスに繋げようとすると接続が失敗するので注意が必要。その場合はRACのどこかのノードのローカルリスナーに接続させてしまうのがいいかのかも(※可用性は低下)

2018年3月3日土曜日

jw-cadメモ

・長方形の一辺を楕円にする
楕円→接楕円→3点半楕円
・レイヤー表示設定
ボタンを選択後にマウスを描画面に移動させないと設定が反映されない
・レイヤの印刷順番
デフォルトは0の小さい番号が最上面、基本設定で印刷順を逆に変更可能
・補助線は印刷されない