FUJITSU Software Systemwalker Centric Manager API・スクリプトガイド UNIX/Windows(R)共通 J2X1-7813-03Z0(00) 2014年10月 まえがき 本書の目的 本書は、Systemwalker Centric Managerが提供するAPIの機能概要、APIのリファレンス、サンプルスクリプトの機能概要、 カスタマイズ、使用方法について説明しています。 本書の読者 本書は、Systemwalker Centric Managerが提供するAPIおよびサンプルスクリプト(インテリジェントサービス)を利用し、ア プリケーションからSystemwalker Centric Managerの機能を利用される方を対象としています。 また、本書を読む場合、OSやGUIの一般的な操作、およびTCP/IP、SMTP、SNMPなどの一般的な知識をご理解の上で お読みください。 本書の表記について エディションによる固有記事について Systemwalker Centric Managerのマニュアルでは、標準仕様である“Systemwalker Centric Manager Standard Edition”の 記事と区別するため、エディションによる固有記事に対して以下の記号をタイトル、または本文に付けています。 EE: “Systemwalker Centric Manager Enterprise Edition”の固有記事 GEE: “Systemwalker Centric Manager Global Enterprise Edition”の固有記事 EE/GEE: “Systemwalker Centric Manager Enterprise Edition”、および“Systemwalker Centric Manager Global Enterprise Edition”の固有記事 固有記事の範囲は、タイトル、または本文に付いた場合で以下のように異なります。 タイトルに付いている場合 章/節/項などのタイトルに付いている場合、タイトルの説明部分全体が、固有記事であることを示します。この場合、タ イトルに対して、オンラインマニュアルの場合は色付けされます。 本文に付いている場合 固有記事全体に対して、オンラインマニュアルの場合は色付けされます。 Windows版とUNIX版の固有記事について 本書は、Windows版、UNIX版共通に記事を掲載しています。Windows版のみの記事、UNIX版のみの記事は、以下の ように記号を付けて共通の記事と区別しています。 本文中でWindows版とUNIX版の記載が分かれる場合は、“Windows版の場合は~”、“UNIX版の場合は~”のように 場合分けして説明しています。 タイトル【Windows版】 タイトル、小見出しの説明部分全体が、Windows版固有の記事です。 タイトル【UNIX版】 タイトル、小見出しの説明部分全体が、UNIX版固有の記事です。 -i- 記号について 画面項目名、およびコマンドで使用する記号について説明します。 [ ]記号 Systemwalker Centric Managerで提供している画面名、メニュー名、および画面項目名をこの記号で囲んでいます。 コマンドで使用する記号 コマンドで使用している記号について以下に説明します。 - 記述例 [PARA={a |b |c |… }] - 記号の意味 記号 意味 [] この記号で囲まれた項目を省略できることを示します。 {} この記号で囲まれた項目の中から、どれか1つを選択することを示します。 _ 省略可能記号“[ ]”内の項目をすべて省略したときの省略値が、下線で示された項目 であることを示します。 | この記号を区切りとして並べられた項目の中から、どれか1つを選択することを示しま す。 … この記号の直前の項目を繰り返して指定できることを示します。 略語表記について 本書では、以下の略称を使用しています。 オペレーティングシステム 正式名称 略称 Microsoft(R) Windows Server(R) 2012 R2 Foundation (x64) Windows Server 2012 Microsoft(R) Windows Server(R) 2012 R2 Standard (x64) Windows Server(R) 2012 Microsoft(R) Windows Server(R) 2012 R2 Datacenter (x64) Windows Server® 2012 Microsoft(R) Windows Server(R) 2012 Foundation (x64) Microsoft(R) Windows Server(R) 2012 Standard (x64) Microsoft(R) Windows Server(R) 2012 Datacenter (x64) Microsoft(R) Windows Server(R) 2012 R2 Foundation (x64) Windows Server 2012 R2 Microsoft(R) Windows Server(R) 2012 R2 Standard (x64) Windows Server(R) 2012 R2 Microsoft(R) Windows Server(R) 2012 R2 Datacenter (x64) Windows Server® 2012 R2 Microsoft(R) Windows Server(R) 2008 Datacenter Windows Server 2008 DTC Microsoft(R) Windows Server(R) 2008 Datacenter without HyperV(TM) Windows Server(R) 2008 DTC Microsoft(R) Windows Server(R) 2008 R2 Datacenter Windows Server 2008 R2 DTC Windows Server® 2008 DTC Windows Server(R) 2008 R2 DTC Windows Server® 2008 R2 DTC - ii - 正式名称 略称 Microsoft(R) Windows Server(R) 2008 Enterprise Windows Server 2008 EE Microsoft(R) Windows Server(R) 2008 Enterprise without HyperV(TM) Windows Server(R) 2008 EE Microsoft(R) Windows Server(R) 2008 R2 Enterprise Windows Server 2008 R2 EE Windows Server® 2008 EE Windows Server(R) 2008 R2 EE Windows Server® 2008 R2 EE Microsoft(R) Windows Server(R) 2008 Standard Windows Server 2008 STD Microsoft(R) Windows Server(R) 2008 Standard without HyperV(TM) Windows Server(R) 2008 STD Microsoft(R) Windows Server(R) 2008 R2 Standard Windows Server 2008 R2 STD Windows Server® 2008 STD Windows Server(R) 2008 R2 STD Windows Server® 2008 R2 STD Microsoft(R) Windows Server(R) 2008 Foundation Windows Server 2008 Foundation Windows Server(R) 2008 Foundation Windows Server® 2008 Foundation Microsoft(R) Windows Server(R) 2008 R2 Foundation Windows Server 2008 R2 Foundation Windows Server(R) 2008 R2 Foundation Windows Server® 2008 R2 Foundation Server Coreインストールした以下のOS Windows Server 2008 Server Core Microsoft(R) Windows Server(R) 2008 Standard Windows Server(R) 2008 Server Core Microsoft(R) Windows Server(R) 2008 Standard without HyperV(TM) Windows Server® 2008 Server Core Microsoft(R) Windows Server(R) 2008 Enterprise Microsoft(R) Windows Server(R) 2008 Enterprise without HyperV(TM) Microsoft(R) Windows Server(R) 2008 Datacenter Microsoft(R) Windows Server(R) 2008 Datacenter without HyperV(TM) Microsoft(R) Windows Server(R) 2008 R2 Foundation Windows Server 2008 R2 Microsoft(R) Windows Server(R) 2008 R2 Standard Windows Server(R) 2008 R2 Microsoft(R) Windows Server(R) 2008 R2 Enterprise Windows Server® 2008 R2 Microsoft(R) Windows Server(R) 2008 R2 Datacenter Microsoft® Windows Server® 2008 for Itanium-Based Systems Windows Server 2008 for Itanium-Based Systems Microsoft® Windows Server® 2008 Foundation Windows Server 2008 Microsoft® Windows Server® 2008 Standard Windows Server(R) 2008 Microsoft® Windows Server® 2008 Enterprise Windows Server® 2008 Microsoft® Windows Server® 2008 Datacenter Microsoft® Windows Server® 2008 Standard without Hyper-V(TM) Microsoft® Windows Server® 2008 Enterprise without HyperV(TM) - iii - 正式名称 略称 Microsoft® Windows Server® 2008 Datacenter without HyperV(TM) Microsoft® Windows Server® 2008 R2 Foundation Microsoft® Windows Server® 2008 R2 Standard Microsoft® Windows Server® 2008 R2 Enterprise Microsoft® Windows Server® 2008 R2 Datacenter Microsoft(R) Windows Server(R) 2003 R2, Datacenter x64 Edition Windows Server 2003 DTC Microsoft(R) Windows Server(R) 2003 R2, Datacenter Edition Windows Server(R) 2003 DTC Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition Windows Server® 2003 DTC Microsoft(R) Windows Server(R) 2003, Datacenter Edition for Itanium-based Systems Microsoft(R) Windows Server(R) 2003, Datacenter Edition Microsoft(R) Windows Server(R) 2003 R2, Datacenter x64 Edition Windows Server 2003 DTC (x64) Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition Windows Server(R) 2003 DTC (x64) Windows Server® 2003 DTC (x64) Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition Windows Server 2003 EE Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition Windows Server(R) 2003 EE Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition Windows Server® 2003 EE Microsoft(R) Windows Server(R) 2003, Enterprise Edition for Itanium-based Systems Microsoft(R) Windows Server(R) 2003, Enterprise Edition Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition Windows Server 2003 EE (x64) Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition Windows Server(R) 2003 EE (x64) Windows Server® 2003 EE (x64) Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition Windows Server 2003 STD Microsoft(R) Windows Server(R) 2003 R2, Standard Edition Windows Server(R) 2003 STD Microsoft(R) Windows Server(R) 2003, Standard x64 Edition Windows Server® 2003 STD Microsoft(R) Windows Server(R) 2003, Standard Edition Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition Windows Server 2003 STD (x64) Microsoft(R) Windows Server(R) 2003, Standard x64 Edition Windows Server(R) 2003 STD (x64) Windows Server® 2003 STD (x64) Microsoft(R) Windows Server(R) 2003, Standard Edition Windows Server 2003 Microsoft(R) Windows Server(R) 2003, Enterprise Edition Windows Server(R) 2003 Microsoft(R) Windows Server(R) 2003, Datacenter Edition Windows Server® 2003 Microsoft(R) Windows Server(R) 2003, Standard x64 Edition Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition Microsoft(R) Windows Server(R) 2003 R2, Standard Edition Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition - iv - 正式名称 略称 Microsoft(R) Windows Server(R) 2003 R2, Datacenter Edition Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition Microsoft(R) Windows Server(R) 2003 R2, Datacenter x64 Edition Microsoft(R) Windows Server(R) 2003, Enterprise Edition for Itanium-based Systems Microsoft(R) Windows Server(R) 2003, Datacenter Edition for Itanium-based Systems Microsoft(R) Windows Server(R) 2003, Standard x64 Edition Windows Server 2003 x64 Editions Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition Windows Server(R) 2003 x64 Editions Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition Windows Server® 2003 x64 Editions Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition Microsoft(R) Windows Server(R) 2003 R2, Datacenter x64 Edition Microsoft(R) Windows(R) 2000 Professional Windows 2000 Microsoft(R) Windows(R) 2000 Server Windows(R) 2000 Microsoft(R) Windows(R) 2000 Advanced Server Windows® 2000 Microsoft(R) Windows(R) 2000 Datacenter Server Windows(R) 8.1 (x86) Windows 8 Windows(R) 8.1 Pro (x86) Windows(R) 8 Windows(R) 8.1 Enterprise (x86) Windows® 8 Windows(R) 8.1 (x64) Windows(R) 8.1 Pro (x64) Windows(R) 8.1 Enterprise (x64) Windows(R) 8 (x86) Windows(R) 8 Pro (x86) Windows(R) 8 Enterprise (x86) Windows(R) 8 (x64) Windows(R) 8 Pro (x64) Windows(R) 8 Enterprise (x64) Windows(R) 8.1 (x86) Windows 8.1 Windows(R) 8.1 Pro (x86) Windows(R) 8.1 Windows(R) 8.1 Enterprise (x86) Windows® 8.1 Windows(R) 8.1 (x64) Windows(R) 8.1 Pro (x64) Windows(R) 8.1 Enterprise (x64) Windows(R) 7 Home Premium Windows 7 Windows(R) 7 Professional Windows(R) 7 Windows(R) 7 Enterprise Windows® 7 Windows(R) 7 Ultimate -v- 正式名称 略称 Windows Vista(R) Home Basic Windows Vista Windows Vista(R) Home Premium Windows Vista(R) Windows Vista(R) Business Windows Vista® Windows Vista(R) Enterprise Windows Vista(R) Ultimate Microsoft(R) Windows(R) XP Professional x64 Edition Windows XP Microsoft(R) Windows(R) XP Professional Windows(R) XP Microsoft(R) Windows(R) XP Home Edition Windows® XP Microsoft(R) Windows NT(R) Server network operating system Version 4.0 Windows NT Microsoft(R) Windows NT(R) Workstation operating system Version 4.0 Windows NT(R) Windows NT® Microsoft(R) Windows NT(R) Server network operating system Version 3.51 Microsoft(R) Windows NT(R) Workstation operating system Version 3.51 Microsoft(R) Windows NT(R) Server network operating system Version 4.0 Windows NT(R) Server Microsoft(R) Windows NT(R) Server network operating system Version 3.51 Microsoft(R) Windows NT(R) Workstation operating system Version 4.0 Windows NT(R) Workstation Microsoft(R) Windows NT(R) Workstation operating system Version 3.51 Microsoft(R) Windows NT(R) Server network operating system Version 4.0 Microsoft(R) Windows NT(R) Workstation operating system Version 4.0 Microsoft(R) Windows(R) 95 operating system、Microsoft(R) Windows(R) 95 Second Edition Windows NT 4.0 Windows NT(R) 4.0 Windows NT® 4.0 Windows 95 Windows(R) 95 Windows® 95 Microsoft(R) Windows(R) 98 operating system、Microsoft(R) Windows(R) 98 Second Edition Windows 98 Windows(R) 98 Windows® 98 Microsoft(R) Windows(R) Millennium Edition Windows Me Windows(R) Me Windows® Me 上記のオペレーティングシステムすべて Windows Windows(R) Windows® Microsoft(R) Windows Azure(R) Windows Azure Windows Azure(R) - vi - 正式名称 略称 Windows Azure® Solaris 11 Solaris(注) Solaris 10 Solaris 9 Red Hat Enterprise Linux 7 Linux Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 7 (for Intel64) Linux for Intel64 Red Hat Enterprise Linux 6 (for Intel64) Red Hat Enterprise Linux 5 (for Intel64) Red Hat Enterprise Linux 6 (for x86) Linux for x86 Red Hat Enterprise Linux 5 (for x86) Itaniumに対応したWindows Windows for Itanium Itaniumに対応したLinux Linux for Itanium 注) Oracle SolarisはSolaris、Solaris Operating System、Solaris OSと記載することがあります。 その他の製品 製品名称 略称 Microsoft(R) SQL Server(TM) SQL Server Microsoft(R) Visual C++ Visual C++ Microsoft(R) Internet Explorer Internet Explorer Systemwalker Centric Managerの表記 略称 Systemwalker Centric Manager Windows上で動作するSystemwalker Centric Manager Windows版 32bit版のWindows上で動作するSystemwalker Centric Manager Windows(32bit)版 64bit版のWindows上で動作するSystemwalker Centric Manager Windows(64bit)版 Solaris上で動作するSystemwalker Centric Manager Solaris版 Linux上で動作するSystemwalker Centric Manager Linux版 以下のLinux上で動作するSystemwalker Centric Manager Linux for Intel64版 ・ Red Hat Enterprise Linux 7 (for Intel64) ・ Red Hat Enterprise Linux 6 (for Intel64) ・ Red Hat Enterprise Linux 5 (for Intel64) 以下のLinux上で動作するSystemwalker Centric Manager Linux for x86版 ・ Red Hat Enterprise Linux 6 (for x86) ・ Red Hat Enterprise Linux 5 (for x86) HP-UXで動作するSystemwalker Centric Manager V13.2.0 HP-UX版 AIXで動作するSystemwalker Centric Manager V13.2.0 AIX版 - vii - 略称 Systemwalker Centric Manager Itaniumに対応したLinux上で動作するSystemwalker Centric Manager Linux for Itanium版 Itaniumに対応したWindows上で動作するSystemwalker Centric Manager Windows for Itanium版 輸出管理規制について 本ドキュメントを輸出または第三者へ提供する場合は、お客様が居住する国および米国輸出管理関連法規等の規制を ご確認のうえ、必要な手続きをおとりください。 商標について Apache、Tomcatは、The Apache Software Foundationの登録商標または商標です。 APC、PowerChuteは、American Power Conversion Corp.の登録商標です。 ARCserveは、米国CA Technologiesの登録商標です。 Citrix、MetaFrameは、Citrix Systems, Inc.の米国およびその他の国における登録商標です。 Ethernetは、富士ゼロックス株式会社の登録商標です。 HP-UXは、米国Hewlett-Packard社の登録商標です。 IBM、IBMロゴ、AIX、AIX 5L、HACMP、Power、PowerHAは、International Business Machines Corporationの米国およ びその他の国における商標です。 Intel、Itaniumは、米国およびその他の国におけるIntel Corporationまたはその子会社の商標または登録商標です。 JP1は、株式会社日立製作所の日本における商標または登録商標です。 LANDeskは、米国およびその他の国におけるAvocent Corporationとその子会社の商標または登録商標です。 Laplinkは、米国Laplink Software, Inc.の米国およびその他の国における登録商標または商標です。 Linuxは、Linus Torvalds氏の米国およびその他の国における商標または登録商標です。 MC/ServiceGuardは、Hewlett-Packard Companyの製品であり、著作権で保護されています。 Microsoft、Windows、Windows NT、Windows Vista、Windows Serverまたはその他のマイクロソフト製品の名称および 製品名は、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。 Mozilla、Firefoxは、米国Mozilla Foundationの米国およびその他の国における商標または登録商標です。 NEC、SmartVoice、WinShareは、日本電気株式会社の商標または登録商標です。 Netscape、Netscapeの N および操舵輪のロゴは、米国およびその他の国におけるNetscape Communications Corporation の登録商標です。 OpenLinuxは、The SCO Group, Inc.の米国ならびその他の国における登録商標あるいは商標です。 Oracleは、米国Oracle Corporationの登録商標です。 Palm、Palm OSは、Palm Trademark Holding Company LLCの商標または登録商標です。 R/3およびSAPは、SAP AGの登録商標です。 Red Hat、RPMおよびRed Hatをベースとしたすべての商標とロゴは、Red Hat, Inc.の米国およびその他の国における商 標または登録商標です。 OracleとJavaとGlassFishは、Oracle Corporation およびその子会社、関連会社の米国およびその他の国における登録商 標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 Symantec、Symantecロゴ、LiveUpdate、Norton AntiVirusは、Symantec Corporationの米国およびその他の国における登 録商標です。 Symantec pcAnywhere、Symantec Packager、ColorScale、SpeedSendは、Symantec Corporationの米国およびその他の国 における商標です。 - viii - Tcl/Tkは、カリフォルニア大学、Sun Microsystems, Inc.、Scriptics Corporation他が作成したフリーソフトです。 TRENDMICRO、Trend Micro Control Manager、Trend Virus Control System、TVCS、InterScan、ウイルスバスター、 INTERSCAN VIRUSWALL、eManagerは、トレンドマイクロ株式会社の登録商標です。 UNIXは、米国およびその他の国におけるThe Open Groupの登録商標です。 UXP、Systemwalker、Interstage、Symfowareは、富士通株式会社の登録商標です。 Veritasは、Symantec Corporationの米国およびその他の国における登録商標です。 VirusScanおよびNetShieldは、米国McAfee, Inc.および関連会社の商標または登録商標です。 VMware、VMwareロゴ、Virtual SMP、VMotionはVMware, Inc.の米国およびその他の国における登録商標または商標 です。 Windows Azureは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。 Zabbixはラトビア共和国にあるZabbix SIAの商標です。 ショートメール、iモード、mova、シティフォンは、株式会社エヌ・ティ・ティ・ドコモ(以下NTTドコモ)の登録商標です。 その他の会社名および製品名は、それぞれの会社の商標もしくは登録商標です。 Microsoft Corporationのガイドラインに従って画面写真を使用しています。 平成26年10月 改版履歴 平成25年 10月 初 版 平成26年 1月 第2版 平成26年 10月 第3版 Copyright 1995-2014 FUJITSU LIMITED All Rights Reserved, Copyright (C) PFU LIMITED 1995-2014 - ix - 目 次 第1部 概要................................................................................................................................................................................1 第1章 APIの概要.......................................................................................................................................................................2 1.1 Systemwalker APIとは.........................................................................................................................................................................2 1.2 提供するAPIの機能............................................................................................................................................................................2 第2章 スクリプトの概要..............................................................................................................................................................4 2.1 Systemwalkerスクリプトとは.................................................................................................................................................................4 2.2 提供するスクリプトの概要....................................................................................................................................................................4 2.3 サンプルスクリプト一覧........................................................................................................................................................................6 第2部 API..................................................................................................................................................................................8 第3章 APIの機能概要................................................................................................................................................................9 3.1 システム監視のAPI.............................................................................................................................................................................9 3.1.1 監視イベントのAPI.......................................................................................................................................................................9 3.1.1.1 監視イベントログを読み出す..............................................................................................................................................12 3.1.1.2 イベントを監視する..............................................................................................................................................................12 3.1.1.3 監視イベントを対処する......................................................................................................................................................13 3.1.2 監視メッセージのAPI.................................................................................................................................................................14 3.1.2.1 メッセージを監視する..........................................................................................................................................................17 3.1.2.2 メッセージログを読み出す..................................................................................................................................................18 3.1.3 リモートコマンドのAPI................................................................................................................................................................18 3.1.4 リモートコマンド処理の出口用API............................................................................................................................................21 3.1.5 メッセージ作成のAPI.................................................................................................................................................................25 3.1.6 動作環境....................................................................................................................................................................................27 3.1.7 システム監視のAPIを利用する..................................................................................................................................................27 3.1.8 システム監視のAPIの利用を解除する......................................................................................................................................28 3.1.9 使用時の留意事項.....................................................................................................................................................................29 3.2 アクション管理のAPI.........................................................................................................................................................................29 3.2.1 アクション管理のAPI..................................................................................................................................................................29 3.2.2 アクション管理の出口情報.........................................................................................................................................................31 3.2.3 メール通報エンコードライブラリの作成方法.............................................................................................................................33 3.3 ネットワーク管理のAPI......................................................................................................................................................................35 3.3.1 ネットワーク管理のAPI用共通パラメタ......................................................................................................................................37 3.4 性能監視のAPI.................................................................................................................................................................................41 3.4.1 トラフィック情報の獲得...............................................................................................................................................................41 3.4.2 トラフィック情報格納構造体.......................................................................................................................................................42 3.5 返答メッセージのAPI【UNIX版】......................................................................................................................................................44 第4章 APIリファレンス..............................................................................................................................................................46 4.1 Mp_CallPager2()関数......................................................................................................................................................................46 4.2 Mp_ChangeEventStat()関数............................................................................................................................................................49 4.3 Mp_CloseEvent()関数.....................................................................................................................................................................52 4.4 Mp_CloseEventLog()関数...............................................................................................................................................................54 4.5 Mp_CloseEventStat()関数...............................................................................................................................................................55 4.6 Mp_CloseMsg()関数........................................................................................................................................................................56 4.7 Mp_CloseMsgLog()関数.................................................................................................................................................................58 4.8 Mp_CloseRemoteCmd()関数...........................................................................................................................................................60 4.9 Mp_CloseRemoteCmdLog()関数....................................................................................................................................................61 4.10 Mp_ExecRemoteCmd()関数..........................................................................................................................................................62 4.11 Mp_FreeActionInfo()関数【Windows版】......................................................................................................................................64 4.12 Mp_FreeActionInfo2()関数...........................................................................................................................................................65 4.13 Mp_GetActionInfo()関数【Windows版】.......................................................................................................................................66 4.14 Mp_GetActionInfo2()関数.............................................................................................................................................................70 4.15 Mp_GetEventMap()関数【Windows版】........................................................................................................................................74 -x- 4.16 Mp_GetMsgMap()関数【Windows版】..........................................................................................................................................78 4.17 Mp_GetNodeIFTraffic()関数.........................................................................................................................................................87 4.18 Mp_GetRemoteCmdMap()関数【Windows版】.............................................................................................................................88 4.19 Mp_OpenEvent()関数....................................................................................................................................................................91 4.20 Mp_OpenEventLog()関数.............................................................................................................................................................93 4.21 Mp_OpenEventStat()関数..............................................................................................................................................................96 4.22 Mp_OpenMsg()関数......................................................................................................................................................................98 4.23 Mp_OpenMsgLog()関数................................................................................................................................................................99 4.24 Mp_OpenRemoteCmd()関数.......................................................................................................................................................102 4.25 Mp_OpenRemoteCmdLog()関数.................................................................................................................................................103 4.26 Mp_PlaySound()関数【Windows版】...........................................................................................................................................105 4.27 Mp_PlaySound2()関数.................................................................................................................................................................108 4.28 Mp_PopupDomain()関数【Windows版】.....................................................................................................................................111 4.29 Mp_PopupDomain2()関数...........................................................................................................................................................113 4.30 Mp_PopupSession()関数【Windows版】......................................................................................................................................115 4.31 Mp_PopupSession2()関数...........................................................................................................................................................117 4.32 Mp_PopupUser()関数【Windows版】...........................................................................................................................................118 4.33 Mp_PopupUser2()関数................................................................................................................................................................121 4.34 Mp_ReadEvent()関数..................................................................................................................................................................124 4.35 Mp_ReadEventLog()関数............................................................................................................................................................129 4.36 Mp_ReadMsg()関数.....................................................................................................................................................................136 4.37 Mp_ReadMsgLog()関数..............................................................................................................................................................146 4.38 Mp_ReadRemoteCmdLog()関数.................................................................................................................................................159 4.39 Mp_RespRemoteCmd()関数........................................................................................................................................................162 4.40 Mp_SendEMail()関数..................................................................................................................................................................166 4.41 Mp_SendEMail2()関数................................................................................................................................................................170 4.42 Mp_SendMSMail2()関数.............................................................................................................................................................174 4.43 Mp_StopAction()関数..................................................................................................................................................................178 4.44 Mp_StopSound()関数..................................................................................................................................................................180 4.45 NWsnmpCleanup()関数...............................................................................................................................................................182 4.46 NWsnmpClose()関数...................................................................................................................................................................182 4.47 NWsnmpDot2Mib()関数.............................................................................................................................................................183 4.48 NWsnmpFree()関数.....................................................................................................................................................................184 4.49 NWsnmpMib2Dot()関数.............................................................................................................................................................185 4.50 NWsnmpMibFree()関数..............................................................................................................................................................186 4.51 NWsnmpMibLoad()関数.............................................................................................................................................................186 4.52 NWsnmpOpen()関数...................................................................................................................................................................187 4.53 NWsnmpPduDecode()関数..........................................................................................................................................................188 4.54 NWsnmpPduEncode()関数..........................................................................................................................................................189 4.55 NWsnmpPduFree()関数...............................................................................................................................................................192 4.56 NWsnmpPerror()関数..................................................................................................................................................................193 4.57 NWsnmpReadSelect()関数..........................................................................................................................................................194 4.58 NWsnmpReceive()関数...............................................................................................................................................................195 4.59 NWsnmpSend()関数....................................................................................................................................................................196 4.60 NWsnmpSerror()関数..................................................................................................................................................................198 4.61 NWsnmpStartup()関数.................................................................................................................................................................198 4.62 NWsnmpTrapdClose()関数.........................................................................................................................................................199 4.63 NWsnmpTrapdOpen()関数..........................................................................................................................................................200 4.64 NWsnmpTrapdReceive()関数......................................................................................................................................................201 4.65 NWsnmpTrapSend()関数.............................................................................................................................................................202 4.66 opfmt()関数..................................................................................................................................................................................203 4.67 opsetcat()関数【UNIX版】............................................................................................................................................................207 4.68 opsetlabel()関数...........................................................................................................................................................................208 4.69 ORMMessage()関数【UNIX版】..................................................................................................................................................209 4.70 ORMRequest()関数【UNIX版】...................................................................................................................................................211 4.71 vopfmt()関数................................................................................................................................................................................215 - xi - 第5章 APIを利用したサンプルプログラム................................................................................................................................220 5.1 監視イベントのAPIを使用したサンプルプログラム........................................................................................................................220 5.1.1 監視イベントログの読み出し要求のサンプルプログラム........................................................................................................221 5.1.2 イベントの取り出し要求のサンプルプログラム........................................................................................................................222 5.1.3 イベントの対処要求のサンプルプログラム..............................................................................................................................223 5.2 監視メッセージのAPIを使用したサンプルプログラム....................................................................................................................224 5.2.1 メッセージログの読み出し要求のサンプルプログラム............................................................................................................225 5.2.2 メッセージの取り出し要求のサンプルプログラム....................................................................................................................226 5.3 リモートコマンドのAPIを使用したサンプルプログラム...................................................................................................................227 5.3.1 リモートコマンドログの読み出し要求のサンプルプログラム...................................................................................................228 5.3.2 リモートコマンドの応答リード要求のサンプルプログラム........................................................................................................229 第3部 スクリプト..................................................................................................................................................................... 230 第6章 スクリプトの文法.......................................................................................................................................................... 231 6.1 Systemwalkerスクリプトの形式........................................................................................................................................................231 6.1.1 メッセージ監視アクション型スクリプトの形式...........................................................................................................................231 6.1.2 単体起動型スクリプトの形式....................................................................................................................................................231 6.1.3 ライブラリ型スクリプトの形式....................................................................................................................................................232 6.2 Systemwalkerスクリプトの文法........................................................................................................................................................233 6.3 Systemwalkerスクリプトで使用するコマンド・制御文......................................................................................................................238 6.3.1 after(一定時間処理を休止する).............................................................................................................................................239 6.3.2 break(ループを中止する).......................................................................................................................................................240 6.3.3 catch(スクリプト行を実行し処理例外をトラップする)..............................................................................................................240 6.3.4 cd(作業ディレクトリを変更する)..............................................................................................................................................243 6.3.5 close(オープンされたファイルをクローズする).......................................................................................................................243 6.3.6 continue(ループを次の繰り返しまでスキップする)................................................................................................................244 6.3.7 exec(サブプロセスを起動する)...............................................................................................................................................244 6.3.8 exit(スクリプトを終了する).......................................................................................................................................................251 6.3.9 expr(算術演算をする).............................................................................................................................................................252 6.3.10 flush(バッファリングされた出力をフラッシュする)................................................................................................................252 6.3.11 gets(ファイルから1行読む)....................................................................................................................................................253 6.3.12 if~else(条件分岐をする).....................................................................................................................................................254 6.3.13 incr(変数に値を加算する)....................................................................................................................................................255 6.3.14 open(ファイルをオープンする)..............................................................................................................................................256 6.3.15 puts(ファイルに書き込む).....................................................................................................................................................257 6.3.16 regexp(文字列と正規表現のマッチング検査と一致部分の切り出しをする).......................................................................258 6.3.17 regsub(正規表現のパターンマッチングに基づいて置換する)............................................................................................259 6.3.18 set(変数に値を格納する)......................................................................................................................................................260 6.3.19 string(文字列を操作する).....................................................................................................................................................261 6.3.20 sw_TcCloseTrace(トレースファイルをクローズする).............................................................................................................263 6.3.21 sw_TcOpenTrace(トレースファイルをオープンする)............................................................................................................264 6.3.22 sw_TcWriteTrace(トレース情報の出力をする)....................................................................................................................266 6.3.23 while(ループする).................................................................................................................................................................267 第7章 サンプルスクリプトのカスタマイズ................................................................................................................................. 269 7.1 編集可能部分.................................................................................................................................................................................269 7.2 メッセージ監視アクション型スクリプトのカスタマイズ.....................................................................................................................270 7.2.1 イベント固定テキスト変換.........................................................................................................................................................271 7.2.2 イベント切り分けテキスト変換...................................................................................................................................................272 7.2.3 先頭通知コリレーション............................................................................................................................................................274 7.2.4 末尾通知コリレーション............................................................................................................................................................277 7.2.5 イベント詳細フィルタリング.......................................................................................................................................................280 7.2.6 切り替え型イベント詳細フィルタリング.....................................................................................................................................281 7.2.7 関係イベント自動対処..............................................................................................................................................................284 7.2.8 発生イベントしきい値監視.......................................................................................................................................................288 7.2.9 イベントファイル出力................................................................................................................................................................289 7.3 単体起動型スクリプトのカスタマイズ..............................................................................................................................................290 - xii - 7.3.1 必要イベント未発生調査..........................................................................................................................................................291 7.3.2 大規模同報リモートコマンド.....................................................................................................................................................293 7.3.3 メッセージ監視アクション型スクリプト動作テスト.....................................................................................................................295 7.3.4 稼働状態の監視.......................................................................................................................................................................297 7.3.5 MIBしきい値監視.....................................................................................................................................................................299 7.3.6 サービス稼働監視....................................................................................................................................................................301 7.3.7 Systemwalkerセルフチェック....................................................................................................................................................304 7.3.8 Webサービス稼働監視............................................................................................................................................................307 7.3.9 IPv6インタフェースの稼働監視................................................................................................................................................310 7.3.10 ライブラリ型スクリプト動作テスト.............................................................................................................................................314 7.3.11 自動返答................................................................................................................................................................................315 第8章 スクリプトの導入と削除................................................................................................................................................318 8.1 導入手順.........................................................................................................................................................................................318 8.2 削除手順.........................................................................................................................................................................................319 8.3 ユーザスクリプトの格納...................................................................................................................................................................319 8.4 スクリプトの登録と削除....................................................................................................................................................................320 8.5 動作確認テスト................................................................................................................................................................................323 8.5.1 メッセージ監視アクション型スクリプトおよびライブラリ型スクリプトの動作確認テスト............................................................323 8.5.2 単体起動型スクリプトの動作確認テスト...................................................................................................................................325 8.6 アクション定義.................................................................................................................................................................................329 8.7 ポリシーの設定................................................................................................................................................................................329 8.8 ポリシー配付....................................................................................................................................................................................332 8.9 登録済みスクリプトの変更手順.......................................................................................................................................................332 8.10 クラスタ運用している場合の注意事項.........................................................................................................................................333 付録A 正規表現.....................................................................................................................................................................334 - xiii - 第1部 概要 Systemwalker Centric Managerが提供するAPIおよびスクリプトの概要について説明します。 第1章 APIの概要..........................................................................................................................2 第2章 スクリプトの概要..................................................................................................................4 -1- 第1章 APIの概要 Systemwalker Centric Managerが提供するAPIの概要と、その役割について説明します。 ・ Systemwalker APIとは ・ 提供するAPIの機能 1.1 Systemwalker APIとは Systemwalker Centric Managerでは、アプリケーションからSystemwalker Centric Managerの機能や、管理している資源を 利用するためのライブラリとして、APIを提供しています。 APIは、Systemwalker Centric Managerの監視、管理機能に対して、アプリケーションの機能や、資源を利用することを目 的に提供されており、APIを用いることで、アプリケーションからSystemwalker Centric Managerの以下の機能を利用する ことができます。 ・ システム監視 ・ アクション管理 ・ ネットワーク管理 ・ 性能監視 ・ 返答メッセージ【UNIX版】 注意 Solaris 10以降の場合の注意事項【UNIX版】 Solaris 10以降では、特定の操作を行えないように設定できるため、そのような設定をした場合、root権限を持つユーザで あってもAPIを実行することができません。 例えば、シェルの起動時に読み込まれるファイルに、プロセスの起動を抑止するように設定しておけば、シェルからの操 作を抑止することができます。このため、プロセスの起動を抑止するように設定している場合、Systemwalker Centric Manager で提供するAPIを実行しても、プロセスが起動できないため実行できません。 Systemwalker Centric Managerの操作は、抑止の設定をしないでください。 1.2 提供するAPIの機能 Systemwalker Centric Managerが提供する各APIの機能と、その役割について説明します。 システム監視のAPI システム監視のAPIを用いることによって、アプリケーションから以下の操作を行うことができます。 ・ 監視イベントの操作 ・ 監視メッセージの操作 ・ リモートコマンドの操作 ・ メッセージの作成 これによって、アプリケーションから運用管理サーバに通知されるイベントを、リアルタイムに監視し、監視イベントを対処 することができます。部門管理サーバ、業務サーバでは、被監視システムから通知されるメッセージを、アプリケーション から監視することができます。また、アプリケーションからリモートコマンドを発行し、リモートコマンドの実行結果データも 取り出すことができます。 -2- アクション管理のAPI アクション管理のAPIを用いることにより、アプリケーションから以下のSystemwalker Centric Managerのアクションを実行 できます。 ・ メールの送信 ・ 音声での通知 ・ ポップアップメッセージの送信 ・ ショートメール送信 ・ アクション状態の通知 これにより、アプリケーションからSystemwalker Centric Managerのアクションを利用して、メッセージをE-mail、音声、ポッ プアップメッセージ、ショートメールへ通知できます。 ネットワーク管理のAPI ネットワーク管理のAPIを用いることにより、アプリケーションから以下のネットワークに対する操作ができます。 ・ MIBファイルのロード ・ MIB名の変換 ・ SNMP操作 ・ SNMPトラップの受信 これにより、アプリケーションから特定のホストに対してSNMP操作を行い、SNMPトラップの送受信ができます。 性能監視のAPI 性能監視のAPIを用いることにより、アプリケーションから以下の性能監視情報に対する操作ができます。 ・ トラフィック情報の獲得 これにより、アプリケーションからSystemwalker Centric Managerの性能監視機能で採取された性能監視対象の、各イン タフェースのトラフィック情報を獲得し、利用できます。 返答メッセージのAPI【UNIX版】 返答メッセージのAPIを用いることにより、サーバアプリケーションで返答メッセージの発行および返答内容の受信を行う ことができます。 これにより、オペレータの返答内容に応じた動作を行うプログラムを作成・実行することができます。 -3- 第2章 スクリプトの概要 Systemwalkerスクリプトの概要とサンプルスクリプトの種類について説明します。 ・ Systemwalkerスクリプトとは ・ 提供するスクリプトの概要 ・ サンプルスクリプト一覧 2.1 Systemwalkerスクリプトとは Systemwalkerスクリプトは、Tcl(Tool Command Language)/Tk(Tool kit)をSystemwalker向けに拡張した言語です。Tcl/Tk をベースにしているため動作するプラットフォームに依存しません。 これまで、業務構築者はプラットフォームごとに用意された業務構築言語の知識の習得および業務の構築をしなければ なりませんでしたが、Systemwalkerスクリプトはプラットフォーム共通で扱うことができるため、より効率的に業務の構築が でき、また資源共通化という利点があります。 本書では、Systemwalker Centric Manager向けに提供されるSystemwalkerスクリプトについて説明します。 2.2 提供するスクリプトの概要 インテリジェントサービスは、さまざまなサンプルスクリプトを提供しています。これらのサンプルスクリプトを利用することに より、Systemwalker Centric Managerによる運用管理が、効率的に行えるようになります。 ユーザは、サンプルスクリプトに対してカスタマイズすることで、独自のSystemwalkerスクリプトを作成します。また、サンプ ルスクリプトとは全く異なる機能を持つスクリプトをユーザが作成できるものもあります。 ユーザがサンプルスクリプトに対してカスタマイズしたり、新規に作成したスクリプトをユーザスクリプトといいます。 ポイント 本書で使用する以下の用語の定義をします。 サンプルスクリプト インテリジェントサービス機能で利用可能なSystemwalkerスクリプトのひな型で、さまざまな機能を持ったものが提供 されています。 サンプルスクリプトは所定の箇所を運用に合わせて編集するだけで、その機能を持ったスクリプトを容易に作成する ことができるように作られています。 ユーザスクリプト それぞれの運用に合わせてユーザが作成したSystemwalkerスクリプトです。 サンプルスクリプトの所定の箇所を編集して作成するほかに、ユーザ独自の機能を新規に作成することもできます。 ただし、メッセージ監視アクション型スクリプトはサンプルをもとにしたものしか作成できません。 テストスクリプト ライブラリ型およびメッセージ監視アクション型のユーザスクリプトの登録が、スクリプトの文法エラーなどにより失敗し ていないかをチェックするスクリプトです。 提供するSystemwalkerスクリプトは、以下の型に分類されます。 メッセージ監視アクション型 イベントに対し、編集を行うスクリプトです。 スクリプト登録は必須です。 処理対象となるイベントは、[イベント監視の条件定義]ウィンドウで特定します。特定したイベントに対して実行するスクリ プトは、[メッセージ監視(詳細)]ダイアログボックスの[メッセージの編集]で定義します。[メッセージ監視(詳細)]ダイアログ -4- ボックスは、[イベント定義/アクション定義]ダイアログボックスの[メッセージ監視アクション]タブの[詳細設定]ボタンで表示 されます。 提供されているサンプルとして、通知されるイベントのテキストを書き換えるものや、関係する複数のイベントの通知を抑 止するものなどがあります。 新規にスクリプトを作成することはできません。 単体起動型 1つのコマンドとして動作するスクリプトです。 OSのコマンドラインやリモートコマンドからスクリプト実行コマンド“swctclsh”の引数としてスクリプトを指定して起動します。 例) swctclsh UsrScript1.swt 単体起動型のスクリプトには任意の名前を“実行名”としてつけることができ、スクリプトの指定に実行名を使用することで ファイルの格納先を意識することなく呼び出しができます。また、swctclshコマンドによる手動起動のほかに、スクリプト自 動起動の設定によりシステム起動時に自動起動させることもできます。 スクリプト登録は任意ですが、登録していないスクリプトは、実行名による起動、自動起動およびポリシーの配付ができま せん。 swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Manager リファレンスマニュアル”を参照して ください。 ライブラリ型 補助的な機能を定義するスクリプトです。 スクリプト登録は必須です。 定義された機能は、Systemwalkerスクリプトのコマンドとして、ほかのスクリプトから呼び出します。 提供されているサンプルは、イベントテキストの書き換えスクリプト(メッセージ監視アクション型)用のものです。 新規にスクリプトを作成することもできます。 Systemwalkerスクリプトの型と機能の関係 Systemwalkerスクリプトの型と機能の関係を以下の表に示します。 機能 Systemwalkerスクリプトの型 メッセージ監視アク ション型 単体起動型 ライブラリ型 サンプルスクリプトの有無 ○ ○ ×(注1) 新規作成の可否 × ○ ○ スクリプト登録の必要性の有無 ○ ×(注2) ○ スクリプト自動起動の設定の可否 × ○ ― アクション定義 メッセージ監視の可否 ○ × ― アクション定義 アプリケーション起動の可否 × ○ ― コマンドによる実行の可否 × ○ ― コマンドによる停止の可否 × ○ ― ○:有、または可 ×:無、または不可 ―:該当機能ではない -5- 注1) メッセージ監視アクション型と組み合わせたサンプルスクリプト(イベント切り分けテキスト変換)があります。 注2) 単体起動型のスクリプト登録は任意ですが、登録をしないスクリプトは、実行名による起動、自動起動、およびポリシー の配付ができません。 2.3 サンプルスクリプト一覧 インテリジェントサービスが提供するサンプルスクリプトを以下に示します。 サンプルスクリプト 型 説明 イベント固定テキスト 変換 メッセージ監視アク ション型 イベントテキストの変換を行います。変換は、1つのスクリプトで1パターンし か行えず、変換の組み合わせが複数ある場合は、その組み合わせの数だ けスクリプトを作成する必要があります。 イベント切り分けテキ スト変換 メッセージ監視アク ション型 複数パターンのイベントテキストの変換を行います。 ライブラリ型のスクリプトで変換の組み合わせを複数定義することで、1つの スクリプトで複数パターンの変換が行えます。 先頭通知コリレーショ ン メッセージ監視アク ション型 発生した複数のイベントに対し、不要なイベントを破棄します。 末尾通知コリレーショ ン メッセージ監視アク ション型 定義した一連のイベントの通知を抑止するとともに、一定時間内にそれら のイベントすべてが発生したかをチェックし、その結果に応じた異常通知を 行います。 必要イベント未発生 調査 単体起動型 現時刻から一定時間さかのぼってログ内を検索し、正常の場合に出力さ れるイベントが存在しない場合、イベントを新規発行します。 また、その動作を一定間隔で繰り返すことができます。 大規模同報リモートコ マンド 単体起動型 引数で指定されたコマンドを、システム監視を行っている複数システムに 対して実行し、その応答結果をレポートします。 メッセージ監視アク ション型スクリプト動作 テスト 単体起動型 メッセージ監視アクション型サンプルをもとに作成したユーザスクリプトの動 作確認テストをします。 稼働状態の監視 単体起動型 被監視ノード、またはネットワーク機器に対し、一定間隔でpingを行い、監 視対象がダウンしていた場合、運用管理サーバ、または部門管理サーバ へSNMPトラップを通知します。 MIBしきい値監視 単体起動型 被監視ノード、またはネットワーク機器に対し、一定間隔でMIB取得を行 い、しきい値を超えた場合、運用管理サーバ、または部門管理サーバへ SNMPトラップを通知します。 サービス稼働監視 単体起動型 監視対象ノードで動作するサービス(HTTP/SMTPなど)に対し、一定間隔 で稼働状況の監視を行い、指定時間内に応答がない、またはエラーが発 生した場合、運用管理サーバへイベントを通知します。 イベント詳細フィルタ リング メッセージ監視アク ション型 単一の通知イベントに対して諸情報を解析し、その結果に応じてイベント 情報の書き換えを行えるようにします。 切り替え型イベント詳 細フィルタリング メッセージ監視アク ション型 イベント詳細フィルタリング相当の処理を“アクティブパターン”と“デフォル トパターン”の2種類持ち、トリガとなるイベントの発生によってどちらを使用 するかを動的に切り替えてイベント情報の書き換えをします。 Systemwalkerセルフ チェック 単体起動型 下位サーバで動作するシステム監視エージェントに対して、上位サーバか ら指定された監視間隔でTCP接続を行い、接続可能かどうか監視します。 Webサービス稼働監 視 単体起動型 Webサービスを構成するSOAPサーバが停止していないか、また、Webサー ビスへSOAPメッセージを送信し応答があるかどうかを監視し、停止してい た場合は、運用管理へイベントを通知します。 -6- サンプルスクリプト 型 説明 IPv6インタフェース稼 働監視 単体起動型 被監視ノード、またはネットワーク機器のIPv6インタフェースに対し、一定 間隔でpingを行い、監視対象のIPv6インタフェースがダウンしていた場合 は、運用管理サーバ、または部門管理サーバへSNMPトラップを通知しま す。 ライブラリ型スクリプト 動作テスト 単体起動型 ライブラリ型サンプルをもとに作成したユーザスクリプトの動作確認テストを します。 関係イベント自動対 処 メッセージ監視アク ション型 イベント(異常メッセージと復旧メッセージ)の自動対処をします。 発生イベントしきい値 監視 メッセージ監視アク ション型 イベントを発生頻度で監視します。 イベントファイル出力 メッセージ監視アク ション型 処理対象イベントの情報をファイルに出力します。 自動返答 単体起動型 返答要求メッセージに対して、自動的に返答をします。 注意 メッセージ監視アクション型についての注意事項 ・ サンプルスクリプトの中には、スクリプト内で処理対象イベントの情報(重要度など)が参照できるものがありますが、そ れらの情報は、スクリプトを定義した[メッセージ監視アクション]タブの[詳細設定]ボタンで表示しる[メッセージ監視 (詳細)]ダイアログボックス内の設定に従った変更後のものになります。 ・ メッセージ監視アクション型のスクリプトは、イベントの発生を契機に自動的に実行され、スクリプトが実行を完了する までイベントの通知を待ち合わせます。そのため、スクリプトの最近10メッセージでの平均処理時間が3秒を超えた場 合、イベントの停滞を防ぐため、タイムアウトのエラーが発生します。 ・ タイムアウトを含め、スクリプトの処理でエラーが発生した場合、処理中だったイベントに対しては、スクリプトによる編 集は一切行われません。対象イベントは[イベント定義/アクション定義]ダイアログボックスの[メッセージ監視(詳細)] ダイアログボックスの設定に従って、通知されます。 このとき、エラーの発生を通知するイベントが、インテリジェントサービスから通知されます。 ・ インテリジェントサービス機能が出力するメッセージ(ラベルが UX:MpScsv AP:MpScsvのメッセージ)に対しては、メッ セージ監視アクション型スクリプトの実行は行われません。 これはスクリプト実行により、エラーメッセージが発生した場合に、スクリプト実行とメッセージ発生の間で無限ループ になることを回避するためです。 -7- 第2部 API 第3章 APIの機能概要...................................................................................................................9 第4章 APIリファレンス.................................................................................................................46 第5章 APIを利用したサンプルプログラム...................................................................................220 -8- 第3章 APIの機能概要 Systemwalker Centric Managerが提供するAPIの機能概要を説明します。 ・ システム監視のAPI ・ アクション管理のAPI ・ ネットワーク管理のAPI ・ 性能監視のAPI ・ 返答メッセージのAPI【UNIX版】 3.1 システム監視のAPI システム監視のAPIを以下に説明します。 ・ 監視イベントのAPI ・ 監視メッセージのAPI ・ リモートコマンドのAPI ・ リモートコマンド処理の出口用API ・ メッセージ作成のAPI ・ 動作環境 ・ システム監視のAPIを利用する ・ システム監視のAPIの利用を解除する ・ 使用時の留意事項 3.1.1 監視イベントのAPI 監視イベントのAPI一覧を以下に示します。 表3.1 監視イベントのAPI一覧 関数名 機能 Mp_OpenEventLog 監視イベントログの読み出し開始要求 Mp_ReadEventLog 監視イベントログの読み出し要求 Mp_CloseEventLog 監視イベントログの読み出し終了要求 Mp_OpenEvent イベントの監視開始要求 Mp_ReadEvent イベントのリード要求 Mp_GetEventMap【Windows】 イベントの取り出し要求 Mp_CloseEvent イベントの監視終了要求 Mp_OpenEventStat イベントの状態変更開始要求 Mp_ChangeEventStat イベントの対処要求 Mp_CloseEventStat イベントの状態変更終了要求 監視イベントのAPI共通の動作環境、注意事項、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 -9- ・ 運用管理サーバ 注意事項 ・ LIBファイルおよびINCLUDEファイルは、同じバージョン/レベルで提供されたものを使用してください。 ・ 監視イベントのAPIは、マルチスレッドプログラミングをサポートしていません。 ・ “Mp_OpenEvent()”関数を呼び出したプロセスは、“Mp_CloseEvent()”関数を呼び出すまで終了しないでください。 ・ 監視イベントのAPIを使用するアプリケーションは、signal を使用しないでください。 ・ 監視イベントのAPIの最大同時実行数は4つまでです。 ・ Mp_OpenEvent()関数/Mp_ReadEvent()関数/Mp_GetEventMap()関数【Windows版】/Mp_CloseEvent()関数を利 用するには、“システム監視のAPIを利用する”を実施する必要があります。 ・ “Mp_ReadEvent()”関数を呼び出したあとの“WaitForSingleObject()”関数でタイムアウトを設定し、タイムアウトした 場合は、再度“WaitForSingleObject()”関数で待機するか“Mp_CloseEvent”を呼び出し、再度“Mp_OpenEvent()” 関数から処理を行ってください。【Windows版】 ・ “Mp_ReadEvent()”関数を呼び出したあとは、“Mp_GetEventMap()”を呼び出してください。【Windows版】 ・ Systemwalker Centric Managerのバージョンが異なる環境で作成されたシステム監視のAPIを使用するアプリケーショ ンは動作しません。 動作させるには、動作環境と同じSystemwalker Centric Managerのバージョンの環境下で、アプリケーションのリコン パイルを行ってください。 ・ Solaris、およびLinuxで監視イベントAPIを使用するアプリケーションをコンパイル、および実行するときには、環境変 数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定してください。 ・ Linux for Intel64版で64bitのアプリケーションを作成する場合、コンパイルするときにプリプロセッサオプションとして “-D__LP64__”をつけてください。 ・ コンパイルに必要な権限は以下のとおりです。 【Windows版】 - Administrator権限/DmAdmin権限/DmOperation権限/DmReference権限が必要です。 - 運用管理サーバでコンパイルできます。 【UNIX版】 - システム管理者(スーパーユーザ)権限が必要です。 - 運用管理サーバでコンパイルできます。 必要ファイル 上記監視イベントのAPIを使用するには、以下のファイルが必要となります。 【Windowsの場合】 監視イベントのAPIは、以下のライブラリ(LIBファイル,DLLファイル)に格納され、各APIで使用する定数および構造体 は、INCLUDEファイルに宣言されています。 ・ 【Windows(64bit)版の場合で64ビットのアプリケーションを作成する場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opmgr_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopmgr_x64.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopmgr_x64.dll - 10 - 上記ライブラリは64bit版製品で利用できます。 32bit版製品には、64bit版モジュールのコンパイル用にヘッダとライブラリ(libファイル)のみ同梱されています。 ・ 【Windows(32bit)版の場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opmgr_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopmgr_32.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopmgr_32.dll 上記ライブラリは32bit版製品で利用できます。 ・ 【Windows(32bit)版の場合(V13.1.0以前との互換ライブラリ)】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opmgr_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopmgr.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopmgr.dll 上記ライブラリは32bit版製品で利用できます。32bit版ライブラリはV13.1.0以前の製品との互換用ライブラリで、time_t 型のサイズが32bitでコンパイルされています。新規導入される場合での利用は推奨しません。 【UNIXの場合】 以下のINCLUDEファイルとライブラリが必要です。 ・ INCLUDEファイル - /opt/systemwalker/include/f1egopag.h - /opt/systemwalker/include/mp_operr_api.h - /opt/systemwalker/include/mp_opmgr_api.h mp_opmgr_api.hをインクルードすれば、ほかの2つもその中からインクルードされます。 ・ ライブラリ リンクするライブラリ OS Solaris /usr/lib/libthread.so /usr/lib/libopmgr.so Linux for x86版 /usr/lib/libopmgr.so Linux for Intel64版 /usr/lib64/libopmgr.so コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ コンパイラ : Microsoft Visual C++ 2005 ・ ランタイムライブラリ : “マルチスレッド(DLL)”を使用してください。 ・ プリプロセッサ : V13.1.0以前との互換ライブラリを利用する場合は、“_USE_32BIT_TIME_T”を指定してください。 また、Windows x64版で64ビットのアプリケーションを作成する場合は、“_WIN64”を指定してください。 - 11 - 【UNIXの場合】 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ (gcc) 使用例 API関数の使用例を以下に示します。 ・ 監視イベントログを読み出す ・ イベントを監視する ・ 監視イベントを対処する 3.1.1.1 監視イベントログを読み出す 下記のAPI関数を発行することにより、イベントログにロギングされた過去の監視イベントを、1イベントずつ読み出すこと ができます。 ・ Mp_OpenEventLog()関数 ・ Mp_ReadEventLog()関数 ・ Mp_CloseEventLog()関数 fp=Mp_OpenEventLog() for(;;){ if(Mp_ReadEventLog(fp, ..)!=1){ break; } ・ ・ } Mp_CloseEventLog(fp); --------------- 1) --------------- 2) --------------- 3) 1) 読み出し開始要求をする。 2) ロギングされた監視(イベントを1イベントずつ読み出す)。 3) 読み出し終了要求をする。 3.1.1.2 イベントを監視する 監視イベント受信関数は、監視イベント通知の要求開始から要求終了までに運用管理サーバに通知され、イベントログ ファイルに格納されるイベントをリアルタイムに受け取れます。 ・ Mp_OpenEvent()関数 ・ Mp_ReadEvent()関数 ・ Mp_GetEventMap()関数【Windows】 ・ Mp_CloseEvent()関数 【Windows版】 CreateEvent(); if((Mp_OpenEvent())<0){ ---------------------- 1) return(-1); } for(;;){ if(!Mp_ReadEvent()){ ---------------------- 2) if(GetLastError()!=ERROR_IO_PENDING){ break; } WaitForSingleObject(); ---------------------- 3) - 12 - GetOverLappedResult(); } if(Mp_GetEventMap()<0){ break; } ・ ・ } Mp_CloseEvent(); CloseEvent() ---------------------- 4) ---------------------- 5) 1) 監視要求開始処理。 2) イベント受信待ち。 3) 通知イベントがない場合の待ち合わせ処理。 4) 監視イベント獲得。 5) 監視終了要求開始処理。 【UNIX版】 if((fp=Mp_OpenEvent())<0){ return(-1); } for(;;){ ret=select(); if(ret!=1){ Mp_CloseEvent(fp); return(-1); } if(Mp_ReadEvent() < 0){ break; } ・ ・ } Mp_CloseEvent(fp); ---------------------- 1) ---------------------- 2) ---------------------- 3) ---------------------- 4) 1) 監視要求開始処理。 2) イベント受信待ち。 3) 監視イベント獲得。 4) 監視要求終了処理。 3.1.1.3 監視イベントを対処する 下記のAPI関数を発行することにより、監視イベントを対処(監視イベントの状態を“保留”、“対処済”、“返答済”に変更) することができます。 ・ Mp_OpenEventStat()関数 ・ Mp_ChangeEventStat()関数 ・ Mp_CloseEventStat()関数 Mp_OpenEventStat(); ・ ・ Mp_ChangeEventStat(); ・ ・ Mp_CloseEventStat(); ---------------------- 1) ---------------------- 2) ---------------------- 3) - 13 - 1) 状態変更開始要求をする。 2) 監視イベントの対処。 3) 状態変更要求をする。 3.1.2 監視メッセージのAPI 監視メッセージのAPI一覧を以下に示します。 表3.2 監視メッセージのAPI一覧 関数名 機能 Mp_OpenMsg メッセージの通知開始要求 Mp_ReadMsg メッセージのリード要求 Mp_GetMsgMap【Windows】 メッセージの取り出し要求 Mp_CloseMsg メッセージの通知終了要求 Mp_OpenMsgLog メッセージログの読み出し開始要求 Mp_ReadMsgLog メッセージログの読み出し要求 Mp_CloseMsgLog メッセージログの読み出し終了要求 監視メッセージのAPI共通の動作環境、注意事項、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ クライアント【Windows】 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン/レベルで提供されたものを使用してください。 ・ 監視メッセージのAPIは、マルチスレッドプログラミングをサポートしていません。 ・ “Mp_OpenMsg()”関数を呼び出したプロセスは、“Mp_CloseMsg()”関数を呼び出すまで終了しないでください。 ・ システム監視のAPIを使用するアプリケーションは、signal を使用しないでください。 ・ 監視メッセージのAPIの最大同時実行数は4つまでです。 ・ Mp_OpenMsg()関数/Mp_ReadMsg()関数/Mp_GetMsgMap()関数【Windows版】/Mp_CloseMsg()関数を利用す るには、“システム監視のAPIを利用する”を実施する必要があります。 ・ “Mp_ReadMsg()”関数を呼び出したあとの“WaitForSingleObject()”関数で、タイムアウトを設定し、タイムアウトした 場合は、再度“WaitForSingleObject()”関数で待機するか、“Mp_CloseMsg”を呼び出し、再度“Mp_OpenMsg()”関 数から処理を行ってください。【Windows版】 ・ “Mp_ReadMsg()”関数を呼び出したあとは、“Mp_GetMsgMap()”を呼び出してください。【Windows版】 ・ Systemwalker Centric Managerのバージョンが異なる環境で作成されたシステム監視のAPIを使用するアプリケーショ ンは動作しません。 動作させるには、動作環境と同じSystemwalker Centric Managerのバージョンの環境下で、アプリケーションのリコン パイルを行ってください。 ・ SolarisおよびLinuxの運用管理サーバで監視メッセージAPIを使用するアプリケーションをコンパイルおよび実行す るときには、環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定してください。 - 14 - ・ Linux for Itanium版、Linux for Intel64版で64bitのアプリケーションを作成する場合、コンパイルするときにプリプロ セッサオプションとして“-D__LP64__”をつけてください。 ・ コンパイルに必要な権限は以下のとおりです。 【Windows版】 - 運用管理サーバ/部門管理サーバ/業務サーバ Administrator権限/DmAdmin権限/DmOperation権限/DmReference権限が必要です。 - 運用管理クライアント/クライアント 一般ユーザ権限でコンパイル可能です。 【UNIX版】 - 運用管理サーバ/部門管理サーバ/業務サーバ システム管理(スーパーユーザ)権限が必要です。 - 運用管理クライアント/クライアント 一般ユーザ権限でコンパイル可能です。 必要ファイル 上記監視メッセージのAPIを使用するには、以下のファイルが必要となります。 【Windowsの場合】 監視イベントのAPIは、以下のライブラリ(LIBファイル,DLLファイル)に格納され、各APIで使用する定数、および構造体 は、INCLUDEファイルに宣言されています。 ・ 【Windows x64版の場合で64ビットのアプリケーションを作成する場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt_x64.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt_x64.dll 上記ライブラリは64bit版製品で利用できます。 32bit版製品には、64bit版モジュールのコンパイル用にヘッダとライブラリ(libファイル)のみ同梱されています。 ・ 【Windows for Itanium、Windows x64以外の場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt_32.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt_32.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。 ・ 【Windows for Itanium、Windows x64以外(V13.1.0以前との互換ライブラリ)】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - 15 - - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。V13.1.0以 前との互換ライブラリは、time_t型のサイズが32bitでコンパイルされています。新規導入される場合での利用は推奨 しません。 【UNIXの場合】 以下のINCLUDEファイルとライブラリが必要です。 ・ INCLUDEファイル - /opt/systemwalker/include/f1egopag.h - /opt/systemwalker/include/mp_operr_api.h - /opt/systemwalker/include/mp_opagt_api.h mp_opagt_api.hをインクルードすればほかの2つもその中からインクルードされます。 ・ ライブラリ リンクするライブラリ OS Solaris /usr/lib/libthread.so(運用管理サーバの場合のみ必要です) /usr/lib/libopagtall.so Linux (x86版、Intel64版でV13.3.0以前からの互換 用) /usr/lib/libdl.so /usr/lib/libopagtall.so Linux (Intel64版) /usr/lib64/libdl.so /usr/lib64/libopagtall_x64.so AIX /usr/lib/libopagtall.so HP-UX /usr/lib/libopagtall.sl コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ コンパイラ : Microsoft Visual C++ 2005 ・ ランタイムライブラリ : “マルチスレッド(DLL)”を使用してください。 ・ プリプロセッサ : V13.1.0以前との互換ライブラリを利用する場合は、“_USE_32BIT_TIME_T”を指定してください。 また、Windows x64版で64ビットのアプリケーションを作成する場合は、“_WIN64”を指定してください。 【UNIXの場合】 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ (gcc) ・ HP-UX: HP-UX上で動作するPA-RISCコンパイラ ・ AIX : AIX上で動作する C for AIX コンパイラ 使用例 API関数の使用例を以下に示します。 ・ メッセージを監視する - 16 - ・ メッセージログを読み出す 3.1.2.1 メッセージを監視する 下記のAPI関数を発行することにより、被監視システムから通知されるメッセージを1つずつ読み出し、監視することがで きます。1メッセージ単位に、[Systemwalkerコンソール]の[メッセージ一覧]と同等の情報を取得できます。 ・ Mp_OpenMsg()関数 ・ Mp_ReadMsg()関数 ・ Mp_GetMsgMap()関数【Windows】 ・ Mp_CloseMsg()関数 【Windows版】 CreateEvent() ---------------------Mp_OpenMsg() for(;;){ if(!Mp_ReadMsg()){ ---------------------if(GetLastError() != ERROR_IO_PENDING){ break; } WaitForSingleObject(); ---------------------GetOverLappedResult(); } if(Mp_GetMsgMap() == 0){ break } ・ ・ } Mp_CloseMsg(); ---------------------CloseEvent(); 1) 2) 3) 4) 1) メッセージ通知開始要求。 2) メッセージ獲得処理。 3) 通知メッセージがない場合の待ち合わせ処理。 4) メッセージ通知終了要求。 【UNIX版】 if((fp=Mp_OpenMsg())<0){ return(-1); } for(;;){ ret=select(); if(ret!=1){ Mp_CloseMsg(fp); return(-1); } if(Mp_ReadMsg()<0){ break; } ・ ・ } Mp_CloseMsg(fp); ---------------------- 1) ---------------------- 2) ---------------------- 3) ---------------------- 4) 1) メッセージ通知開始要求。 2) イベント受信待ち。 - 17 - 3) イベント獲得処理。 4) メッセージ通知終了要求。 3.1.2.2 メッセージログを読み出す 下記のAPI関数を発行することにより、メッセージログファイルにロギングされた過去のメッセージの読み込みができます。 ・ Mp_OpenMsgLog()関数 ・ Mp_ReadMsgLog()関数 ・ Mp_CloseMsgLog()関数 fp=Mp_OpenMsgLog(); for(;;){ if(Mp_ReadMsgLog(fp, ..)!=1){ break; } ・ ・ } Mp_CloseMsgLog(fp); ----------------------1) ----------------------2) ----------------------3) 1) 読み出し開始要求をする。 2) ロギングされた監視(イベントを1イベントずつ読み出す)。 3) 読み出し終了要求をする。 3.1.3 リモートコマンドのAPI リモートコマンドのAPI一覧を以下に示します。 表3.3 リモートコマンドのAPI一覧 関数名 機能 Mp_OpenRemoteCmd リモートコマンドの開始要求 Mp_ExecRemoteCmd リモートコマンドのコマンド実行要求 Mp_RespRemoteCmd リモートコマンドの応答リード要求 Mp_GetRemoteCmdMap 【Windows】 リモートコマンドの受信データの取り出し要求 Mp_CloseRemoteCmd リモートコマンドの終了要求 Mp_OpenRemoteCmdLog リモートコマンドログの読み出し開始要求 Mp_ReadRemoteCmdLog リモートコマンドログの読み出し要求 Mp_CloseRemoteCmdLog リモートコマンドログの読み出し終了要求 リモートコマンドのAPI共通の動作環境、注意事項、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ クライアント【Windows】 - 18 - 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン/レベルで提供されたものを使用してください。 ・ リモートコマンドのAPIは、マルチスレッドプログラミングをサポートしていません。 ・ システム監視のAPIを使用するアプリケーションは、signal を使用しないでください。 ・ リモートコマンドのAPIの最大同時実行数は4つまでです。 ・ Systemwalker Centric Managerのバージョンが異なる環境で作成されたシステム監視のAPIを使用するアプリケーショ ンは動作しません。 動作させるには、動作環境と同じSystemwalker Centric Managerのバージョンの環境下で、アプリケーションのリコン パイルを行ってください。 ・ 本APIを使用する場合、SIGPIPEシグナルに対応したシグナルハンドラを無効にするかまたは、変更してください。こ の処理を実施しないと、Systemwalker停止時に本APIを使用しているプログラムがSIGPIPEシグナルにより終了する 場合があります。設定方法の詳細については、OS提供のオンラインマニュアルを参考にしてください。 関連関数:sigset ・ リモートコマンドのAPIは、被監視システムにコマンドの発行を依頼し、その結果を受け取るためのAPIです。システム 監視エージェントが動作していない場合には使用できません。 ・ Linux for Intel64版で64bitのアプリケーションを作成する場合、コンパイルするときにプリプロセッサオプションとして “-D__LP64__”をつけてください。 ・ コンパイルに必要な権限は以下のとおりです。 【Windows版】 - 運用管理サーバ/部門管理サーバ/業務サーバ Administrator権限/DmAdmin権限/DmOperation権限/DmReference権限が必要です。 - 運用管理クライアント/クライアント 一般ユーザ権限でコンパイル可能です。 【UNIX版】 - 運用管理サーバ/部門管理サーバ/業務サーバ システム管理(スーパーユーザ)権限が必要です。 - 運用管理クライアント/クライアント 一般ユーザ権限でコンパイル可能です。 必要ファイル 上記リモートコマンドのAPIを使用するには、以下のファイルが必要となります。 【Windowsの場合】 リモートコマンドのAPIはLIBファイルに格納され、各APIで使用する定数、および構造体は、INCLUDEファイルに宣言さ れています。 ・ 【Windows x64版の場合で64ビットのアプリケーションを作成する場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt_x64.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt_x64.dll 上記ライブラリは64bit版製品で利用できます。 - 19 - 32bit版製品には、64bit版モジュールのコンパイル用にヘッダとライブラリ(libファイル)のみ同梱されています。 ・ 【Windows for Itanium、Windows x64以外の場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt_32.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt_32.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。 ・ 【Windows for Itanium、Windows x64以外(V13.1.0以前との互換ライブラリ)】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_opagt_api.h、mp_operr_api.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpopagt.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\Bin\mpopagt.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。V13.1.0以 前との互換ライブラリは、time_t型のサイズが32bitでコンパイルされています。新規導入される場合での利用は推奨 しません。 【UNIXの場合】 以下のINCLUDEファイルとライブラリが必要です。 ・ INCLUDEファイル - /opt/systemwalker/include/f1egopag.h - /opt/systemwalker/include/mp_operr_api.h - /opt/systemwalker/include/mp_opagt_api.h mp_opagt_api.hをインクルードすれば、ほかの2つもその中からインクルードされます。 ・ ライブラリ リンクするライブラリ OS Solaris /usr/lib/libopagtall.so Linux (x86版、Intel64版でV13.3.0以前からの互換用) /usr/lib/libdl.so /usr/lib/libopagtall.so Linux (Intel64版) /usr/lib64/libdl.so /usr/lib64/libopagtall_x64.so AIX /usr/lib/libopagtall.so HP-UX /usr/lib/libopagtall.sl コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ コンパイラ : Microsoft Visual C++ 2005 - 20 - ・ ランタイムライブラリ : “マルチスレッド(DLL)”を使用してください。 ・ プリプロセッサ : V13.1.0以前との互換ライブラリを利用する場合は、“_USE_32BIT_TIME_T”を指定してください。 また、Windows x64版で64ビットのアプリケーションを作成する場合は、“_WIN64”を指定してください。 【UNIXの場合】 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ (gcc) ・ HP-UX: HP-UX上で動作するPA-RISCコンパイラ ・ AIX : AIX上で動作する C for AIX コンパイラ 3.1.4 リモートコマンド処理の出口用API リモートコマンドの出口(DLL)をあらかじめ用意することで、以下の項目をカスタマイズすることができます。 ・ 実際に発行するコマンド文字列 ・ リモートコマンド発行の可否 ・ 確認メッセージの表示の是非 作成したDLLは、DLL名を“mprcmdex.dll”とし、リモートコマンドを実際に発行する運用管理クライアントのパスの通った 任意のディレクトリに格納してください。 リモートコマンドの出口情報には以下の2つの関数があります。 ・ ChkRcmd() コンソール操作制御が無効の場合に使用します。 コンソール操作制御が有効の場合に使用すると、コンソール操作制御の認証処理の前に呼び出されます。 ・ ChkRcmd2() コンソール操作制御が有効の場合に使用します。 コンソール操作制御の認証処理のあとに呼び出されます。 なお、コンソール操作制御が有効な場合、コマンドラインのチェック対象は[リモートコマンド実行]画面の実行コマンドに 入力されたコマンドです。 呼び出し形式 __declspec(dllexport) int __stdcall ChkRcmd( char *lpCommand, int iHostCount, char **lpHostname, char **lpRuntype, char *lpReserv, int iReserv, struct stRcmdData *returnData) __declspec(dllexport) int __stdcall ChkRcmd2( char *lpCommand, int iHostCount, char **lpHostname, char **lpRuntype, struct MP_CHKRCMD *mp_chkrcmd_ptr, int iReserv, struct stRcmdData *returnData) パラメタ char *lpCommand リモートコマンド実行画面で入力された入力文字列 - 21 - int iHostCount リモートコマンド発行先ホスト数(注1) char **lpHostname リモートコマンド発行先ホスト名 char **lpRuntype リモートコマンド発行先ホストの運用形態名 struct MP_CHKRCMD *mp_chkrcmd_ptr リモートコマンドを発行したユーザーID int iReserv 予約域(注2) struct stRcmdData *returnData 実行情報(リモートコマンドを実行できる場合に実行情報を設定してください) (注3) 注1) リモートコマンド発行先ホスト名とリモートコマンド発行先ホストの運用形態名の数は同じになります。運用形態名のな いホストの場合、対応する運用形態名の値にはNULLが設定されています。 注2) 予約域は参照、代入を行わないでください。 注3) 引数の実行情報には、リモートコマンドを実行できる場合に実行情報を設定してください。実行情報は呼び出し元で 領域を確保しますので領域取得、開放処理を行わないでください。 また、コマンド文字列、およびメッセージ文字列サイズは以下が設定されます。 - iCommandLengt 実行情報のiCommandLengtにはコマンド文字列(lpCommand)の領域サイズが設定されます。設定する文字列 (終端のNULLを含む)の長さは1024バイトを超えないように注意してください。 - iReservLength iReservLengthにはコマンド実行否の場合のメッセージ文字列(lpReserv)の領域サイズが設定されます。設定する 文字列(終端のNULLを含む)の長さは256バイトを超えないように注意してください。 構造体の説明 struct MP_CHKRCMD{ char Sw_user[40]; char SW_con_user[70] void *rsv; int *rsv2; // // // // // // SystemwalkerコンソールにログインしているユーザーID (参照のみ) コンソール操作制御の認証によって入力され たユーザーID (参照のみ) 予約域(参照、代入を行わないでください) 予約域(参照、代入を行わないでください) }; struct stRcmdData{ int iCommandLength; char *lpCommand; int iConfMsgflag; int iReservLength; char *lpReserv; int iReserv; }; //コマンド文字列(lpCommand)の領域サイズ(参照のみ) //実行するコマンド文字列 //確認ダイアログを表示有無 1:表示する 0:表示しない //メッセージ(lpReserv)の領域サイズ(参照のみ) //コマンド実行否の場合のメッセージ文字列 //予約域 以下のパラメタ/構造体を編集すれば、カスタマイズすることができます。 - 22 - int iCommandLength コマンド文字列(lpCommand)の領域サイズ(参照のみ) char *lpCommand 実際に発行するコマンド文字列 これを編集することで“実際に発行するコマンド文字列”をカスタマイズすることができます。 int iConfMsgflag 確認メッセージの表示の是非 以下の値を設定することで確認メッセージの表示を制御できます。 0: 確認メッセージを表示しない。 1: 確認メッセージを表示する。 int iReservLength メッセージ(lpReserv)の領域サイズ(参照のみ) char *lpReserv コマンド実行しない場合のメッセージ文字列 これに文字列を指定すると、リモートコマンド実行時にコマンド実行の可否の確認メッセージが表示されます。 文字列を指定しないと確認メッセージは表示されません。 int iReserv 予約域 代入しないでください。 復帰値 リモートコマンド発行の可否を、関数の復帰値により通知してください。 0: リモートコマンドを実行する。 0以外: リモートコマンドを実行しない。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/運用管理クライアントで実行可能です。 【UNIX版】 ・ 運用管理クライアントで実行可能です。 コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ コンパイラ : Microsoft Visual C++ 2005 以降 ・ ランタイムライブラリ : コンパイルオプションとして、“マルチスレッド(DLL)”を使用してください。 ・ モジュール定義ファイル(.DEF)を使用して、DLLを作成してください (__declspec(dllexport)で関数定義をして、DLL を作成した場合は正常に連携しない場合があります)。 - 23 - 注意事項 ・ 作成したDLLを格納する際は、該当の端末の[Systemwalkerコンソール]が起動していない状態で格納してください。 ・ API呼び出し時に渡す引数について、領域はすべて[Systemwalkerコンソール]側で確保しますので、領域の開放処 理はしないでください。 ・ DLLはOS環境に合わせて作成してください(32ビット環境では32ビットモジュールとして、64ビット環境では64ビットモ ジュールとして作成)。 ・ 作成したDLLにおいて、不当メモリ参照などでアプリケーションエラーとなった場合、[Systemwalkerコンソール]も異 常終了します。 ・ [Systemwalkerコンソール]からDLLをオープンできた場合、関数のアドレス取得処理で失敗した場合は、以下のエ ラーメッセージを表示します。 エラーメッセージ:関数アドレスの取得に失敗しました。 ・ 本DLLによりコマンドが実行できない場合には、以下のメッセージが表示されます。 指定されたコマンドは実行できません。 ・ コンソール操作制御の認証処理は、本DLLの呼び出し前に処理されます。 ・ コンソール操作制御の運用時、コマンドラインのチェック対象は[リモートコマンド実行]画面の実行コマンドに入力さ れたコマンドです。 ・ 確認ダイアログの表示の是非について、[リモートコマンド実行]画面の[オプション]メニューの[確認ダイアログを表示 する]がON/OFFに関わらずDLLの復帰値が優先されます。 ・ [Systemwalker Webコンソール]からは、本機能は使用できません。 ・ 本機能を使用してリモートコマンド実行処理中も、ほかの機能は使用可能です。 ・ 本DLLでコマンドラインを変更した場合、[リモートコマンド検索]画面には、変更後のコマンドが出力されるため、実 際に[リモートコマンド実行]画面で実行したコマンドについては、[リモートコマンド実行]画面を閉じると、あとから確認 することができません。 ・ 本DLLに“ChkRcmd”関数と“ChkRcmd2”関数の両方が存在した場合は、“ChkRcmd2”関数が使用されます。 使用例 ヘッダファイルの使用例を以下に示します。 // File Name: mprcmdex.h // Function :RemoteCommand //コマンドチェック用の復帰値構造体 struct stRcmdData{ int iCommandLength; //コマンド文字列(lpCommand)の領域サイズ(参照のみ) char *lpCommand; //コマンド文字列 int iConfMsgflag; //確認ダイアログを表示有無 1:表示する 0:表示しない int iReservLength; //予約域(lpReserv)の領域サイズ(参照のみ) char *lpReserv; //予約域 int iReserv; //予約域 }; struct MP_CHKRCMD{ char Sw_user[40]; // SystemwalkerコンソールにログインしているユーザーID // (参照のみ) char SW_con_user[70] // コンソール操作制御の認証によって入力され // たユーザーID (参照のみ) void *rsv; // 予約域(参照、代入を行わないでください) int *rsv2; // 予約域(参照、代入を行わないでください) }; __declspec(dllexport) int __stdcall ChkRcmd2(char *,int,char **, char **, struct MP_CHKRCMD *, int,struct stRcmdData *); - 24 - 3.1.5 メッセージ作成のAPI メッセージ作成のAPI一覧を以下に示します。 表3.4 メッセージ作成のAPI 関数名 機能 opfmt メッセージを作成、出力し、システム監視エージェントへメッセージを通知します。 vopfmtとの違いは、パラメタ数が固定です。 opsetcat【UNIX版】 メッセージカタログの初期値を定義します。 opsetlabel メッセージのラベルの初期値を定義します。 vopfmt メッセージを作成、出力し、システム監視エージェントへメッセージを通知します。opfmt との違いは、パラメタ数が可変です。 メッセージ作成のAPIの動作環境、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン/レベルで提供されたものを使用してください。 ・ メッセージ作成のAPIは、マルチスレッドプログラミングをサポートしていません。 ・ システム監視のAPIを使用するアプリケーションは、signal を使用しないでください。 ・ Systemwalker Centric Managerのバージョンが異なる環境で作成されたシステム監視のAPIを使用するアプリケーショ ンは動作しません。 動作させるには、動作環境と同じSystemwalker Centric Managerのバージョンの環境下で、アプリケーションのリコン パイルを行ってください。 ・ 本APIを使用する場合、SIGPIPEシグナルに対応したシグナルハンドラを無効にするかまたは、変更してください。こ の処理を実施しないと、Systemwalker停止時に本APIを使用しているプログラムがSIGPIPEシグナルにより終了する 場合があります。設定方法の詳細については、OS提供のオンラインマニュアルを参考にしてください。 関連関数:sigset ・ Linux for Intel64版で64bitのアプリケーションを作成する場合、コンパイルするときにプリプロセッサオプションとして “-D__LP64__”をつけてください。 必要ファイル 上記メッセージ作成のAPIを使用するには、以下のファイルが必要となります。 【Windowsの場合】 メッセージ作成のAPIはLIBファイルに格納され、各APIで使用する定数、および構造体は、INCLUDEファイルに宣言さ れています。 ・ 【Windows x64版の場合で64ビットのアプリケーションを作成する場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Include\opfmt.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Lib\mpopfmt_x64.lib - 25 - - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\bin\mpopfmt_x64.dll 上記ライブラリは64bit版製品で利用できます。 32bit版製品には、64bit版モジュールのコンパイル用にヘッダとライブラリ(libファイル)のみ同梱されています。 ・ 【Windows x64以外の場合】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Include\opfmt.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Lib\mpopfmt_32.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\bin\mpopfmt_32.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。 ・ 【Windows x64以外(V13.1.0以前との互換ライブラリ)】 - INCLUDEファイル Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Include\opfmt.h - リンクするライブラリ Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\Lib\mpopfmt.lib - 使用するDLL Systemwalkerインストールディレクトリ\MPWALKER.DM\mpopagt\bin\mpopfmt.dll 上記ライブラリは32bit版、64bit版製品共に利用できます。32ビットのアプリケーションから使用できます。V13.1.0以 前との互換ライブラリは、time_t型のサイズが32bitでコンパイルされています。新規導入される場合での利用は推奨 しません。 【UNIXの場合】 以下のINCLUDEファイルとライブラリが必要です。 ・ INCLUDEファイル - /usr/include/opfmt.h ・ リンクするライブラリ リンクするライブラリ OS Solaris (32bitモジュール作成時) /usr/lib/libopagt.so Solaris (64bitモジュール作成時) /usr/lib/sparcv9/libopagt.so Linux (x86版、Intel64版でV13.3.0以前からの互換用) /usr/lib/libopagt.so Linux (Intel64版) /usr/lib64/libopagt_x64.so AIX /usr/lib/libopagt.so HP-UX /usr/lib/libopagt.so コンパイル環境 コンパイル環境は以下のとおりです。 - 26 - 【Windowsの場合】 ・ コンパイラ : Microsoft Visual C++ 2005 ・ ランタイムライブラリ : “マルチスレッド(DLL)”を使用してください。 ・ プリプロセッサ : V13.1.0以前との互換ライブラリを利用する場合は、“_USE_32BIT_TIME_T”を指定してください。 また、Windows x64版で64ビットのアプリケーションを作成する場合は、"_WIN64"を指定してください。 【UNIXの場合】 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ (gcc) ・ HP-UX: HP-UX上で動作するPA-RISCコンパイラ ・ AIX : AIX上で動作する C for AIX コンパイラ 3.1.6 動作環境 システム監視のAPIの動作環境 システム監視のAPIは、監視イベントのAPI、監視メッセージのAPI、リモートコマンドのAPI、メッセージ作成のAPIの4種 類があります。インストール種別により、使用できるAPIの種類が異なります。 インストール種別 監視イベントの API 監視メッセージの API リモートコマンドの API メッセージ作成の API 運用管理サーバ ○ ○ ○ ○ 部門管理サーバ × ○ ○ ○ 業務サーバ × ○ ○ ○ ○: 使用可 ×: 使用不可 運用管理サーバで、システム監視のAPIを使用する場合は、使用するAPIの種類により、“システム監視のAPIを利用す る”に示す作業が必要になります。部門管理サーバや業務サーバでは、システム監視のAPIを使用している場合でも、 “システム監視のAPIを利用する”に示す作業は必要ありません。手順が必要なAPIは以下のとおりです。 ・ システム監視のAPIの利用手順が必要なAPI - Mp_OpenEvent() - Mp_ReadEvent() - Mp_GetEventMap()【Windows】 - Mp_CloseEvent() - Mp_OpenMsg() - Mp_ReadMsg() - Mp_GetMsgMap()【Windows】 - Mp_CloseMsg() 各関数の詳細については、“APIリファレンス”を参照してください。 3.1.7 システム監視のAPIを利用する システム監視のAPIを利用するには、以下の手順を実施します。この手順を実施することで、メモリ使用量が約50MB増 加することになります。 - 27 - この手順は、運用管理サーバで以下のAPIを使用する場合のみ必要となります。 ・ Mp_OpenEvent() ・ Mp_ReadEvent() ・ Mp_CloseEvent() ・ Mp_OpenMsg() ・ Mp_ReadMsg() ・ Mp_CloseMsg() 【Windows版】 1. 管理者権限で、変更対象の運用管理サーバにログオンします。 2. Systemwalker Centric Managerの停止を実施してください。 3. コマンドプロンプトより、以下のコマンドを実行します。 Mpsas_servset MSGSTAT 1 Mpsas_servset EVTSTAT 1 4. Systemwalker Centric Managerの再起動を実施してください。 【UNIX版】 1. 管理者権限で、変更対象の運用管理サーバにログインします。 2. Systemwalker Centric Managerの停止を実施してください。 3. “/opt/systemwalker/bin”にディレクトリを移動します。 4. 環境変数“LD_LIBRARY_PATH”に“/opt/systemwalker/lib”を設定してください。 5. シェルプロンプトより以下のコマンドを実行します。 Mpsas_servset MSGSTAT 1 Mpsas_servset EVTSTAT 1 6. Systemwalker Centric Managerの再起動を実施してください。 システム監視のAPIは、Systemwalker Centric Managerの起動完了後、利用できます。 ポイント 【UNIX版】 クラスタシステムの場合、どちらか一方のサーバで上記の手順を行えば、クラスタの両サーバで設定が有効になります。 3.1.8 システム監視のAPIの利用を解除する システム監視のAPIの利用を解除するには、以下の手順を実施します。 この手順は、“システム監視のAPIを利用する”による設定を解除する場合に行います。この手順により実行ができなくな るのは、運用管理サーバでの以下のAPIを実行したときのみで、ほかは実行できます。 ・ Mp_OpenEvent() ・ Mp_ReadEvent() ・ Mp_CloseEvent() ・ Mp_OpenMsg() ・ Mp_ReadMsg() ・ Mp_CloseMsg() - 28 - 【Windows版】 1. 管理者権限で、変更対象の運用管理サーバにログオンします。 2. Systemwalker Centric Managerの停止を実施してください。 3. コマンドプロンプトより、以下のコマンドを実行します。 Mpsas_servset MSGSTAT 0 Mpsas_servset EVTSTAT 0 4. Systemwalker Centric Managerの再起動を実施してください。 【UNIX版】 1. 管理者権限で、変更対象の運用管理サーバにログインします。 2. Systemwalker Centric Managerの停止を実施してください。 3. “/opt/systemwalker/bin”にディレクトリを移動します。 4. 環境変数“LD_LIBRARY_PATH”に“/opt/systemwalker/lib”を設定してください。 5. シェルプロンプトより以下のコマンドを実行します。 Mpsas_servset MSGSTAT 0 Mpsas_servset EVTSTAT 0 6. Systemwalker Centric Managerの再起動を実施してください。 ポイント 【UNIX版】 ・ クラスタシステムの場合、どちらか一方で上記の手順を行えば、クラスタの両ノードが有効になります。 ・ クラスタシステムの場合、設定コマンド(Mpsas_servset)を実行する前に、共有資源パーティションをマウントしてくださ い。 3.1.9 使用時の留意事項 システム監視のAPI使用時の留意事項 指定以外の“SERVERDEF”ファイル項目の値を変更すると、システム監視のAPIが、正常に動作しなくなるおそれがあり ます。 “SERVERDEF”ファイル変更の際は、注意して実施してください。 3.2 アクション管理のAPI アクション管理のAPIおよびメール通報で使用するエンコードライブラリの使用方法について説明します。アクション管理 APIを用いて、音声の通知やメールの送信などを、アプリケーションから実行できます。また、実行中の音声通知の停止 ができます。 アクション管理のAPIを以下に説明します。 ・ アクション管理のAPI ・ アクション管理の出口情報 ・ メール通報エンコードライブラリの作成方法 3.2.1 アクション管理のAPI アクション管理のAPIについて説明します。アクション管理のAPI一覧を以下に示します。 - 29 - 表3.5 アクション管理のAPI一覧 関数名 機能概要 備考 Mp_PlaySound2 音声の通知 Mp_StopSound 音声の停止 Mp_PopupUser2 ユーザへポップアップメッセージを送信 Mp_PopupDomain2 ドメインにポップアップメッセージを送信 Mp_PopupSession2 すべてのセションにポップアップメッセージ を送信 Mp_SendMSMail2 MS-mailの送信 Mp_SendEMail E-mailの送信 Mp_CallPager2 ショートメール送信 Mp_GetActionInfo2 アクション状態の通知 Mp_FreeActionInfo2 アクション情報領域の解放 Mp_PlaySound 音声の通知 Mp_PopupUser ユーザへポップアップメッセージを送信 Mp_PopupDomain ドメインにポップアップメッセージを送信 Mp_PopupSession すべてのセションにポップアップメッセージ を送信 Mp_StopAction アクションの停止 Mp_GetActionInfo アクション状態の通知 Mp_FreeActionInfo アクション情報領域の解放 【Windows版】 (SystemWalker/ CentricMGR V4.0) 互換API 64bit版では提供さ れません。 アクション管理API共通の実行に必要な権限/実行環境、注意事項、および必要ファイルについての説明を以下に示し ます。 実行に必要な権限/実行環境 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、イベント監視を選択インストールしたとき実行可能です。 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ UNIXの場合、アクション管理のAPIを使用するアプリケーションを実行するときは、以下の環境変数に“/opt/ systemwalker/lib”を指定してください。 - Solaris、Linuxの場合 LD_LIBRARY_PATH - HP-UXの場合 SHLIB_PATH - AIXの場合 LIBPATH ・ 64bitプラットフォームで使用時の留意事項 APIは64bitのため、利用する場合は、64bitアプリケーションを作成してください。 - 30 - 必要ファイル 上記アクション管理APIを使用するには、以下のファイルが必要となります。アクション管理の各APIはLIBファイルに格納 し、各APIで使用する定数、および構造体はINCLUDEファイルに宣言します。 【Windowsの場合】 ・ 32bit版ライブラリ - Systemwalkerインストールディレクトリ\Mpwalker\Lib\f3crhxac.lib - Systemwalkerインストールディレクトリ\Mpwalker\Include\f3crhxac.h ・ 64bit版ライブラリ(Windows x64版) - Systemwalkerインストールディレクトリ\Mpwalker\Lib\f3crhxac_x64.lib - Systemwalkerインストールディレクトリ\Mpwalker\Include\f3crhxac_x64.h 【UNIXの場合】 ・ INCLUDEファイル - /opt/FJSVfwaos/include/f3crhxac.h ・ ライブラリ リンクするライブラリ OS Solaris /opt/FJSVfwaos/lib/libf3crhxac.so Linux (x86版、Intel64版でV13.3.0以前からの互換用) /opt/FJSVfwaos/lib/libf3crhxac.so Linux (Intel64版) /opt/FJSVfwaos/lib/libf3crhxac_x64.so AIX /opt/FJSVfwaos/lib/libf3crhxac.so HP-UX /opt/FJSVfwaos/lib/libf3crhxac.sl コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ Microsoft Visual C++ 2005 【UNIXの場合】 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ 3.2.2 アクション管理の出口情報 アクション管理が提供する出口情報について説明します。 サポート外のショートメールのメッセージ変換用出口 ショートメールを送信するとき、メッセージテキストをコードに変換する必要があります。Systemwalker Centric Managerが、 標準でサポートしていない携帯電話会社携帯電話を使用する場合、メッセージを変換する出口(DLL)をあらかじめ用意 する必要があります。作成したDLLは、DLL名を“f3crhxpc.dll”とし、アクション実行を選択インストールしたクライアントの Systemwalker Centric Managerを、インストールしたディレクトリ配下のMpwalker/binに格納してください。 出口プログラムとのインタフェース メッセージを変換する関数は、以下の形式で呼び出されます。 - 31 - int f3crhx_convert(char *Msg_Text,char *MsgNo,int MsgNoSize,char *Vender) Msg_Text: ショートメールとして送信する文字(変換するメッセージテキストの文字列)が設定されているアドレスが設定されてい ます。 MsgNo: 変換結果を格納する領域が用意されています。出口で指定してください。Msg_Textに格納されている文字をダイア ルする番号の文字列に変換して指定してください。MsgNoSizeに設定された長さの範囲で指定し、文字列の終わり には‘\0’を指定してください。 MsgNoSize: 変換結果を格納する領域(MsgNo)のサイズが設定されています。 Vender: 携帯電話会社名が設定されています。 復帰値 メッセージの変換結果を、関数の復帰値により通知してください。 0以上: 正常終了。ショートメールの送信を行います。 負の値: 異常終了。ショートメールの送信は行われません。 注意事項 ・ 本DLLを作成するとともに、[アクション環境設定(詳細)]ウィンドウの[ショートメール]で、利用する携帯電話会社を登 録する必要があります。 ・ 本DLLが異常終了した場合、Systemwalker Centric ManagerのSystemwalker MpAosfXサービスが停止します。 ・ 本DLLから制御が戻った場合、ショートメール送信が行われます。 使用例 「サポート外のショートメールのメッセージ変換用出口」の使用例を以下に示します。 int f3crhx_convert(char *MsgText,char *MsgNo,int MsgNoSize,char *Vender) { int i ; int NoLen = 0 ; if ( strcmp(Vender,"ven01") != 0 ) return -1 ; } { // サポート外の会社 // メッセージ変換処理 for ( i = 0 ; i < strlen(MsgText) ; i++ ) { /* MsgNoに変換結果を格納する */ /* NoLenには、MsgNo に格納した文字列の数を格納する */ } MsgNo[NoLen] = ‘\0’ ; // 終端コードの設定 return 0 ; // 正常終了 } - 32 - 3.2.3 メール通報エンコードライブラリの作成方法 メール通報で使用するエンコードライブラリの作成方法を説明します。 メール通報では標準で日本語と英語のエンコード処理を行っています。日本語と英語以外(以降、他国語と記述する)で エンコード処理を行う場合、あらかじめライブラリを用意する必要があります。 作成したライブラリはライブラリ格納場所に格納してください。 呼び出し形式 作成したライブラリは、以下の形式で呼び出されます。 【Windows版】 int ライブラリENTRY xwd_toISO(const unsigned char *mailtext, unsigned char *subject,char *charsettype, int *encoding,char *outfile, unsigned long *errcode) 【UNIX版】 int xwd_toISO(const unsigned char *mailtext, unsigned char *subject,char *charsettype, int *encoding,char *outfile,unsigned long *errcode) パラメタ mailtext 送信するメールの本文(文字列)を格納して、ライブラリを呼び出します。文字列の最後には、'\0'が設定されていま す。 ライブラリでは、RFCに従い、文字列を変換後、outfileで渡すファイルに変換結果を格納します。すべてASCII文字で あり、変換が必要ない場合は、この領域の文字列をoutfileで渡すファイルに出力してください。 subject メールの題名を格納して、ライブラリを呼び出します。文字列の最後には、'\0'が設定されています。 ライブラリではRFCに従い文字列を変換後、この領域に変換結果を格納します。文字列の最後には、'\0'を設定して ください。格納できる文字列の最大は、1024バイトです。 charsettype メールの本文またはメールの題名を変換した場合、メールのヘッダの“Content-type: ”に設定する文字列を格納して ください。変換の必要がない(すべてASCII文字)場合は、“us-ascii”を設定します。文字列の最後には、'\0'を設定し てください。領域には、32バイトまで設定可能です。 例) 韓国語の場合:“ISO-2022-KR”または“euc-kr” encoding “Content-Transfer-Encoding”に設定する情報のフラグを設定してください。 0:7bit 1:8bit 値が1の場合、メールのヘッダに以下の文字列を設定します。 “Content-Transfer-Encoding: 8bit” outfile 送信するメールの本文を格納するためのファイル名を設定し、ライブラリを呼び出します。ライブラリでは、mailtextの 文字列を変換後、ファイルに出力してください。ファイルにテキストの変換結果を出力する場合、以下の点に注意して ください。 - 33 - - ファイルが存在する場合は、一度削除するか、中身を消すようにし、前回の送信内容がファイル内に残らないよう にしてください。 - ファイル内での改行は必ずCRLF(“\r\n”)で行ってください。(RFC準拠) - 変換が必要でない(us-ascii)場合でも、必ずファイルにテキストを出力してください。 - ライブラリから復帰時は必ずファイルをクローズしてください。 errcode ファイルの入出力など、Win32ライブラリでエラーが発生した場合は、GetLastError関数の戻り値を設定してください。 復帰値 ライブラリの処理結果を、関数の復帰値により通知してください。 0: 正常終了。 -1: メモリ不足が発生したため、処理を中止しました。 -2: ファイルの入出力でエラーが発生したため、処理を中止しました。 -10: その他のエラーが発生したため、処理を中止しました。 ライブラリ格納場所 【Windows版】 ファイル名 Windows f3crhxdw.dll 格納場所 InstDir\mpwalker\bin または環境変数 PATH に設定されているディ レクトリ 【UNIX版】 ファイル名 Solaris 格納場所 libf3crhxdw.so /opt/systemwalker/libまたは環境変数 LD_LIBRARY_PATH に設定 されているディレクトリ f3crhxdw.dll InstDir\mpwalker\bin または環境変数 PATH に設定されているディ レクトリ同上 HP-UX AIX Linux Windows 注意事項 【Windows版】 ・ コンパイル環境として、コンパイラは、Microsoft Visual C++ 2005を、ランタイムライブラリは“マルチスレッド(DLL)”を 使用してください。 ・ LIBファイルおよびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ Systemwalker Centric Managerの動作中に本コマンドを実行した場合、すぐには設定が反映されません。設定を反 映するにはSystemwalker Centric Managerを再起動してください。 ・ Systemwalker Centric Managerの停止時に本コマンドを実行した場合、次にSystemwalker Centric Managerを起動し たときに設定が反映されます。 - 34 - 【UNIX版】 ・ ライブラリは、マルチスレッド対応してください。 呼び出し元はマルチスレッドです。ライブラリはマルチスレッドセーフな関数を使用して作成してください。 ・ LIBファイルおよびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ Systemwalker Centric Managerの動作中に本コマンドを実行した場合、すぐには設定が反映されません。設定を反 映するにはSystemwalker Centric Managerを再起動してください。 ・ Systemwalker Centric Managerの停止時に本コマンドを実行した場合、次にSystemwalker Centric Managerを起動し たときに設定が反映されます。 実行結果/出力形式 ライブラリが正常終了した場合、設定された情報を以下の部分と置き換えて、メールを送信します。 3.3 ネットワーク管理のAPI ネットワーク管理のAPIについて説明します。ネットワーク管理APIを用いて、SNMPの操作や、SNMPトラップの送受信が できます。ネットワーク管理で提供するAPI一覧を以下に示します。 表3.6 ネットワーク管理のAPI一覧 関数名 機能 NwsnmpStartup ネットワーク管理APIの初期化 NwsnmpCleanup ネットワーク管理APIのクローズ NwsnmpOpen SNMP操作のためのソケットIDを獲得 NwsnmpClose SNMP操作のためのソケットIDを解放 NwsnmpSend GET/GETNEXT/SET REQUESTの送信 NwsnmpTrapSend SNMPトラップの送信 NwsnmpReceive GET RESPONSEの受信 NwsnmpMibLoad MIBファイルのロード NwsnmpMibFree MIBファイルのアンロード NwsnmpPduEncode PDUの符号化 NwsnmpPduDecode PDUの復号化 NwsnmpPduFree PDU復号化後の領域解放 NWsnmpMib2Dot MIB名からドット形式への変換 - 35 - 関数名 機能 NWsnmpDot2Mib ドット形式からMIB名への変換 NwsnmpPerror エラーメッセージの標準出力 NwsnmpSerror エラーメッセージの作成 NwsnmpTrapdOpen SNMPトラップ受信のためのソケットIDを獲得 NwsnmpTrapdClose SNMPトラップ受信のためのソケットIDを解放 NwsnmpTrapdReceive SNMPトラップの受信 NwsnmpFree ネットワーク管理APIで取得した領域の解放 NWsnmpReadSelect 同期型入力の多重化 ネットワーク管理のAPI共通の動作環境、注意事項、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ サポート対象はSNMPv1だけです。 ・ 64bitプラットフォームで使用時の留意事項 APIは64bitのため、利用する場合は、64bitアプリケーションを作成してください。 必要ファイル 上記ネットワーク管理のAPIを使用するには、以下のファイルが必要となります。ネットワーク管理の各APIはLIBファイル に格納し、各APIで使用する定数、および構造体は、INCLUDEファイルに宣言します。 【Windowsの場合】 ・ x64環境の場合 - Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpsnmp_x64.lib - Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\snmp_api.h、snmpcode.h ・ x64環境以外の場合 - Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\mpsnmp.lib - Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\snmp_api.h、snmpcode.h 【UNIXの場合】 ・ INCLUDEファイル - /opt/FJSVfnmkt/include/snmp_api.h,snmpcode.h ・ ライブラリ OS リンクするライブラリ Solaris /opt/FJSVfnmkt/lib/libmpsnmp.so Linux(x86版) /opt/FJSVfnmkt/lib/libmpsnmp.so - 36 - リンクするライブラリ OS Linux(Intel64版) /opt/FJSVfnmkt/lib/libmpsnmp_x64.so AIX /opt/FJSVfnmkt/lib/libmpsnmp.so HP-UX /opt/FJSVfnmkt/lib/libmpsnmp.so コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ Microsoft Visual C++(R) 2005 Service Pack 1 以降 【UNIXの場合】 ・ Solaris : WorkShop Compilers 5.0 以降 ・ Linux : gcc バージョン 3.2.3 以降 ・ HP-UX : HP92453-01 B.11.11.29484.GP HP C Compiler、HP aC++ B3910B A.03.50 ・ AIX : IBM XL C/C++ Enterprise Edition V7.0 for AIX 3.3.1 ネットワーク管理のAPI用共通パラメタ ネットワーク管理のAPIで使用する共通パラメタについて説明します。 NWsnmp_pdu構造体 機能 SNMPのデータ設定、または受信時に使用する構造体です。 構造体 【Windows版/UNIX版】 typedef struct { int char int int int int int char unsigned long int version; #define NWSNMP_VERSION_1 *community; community_len; pdu_type; #define NWSNMP_GET #define NWSNMP_GET_NEXT #define NWSNMP_RESPONSE #define NWSNMP_SET #define NWSNMP_TRAP request_id; error_status; #define NWSNMP_NOERROR #define NWSNMP_TOOBIG #define NWSNMP_NOSUCHNAME #define NWSNMP_BADVALUE #define NWSNMP_READONLY #define NWSNMP_GENERR error_index; *enterprise; agent_addr; generic_trap; #define NWSNMP_COLDSTART #define NWSNMP_WARMSTART #define NWSNMP_LINKDOWN 0 0 1 2 3 4 0 1 2 3 4 5 0 1 2 - 37 - int int NWsnmp_Varbind } NWsnmp_pdu; #define NWSNMP_LINKUP #define NWSNMP_AUTHENTICATIONFAILURE #define NWSNMP_EGPNEIGHBORLOSS #define NWSNMP_ENTERPRISESPECIFIC specific_trap; time_stamp; *var_bind; 3 4 5 6 メンバ 各PDUタイプの符号化時に設定するメンバを以下に示します。 GET GET NEXT SET TRAP version ○ ○ ○ ○ 0だけ設定可 community ○ ○ ○ ○ NULLは設定不可 community_len ○ ○ ○ ○ 1以上だけ設定可 pdu_type ○ ○ ○ ○ 0、1、3、4だけ設定可 request_id ○ ○ ○ × PDUの識別に使用 error_status × × × × 符号化時に0を設定 error_index × × × × 符号化時に0を設定 enterprise × × × ○ エージェントのsysObjectIDを設定 agent_addr × × × ○ 32ビットのhostid/netidを設定 generic_trap × × × ○ 0~6だけ設定可 specific_trap × × × ○ generic_trapが6のときに設定 var_bind ○ ○ ○ △ 省略時はNULLを設定 メンバ名 ○:設定必須 ×:省略不可 △:省略可 設定 各項目の設定を以下に示します。 version: SNMPプロトコルバージョンを設定します。 現在は、SNMPv1以外はサポートしていません。 community: コミュニティ名を設定します。 community_len: コミュニティ名の長さを設定します。 pdu_type: PDUタイプを以下より選択します。 #define #define #define #define #define NWSNMP_GET NWSNMP_GET_NEXT NWSNMP_RESPONSE NWSNMP_SET NWSNMP_TRAP 0 1 2 3 4 - 38 - 備考 request_id: リクエストIDを設定します。 SNMPトラップ送信時には意味を持ちません。 error_status: 送信時には意味を持ちません。 受信時には、以下のどれかのエラー情報が通知されます。 #define #define #define #define #define #define NWSNMP_NOERROR NWSNMP_TOOBIG NWSNMP_NOSUCHNAME NWSNMP_BADVALUE NWSNMP_READONLY NWSNMP_GENERR 0 1 2 3 4 5 error_index: 送信時には意味を持ちません。 受信時には、エラーインデックスが設定されます。 enterprise: SNMPトラップのenterprise値を設定します。 enterpriseに使用されるsysObjectIDが、MIBファイルに定義されている場合、MIB名を指定できます。 未定義の場合には、ドット形式で指定してください。 agent_addr: SNMPトラップのエージェントアドレス(32ビットhostid/netid)を設定します。 generic_trap: SNMPトラップの種類を以下から選択します。 #define #define #define #define #define #define #define NWSNMP_COLDSTART NWSNMP_WARMSTART NWSNMP_LINKDOWN NWSNMP_LINKUP NWSNMP_AUTHENTICATIONFAILURE NWSNMP_EGPNEIGHBORLOSS NWSNMP_ENTERPRISESPECIFIC 0 1 2 3 4 5 6 specific_trap: SNMPトラップの種別(generic_trap)が、NWSNMP_ENTERPRISESPECIFICの場合に、specific_trapを設定します。 それ以外のSNMPトラップ時には、0(ゼロ)を設定します。 time_stamp: SNMPトラップを生成したエージェントのsysUpTime値を設定します。 var_bind: Varbindを設定します。 詳細については、以下を参照してください。 省略して符号化を行う場合には、NULLを設定してください。 NWsnmp_Varbind構造体 機能 GET/GET-NEXT/SETオペレーションの受信と、それに対応する応答に使用します。また、SNMPトラップを送信する場 合にも使用します。 構造体 【Windows版/UNIX版】 - 39 - typedef struct _old { char *string; int len; } NWsnmp_oid; typedef union _nwsnmp_var_val { NWSNMP_LONG val_integer; NWsnmp_oid val_octet_string; char *val_object_identidier; unsigned long val_ip_addr; unsigned long val_counter; unsigned long val_gauge; unsigned long val_timeticks; NWsnmp_oid val_opaque; } NWsnmp_var_val; typedef struct _nwsnmp_varbind { char *obj_name; int obj_type; #define NWSNMP_INTEGER #define NWSNMP_OCTET_STRING #define NWSNMP_OBJECT_IDENTIFIER #define NWSNMP_NULL #define NWSNMP_IPADDRESS #define NWSNMP_COUNTER #define NWSNMP_GAUGE #define NWSNMP_TIMETICKS #define NWSNMP_OPAQUE NWsnmp_var_val obj_syntax; struct _nwsnmp_varbind *next; } NWsnmp_Varbind; 1 2 3 4 5 6 7 8 9 設定 各項目の設定を以下に示します。 obj_name: 操作対象のオブジェクト名を、MIB名またはドット形式で指定します。 obj_type: オブジェクトのタイプを以下より指定します。 #define #define #define #define #define #define #define #define #define NWSNMP_INTEGER NWSNMP_OCTET_STRING NWSNMP_OBJECT_IDENTIFIER NWSNMP_NULL NWSNMP_IPADDRESS NWSNMP_COUNTER NWSNMP_GAUGE NWSNMP_TIMETICKS NWSNMP_OPAQUE 1 2 3 4 5 6 7 8 9 obj_syntax: オブジェクトのシンタックスを指定します。 オブジェクトタイプに該当する、NWsnmp_var_val共用体のメンバに値を指定します。 next: 複数のVarbindを設定する場合、次構造体のポインタを指定します。最後のVarbind構造体には、NULLを指定してく ださい。 - 40 - NWsnmpErrinfo構造体 機能 ネットワークAPIで発生したエラー情報を設定する構造体です。 構造体 【Windows版/UNIX版】 typedef struct _nwsnmp_errinfo { int NWErrorCode; unsigned long NWErrorDetail; unsigned long NWErrorCause; } NWsnmpErrinfo; 設定 各項目の設定を以下に示します。 NWErrorCode: エラーコードが設定されます。 NWErrorDetail: エラーの詳細コードが設定されます。 詳細コードが取得できないエラーについては、0が設定されます。 NWErrorCause: エラーの原因コードが設定されます。 備考 この情報から、エラーメッセージを標準エラーに出力するNWsnmpPerror()関数と、エラーメッセージを作成する NWsnmpSerror()関数を用意しています。 3.4 性能監視のAPI 性能監視のAPIについて説明します。 ・ トラフィック情報の獲得 ・ トラフィック情報格納構造体 3.4.1 トラフィック情報の獲得 性能監視のAPIを用いて、トラフィック情報を獲得できます。 トラフィック情報を獲得するためのAPI一覧を以下に示します。 表3.7 トラフィック情報の獲得API一覧 関数名 Mp_GetNodeIFTraffic 機能概要 各インタフェースのトラフィック情報の獲得 トラフィック情報獲得のAPI共通の動作環境、注意事項、および必要ファイルについての説明を以下に示します。 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ - 41 - 注意事項 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ トラフィック情報獲得のAPIを使用したアプリケーションを動作させるときに、性能監視がONの状態であることが必要 です。 ・ 64bitプラットフォームで使用時の留意事項 APIは64bitのため、利用する場合は、64bitアプリケーションを作成してください。 必要ファイル 上記トラフィック情報獲得のAPIを使用するには、以下のファイルが必要となります。 【Windowsの場合】 トラフィック情報獲得の各APIは、LIBファイルに格納し、各APIで使用する定数、および構造体は、INCLUDEファイルに 宣言します。 ・ Windows x64版の場合 - Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\F3crTInf_x64.lib - Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\F3crTInf.h ・ Windows x64版以外のWindows版の場合 - Systemwalkerインストールディレクトリ\MPWALKER.DM\Lib\F3crTInf.lib - Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\F3crTInf.h 【UNIX版】 トラフィック情報獲得の各APIは、LIBファイルに格納し、各APIで使用する定数、および構造体は、INCLUDEファイルに 宣言します。 ・ /opt/systemwalker/lib/libF3crTInf.so ・ /opt/systemwalker/include/F3crTInf.h コンパイル環境 コンパイル環境は以下のとおりです。 【Windowsの場合】 ・ コンパイル環境として、コンパイラは、Microsoft Visual C++ 2005を、ランタイムライブラリは“マルチスレッド(DLL)”を 使用してください。 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 【UNIXの場合】 ・ Solarisでは、コンパイル環境として、コンパイラはSun WorkShop 5.0以降を使用してください。 3.4.2 トラフィック情報格納構造体 トラフィック情報を格納するための構造体を以下に示します。 獲得情報 //インタフェース別トラフィック情報格納構造体 typedef struct _MP_TRFIF_INF{ unsigned long dwIfIndex; // double dIfInOctets; // double dIfOutOctets; // double dIfLinePkts; // double dIfInPkts; // インタフェース番号 受信バイト数 送信バイト数 回線使用率 受信パケット数 - 42 - double double double double double double dIfOutPkts; dIfDiscardPkts; dIfErrorPkts; dIfSegOctets; dIfSegPkts; dIfSegBroadcastPkts; // // // // // // // double dIfSegMulticastPkts; // // double dIfSegPercentOfUsage; // double dIfSegPercentOfCollision; // // } MP_TRFIF_INF, * LPMP_TRFIF_INF; 送信パケット数 破棄パケット率 エラーパケット率 セグメントバイト数 セグメントパケット数 セグメントブロード キャストパケット数 セグメントマルチ キャストパケット数 セグメント使用率 セグメントコリジョン 発生率 使用例 トラフィック情報のアクセスAPI関数の使用例を以下に示します。 //--------------------------------------------------------------------// インタフェース別トラフィック情報の獲得 //--------------------------------------------------------------------//--------------------------------------------------------------------// パラメタ // argv[0] : コマンド名 // argv[1] : ノード名 // argv[2] : インタフェース番号 //-------------------------------------------------------------------#include <stdio.h> #include "F3crTInf.h" void main(int argc, char *argv[]) { int MP_TRFIF_INF Bresult; trfinfo; //--------------------------------------------------------------------//指定パラメタの表示 //--------------------------------------------------------------------printf("--- Traffic information ---\n"); printf("Node name = %s\n", argv[1]); printf("Interface index = %s\n", argv[2]); printf("\n"); //--------------------------------------------------------------------//トラフィック情報の獲得 //--------------------------------------------------------------------memset(&trfinfo, 0, sizeof(trfinfo)); Bresult = Mp_GetNodeIFTraffic(argv[1], atoi(argv[2]), &trfinfo); //--------------------------------------------------------------------// トラフィック情報の表示 //--------------------------------------------------------------------if (Bresult == -1) { printf("Error! Reason code = %d\n", errno); } else { //トラフィック情報が有効かどうかの判定を行います - 43 - if (trfinfo.dIfInOctets != MP_TRF_INF_ING) printf("dIfInOctets = %.0fB\n", trfinfo.dIfInOctets); if (trfinfo.dIfOutOctets != MP_TRF_INF_ING) printf("dIfOutOctets = %.0fB\n", trfinfo.dIfOutOctets); if (trfinfo.dIfLinePkts != MP_TRF_INF_ING) printf("dIfLinePkts = %.2f%%\n", trfinfo. dIfLinePkts); if (trfinfo.dIfInPkts != MP_TRF_INF_ING) printf("dIfInPkts = %.0fP\n", trfinfo. dIfInPkts); if (trfinfo.dIfOutPkts != MP_TRF_INF_ING) printf("dIfOutPkts = %.0fP\n", trfinfo. dIfOutPkts); if (trfinfo.dIfDiscardPkts != MP_TRF_INF_ING) printf("dIfDiscardPkts = %.2f%%\n", trfinfo. dIfDiscardPkts); if (trfinfo.dIfErrorPkts != MP_TRF_INF_ING) printf("dIfErrorPkts = %.2f%%\n", trfinfo. dIfErrorPkts); if (trfinfo.dIfSegOctets != MP_TRF_INF_ING) printf("dIfSegOctets = %.0fB\n", trfinfo. dIfSegOctets); if (trfinfo.dIfSegPkts != MP_TRF_INF_ING) printf("dIfSegPkts = %.0fP\n", trfinfo. dIfSegPkts); if (trfinfo.dIfSegBroadcastPkts != MP_TRF_INF_ING) printf("dIfSegBroadcastPkts = %.0fP\n", trfinfo. dIfSegBroadcastPkts); if (trfinfo.dIfSegMulticastPkts != MP_TRF_INF_ING) printf("dIfSegMulticastPkts = %.0fP\n", trfinfo. dIfSegMulticastPkts); if (trfinfo.dIfSegPercentOfUsage != MP_TRF_INF_ING) printf("dIfSegPercentOfUsage = %.2f%%\n", trfinfo. dIfSegPercentOfUsage); if (trfinfo.dIfSegPercentOfCollision != MP_TRF_INF_ING) printf("dIfSegPercentOfCollision = %.2f%%\n", trfinfo. dIfSegPercentOfCollision); } return; } 3.5 返答メッセージのAPI【UNIX版】 メッセージ返答要求・返答機能のAPIについて説明します。 このAPIは、サーバプログラムからの返答要求メッセージをコンソールに表示してオペレータに返答を要求し、オペレー タから返答された場合、返答内容を持って復帰するAPIです。 メッセージ返答要求・返答機能のAPI一覧 関数名 機能概要 ORMMessage 運用管理サーバにメッセージの通知のみを行います。ORMRequest()APIによる返答 要求メッセージの前後に、関連メッセージを通知する場合に使用します。 ORMRequest 任意の文字列を返答結果とする返答要求メッセージを運用管理サーバに通知します。 - 44 - 動作環境 本APIは、以下のインストール種別で動作します。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ 注意事項 ・ ORMRequest()関数により、同時に発行できる返答要求の数は100までです。 ・ LIBファイル、およびINCLUDEファイルは、同じバージョン、レベルで提供されたものを使用してください。 ・ ORMMessage()関数により通知されるメッセージのエラー種別は、情報となります。そのため、監視イベント一覧画面 には、メッセージは表示されません。メッセージ一覧画面に表示されます。 ・ 上位システムが12.0より古いSystemwalkerがインストールされている場合、またはSolaris /Linuxでない場合は、 ORMRequest()関数により発行した返答要求メッセージは、一般メッセージとして通知されます。 この場合、メッセージ発行元システムに対して、ORMResponse(返答通知コマンド)を使用して返答を実施してくださ い。 ・ 上位システムが停止していた場合、通信環境定義の保存データ数で指定する未送信データ保存数に従い保存され ます。定義された保存データ数を超えるデータが発生した場合、ORMRequest()関数により発行された返答要求メッ セージおよび返答完了通知が優先して保存されます。 必要ファイル 上記返答メッセージAPIを使用するには、以下のファイルが必要となります。 返答メッセージのAPIは、LIBファイルに格納し、各APIで使用する定数、および構造体はINCLUDEファイルに宣言して います。 ・ INCLUDEファイル - /usr/include/ORMessage.h ・ ライブラリ リンクするライブラリ OS Solaris /usr/lib/libORMessage.so Linux (x86版、Intel64版でV13.3.0以前からの互換用) Linux (Intel64版) /usr/lib64/libORMessage_x64.so コンパイル環境 コンパイル環境は以下のとおりです。 ・ Solaris : Sun WorkShop 5.0以降 ・ Linux : 動作プラットフォームにバンドルされているコンパイラ - 45 - 第4章 APIリファレンス 各APIについて、アルファベット順に必要な項目について説明します。 4.1 Mp_CallPager2()関数 機能説明 ショートメールの送信を行います。 呼び出し形式 long Mp_CallPager2(unsigned char *AppName,MpPagerList *AddressList, int nAddressList,char *MsgText,int msgtype, char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は、64バイト以内で指定します。 AddressList: ショートメール送信情報構造体(MpPagerList)のアドレスを指定します。ショートメール送信先の電話番号を指定しま す。複数ある場合は、配列で指定します。 nAddressList: AddressListに指定したアドレスの数(配列数)を指定します。 MsgText: 送信するメッセージのアドレスを指定します。メッセージは、送信するコード(定型メッセージのコードも含む)を指定します。 または、ショートメールの会社でサポートしている文字を、半角文字で指定します。 msgtype: MsgTextに指定したメッセージの形式を指定します。 PAGER_CODE: 番号形式です。 PAGER_TEXT: メッセージテキストです。 exehost: アクションを実行するホスト名(アクション実行を選択したV13.3.0以降のサーバまたはクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]ウィンドウで指定したホストでアクションが実行されます。 構造体の説明 ショートメール送信情報構造体(MpPagerList)の形式 typedef struct MpPagerList_tag { int type ; unsigned char *address ; char *addrid ; char *vender ; } MpPagerList ; - 46 - type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: ショートメール送信先の電話番号です。 TYPE_NAME: あて先名です。 address: 電話番号、またはあて先名のアドレスを指定します。 電話番号には、ショートメールセンターの電話番号と“T”を、ショートメール送信先の携帯電話番号の前に付けて指 定します。 ショートメールセンターの電話番号は、使用しているショートメール会社(NTT DoCoMo)に確認してください。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 vender: ショートメールの種類(携帯電話会社)を指定します。 Systemwalker Centric Managerで標準に用意されるショートメールの種類を、以下に示します。 ほかの種類を指定する場合は、[アクション環境設定(詳細)]ウィンドウで登録した携帯電話会社名を指定し、メッセー ジを変換する出口(サポート外のショートメールのメッセージ変換用出口)を作成する必要があります。 なお、サポート外のショートメールのメッセージ変換用出口については、“サポート外のショートメールのメッセージ変 換用出口”を参照してください。 MPPAGER_DOCOMO_SHORTMAIL: NTT DoCoMo ショートメール 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかどうかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効な電話番号がありません。 ショートメール送信情報構造体(MpPagerList)に指定した address に誤りがあります。正しいあて先名に変更してく ださい。 MPACT_NOTMODEM: モデムがインストールされていません。 - 47 - モデムのインストール状態、およびモデムが正しく接続されているかどうかを確認してください。モデムに関する確 認は、OSのヘルプに記載されている内容を参考に実施してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 送信できるメッセージの長さは、ショートメールの種類により異なります。送信できるメッセージの長さは、使用するショー トメールの説明書を参照してください。 なお、送信できるメッセージの長さを超えた場合は、正しく送信できないことがあります。 使用例 ショートメール送信APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "ショートメールAPI" ; // 依頼元アプリケーション名 MpAddress addr[2] ; // 送信先アドレス格納域 int naddr ; char *text = "イジョウハッセイ" ; // 送信するメッセージ int type = PAGER_TEXT ; long lrc ; addr[0].type = TYPE_ADDRESS ; // 携帯電話2台にショートメール addr[0].address = "0901234567T09012345678" ; // を送信する addr[0].vender = MPPAGER_DOCOMO_SHORTMAIL ; - 48 - addr[1].type = TYPE_ADDRESS ; addr[1].address = "0901234567T09012346789" ; addr[1].vender = MPPAGER_DOCOMO_SHORTMAIL ; naddr = 2; lrc = Mp_CallPager2(AppName,addr,naddr,text,type,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.2 Mp_ChangeEventStat()関数 機能説明 Mp_OpenEventStat()発行後、Mp_ChangeEventStat()関数を発行することにより、イベントの対処要求を行います。 呼び出し形式 【Windows版】 #include <mp_opmgr_api.h> int Mp_ChangeEventStat( fp, hisnum, keydata, status, dealer, memo, chgflag ); HANDLE fp; long hisnum; MPOPCESKEY *keydata; DWORD char char DWORD status; *dealer; *memo; chgflag; /* /* /* /* /* /* /* /* ファイル記述子を指定する 監視イベント番号を指定する MPOPCESKEY構造体を指すポインタを 指定する イベントの状態を指定する 対応者を指定する メモを指定する 変更指定を有効にする項目を指定する */ */ */ */ */ */ */ */ 【UNIX版】 #include <mp_opmgr_api.h> int Mp_ChangeEventStat( fp, hisnum, keydata, status, dealer, memo, chgflag ); int fp; long hisnum; MPOPCESKEY *keydata; unsigned long status; char *dealer; char *memo; unsigned long chgflag; /* /* /* /* /* /* /* /* ファイル記述子を指定する */ 監視イベント番号を指定する */ MPOPCESKEY構造体を指すポインタを */ 指定する */ イベントの状態を指定する */ 対応者を指定する */ メモを指定する */ 変更指定を有効にする項目を指定する*/ パラメタ fp: Mp_OpenEventStat()で獲得したハンドル、またはファイル記述子を指定します。 hisnum: 対処する監視イベントの、監視イベント番号を指定します。監視イベント番号は、2,147,483,647以下の値です。 対処する監視イベントを、イベントテキスト、イベント発生システムのノード名/ノードID、およびイベント発生日時で特 定する場合は、このパラメタに0を指定します。 - 49 - keydata: MPOPCESKEY構造体を指すポインタを指定します。 この構造体は、対処する監視イベントを、イベントテキスト、イベント発生システムのノード名/ノードID、およびイベント 発生日時で特定する場合に必要です。 対処するイベントを監視イベント番号で特定する場合は、NULLを指定します。 status: 対処する監視イベントの状態を指定します。このパラメタには、以下の値のどれかを指定します。 MPOP_CES_DEFEVT: 監視イベントの状態は“保留”。 MPOP_CES_FIXEVT: 監視イベントの状態は“対処済”。 MPOP_CES_REPEVT: 監視イベントの状態は“返答済”。 dealer: 監視イベントに対応した人の名前を、以下の範囲で指定します。 なお、新規対応者を指定しないで、対処要求前の情報を破棄する場合は、NULLを指定します。 【Windows】 16バイト以内で指定します。 【UNIX】 システムのデフォルトロケールにUTF-8使用している場合は32バイト以内、それ以外では16バイト以内で指定します。 memo: 監視イベントに対するユーザメモを、320バイト以内で指定します。 新規ユーザメモを指定しないで、対処要求前の情報を破棄する場合は、NULLを指定します。 注意 【UNIX版】 システムのデフォルトロケールがUTF-8以外の場合は、以下の点も考慮する必要があります。 - memoに指定した文字列をUTF-8に変換した場合に、320バイトを超えないこと。 この変換はUTF-8以外のロケールで運用している運用管理サーバから、UTF-8で運用している全体監視サーバ に監視イベントを送信したときに起こります。このため、UTF-8で運用される全体監視サーバへイベントを送信す る場合は、目安として以下の範囲でmemoを指定してください。 - SJIS半角カナ1文字は3、それ以外の場合は1バイトコードの英数字を1、2バイトコードの文字を3とカウントしたと きに、指定文字数の合計が320を超えないこと。 chgflag: 対処要求で、変更指定を有効にする項目を指定します。 このパラメタには、以下のフラグを任意に組み合わせて指定します。 MPOP_CES_STATUS: statusに指定された値を有効にする。 MPOP_CES_DEALER: dealerに指定された値を有効にする。 MPOP_CES_MEMO: memoに指定された値を有効にする。 - 50 - MPOP_CES_ALL: status、dealer、memoに指定された値をすべて有効にする。 構造体の説明 MPOPCESKEY構造体の形式 【Windows】 typedef struct _MPOPCESKEY { char nodename[MPOP_NODENAMELEN]; DWORD NodeID; /* リザーブ領域 DWORD DatabaseID; /* リザーブ領域 time_t timerec; char eventtext[MPOP_EVENTLEN]; } MPOPCESKEY; */ */ 【UNIX】 typedef struct _MPOPCESKEY { char nodename[MPOP_NODENAMELEN]; unsigned long NodeID; /* リザーブ領域 unsigned long DatabaseID; /* リザーブ領域 time_t timerec; char eventtext[MPOP_EVENTLEN]; } MPOPCESKEY; */ */ nodename: 対処する監視イベントが発生したシステムのノード名を指定します。 timerec: 対処する監視イベントが発生した日付および時間を、time_t型で指定します。 eventtext: 対処する監視イベントのテキストを指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEventStat()関数 ・ Mp_CloseEventStat()関数 復帰値 0: 正常終了。イベントを正常に対処。 - 51 - 4: 異常終了。返答要求メッセージ以外を“返答済”にしたため対処不可能。 3: 異常終了。ログファイルに該当するイベントが存在しないため対処不可能。 2: 異常終了。返答要求メッセージで、すでに状態が“返答済”のため対処不可能。 1: 異常終了。イベントの状態が“調査中”のため対処不可能。 -1: 異常終了。異常発生のため対処不可能。 -2: 異常終了。イベントを正常に対処したが、マネージャで続行不可能な異常が発生。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoにはシステムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 4.3 Mp_CloseEvent()関数 機能説明 イベントの受信を終了する場合には、必ずMp_CloseEvent()関数を発行します。 呼び出し形式 【Windows版】 #include <mp_opmgr_api.h> int Mp_CloseEvent( fp ); HANDLE fp; /* ハンドルを指定する */ 【UNIX版】 #include <mp_opmgr_api.h> int Mp_CloseEvent( fp ); - 52 - int fp; /* ファイル識別子を指定する */ パラメタ fp: Mp_OpenEvent()で獲得したハンドル、またはファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEvent()関数 ・ Mp_ReadEvent()関数 ・ Mp_GetEventMap()関数【Windows版】 復帰値 0: 正常終了。 -1: 異常終了。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX】 エラーコードは、errnoに設定されます。 errnoにはシステムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 - 53 - 4.4 Mp_CloseEventLog()関数 機能説明 監視イベントの獲得を終了する場合には、必ずMp_CloseEventLog()関数を発行します。 呼び出し形式 【Windows(64bit)版で64ビットのアプリケーションを作成する場合】 #include <mp_opmgr_api.h> int Mp_CloseEventLog( fp ); HANDLE fp; /* ハンドルを指定する /* 【Windows x64版以外のWindows版】 #include <mp_opmgr_api.h> int Mp_CloseEventLog( fp ); int fp; /* ハンドルを指定する /* 【Linux for Intel64版以外のUNIX版】 #include <mp_opmgr_api.h> int Mp_CloseEventLog( fp ); int fp; /* ファイル識別子を指定する /* /* ファイル識別子を指定する /* 【Linux for Intel64版】 #include <mp_opmgr_api.h> int Mp_CloseEventLog( fp ); long fp; パラメタ fp: Mp_OpenEventLog()で獲得したハンドル、またはファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEventLog()関数 ・ Mp_ReadEventLog()関数 - 54 - 復帰値 0: 正常終了。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 4.5 Mp_CloseEventStat()関数 機能説明 イベント対処を終了する場合には、必ずMp_CloseEventStat()関数を発行します。 呼び出し形式 【Windows版】 #include <mp_opmgr_api.h> int Mp_CloseEventStat( fp ); HANDLE fp; /* ハンドルを指定する */ 【UNIX版】 #include <mp_opmgr_api.h> int Mp_CloseEventStat( fp ); int fp; /* ファイル記述子を指定する */ パラメタ fp: Mp_OpenEventStat()で獲得したハンドル、またはファイル記述子を指定します。 実行に必要な権限/実行環境 【Windows版】 - 55 - ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEventStat()関数 ・ Mp_ChangeEventStat()関数 復帰値 0: 正常終了。 -1: 異常終了。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 4.6 Mp_CloseMsg()関数 機能説明 メッセージの受信を終了する場合には、必ずMp_CloseMsg()関数を発行します。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> int Mp_CloseMsg( fp ); HANDLE fp; /* Mp_OpenMsg()で獲得したハンドルを指定する - 56 - */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_CloseMsg( fp ); int fp; /* Mp_OpenMsg()で獲得したファイル識別子を指定する*/ パラメタ fp: Mp_OpenMsg()で獲得したハンドル、またはファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenMsg()関数 ・ Mp_GetMsgMap()関数【Windows版】 ・ Mp_ReadMsg()関数 復帰値 0: 正常終了。 -1: 異常終了。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 - 57 - API格納場所 “監視メッセージのAPI”を参照してください。 動作環境による差異 以下のインストール種別で使用可能です。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7 ・ クライアント: Windows Vista(R)/Windows(R) 7 4.7 Mp_CloseMsgLog()関数 機能説明 メッセージログの獲得を終了する場合には、必ずMp_CloseMsgLog()関数を発行します。 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opagt_api.h> int Mp_CloseMsgLog( fp ); HANDLE fp; /* /* Mp_OpenMsgLog()で獲得したハンドル*/ を指定する */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_CloseMsgLog( fp ); int fp; /* /* Mp_OpenMsgLog()で獲得したハンドル*/ を指定する */ 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opagt_api.h> int Mp_CloseMsgLog( fp ); int fp; /* /* Mp_OpenMsgLog()で獲得したファイル*/ 識別子を指定する */ 【Linux for Intel64版】 #include <mp_opagt_api.h> int Mp_CloseMsgLog( fp ); long fp; /* /* Mp_OpenMsgLog()で獲得したファイル*/ 識別子を指定する */ - 58 - パラメタ fp: Mp_OpenMsgLog()で獲得したハンドル、またはファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenMsgLog()関数 ・ Mp_ReadMsgLog()関数 復帰値 0: 正常終了。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視メッセージのAPI”を参照してください。 動作環境による差異 以下のインストール種別で使用可能です。 - 59 - ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7(注) ・ クライアント: Windows Vista(R)/Windows(R) 7(注) 注) システム監視エージェントインストール選択時 4.8 Mp_CloseRemoteCmd()関数 機能説明 コマンド要求、コマンド応答を終了する場合には、必ずMp_CloseRemoteCmd()関数を発行します。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmd( fp ); HANDLE fp; /* /* Mp_OpenRemoteCmd()で獲得したハンドルを*/ 指定する */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmd( fp ); int fp; /* /* Mp_OpenRemoteCmd()で獲得したファイル*/ 識別子を指定する */ パラメタ fp: Mp_OpenRemoteCmd()で獲得したハンドル、またはファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必要 です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 - 60 - ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenRemoteCmd()関数 ・ Mp_ExecRemoteCmd()関数 ・ Mp_RespRemoteCmd()関数 ・ Mp_GetRemoteCmdMap()関数【Windows版】 復帰値 【Windows版】 0: 正常終了。 【UNIX版】 0: 正常終了。 -1: 異常終了(正常終了だけ)。 マイナス復帰した場合のエラーコードは、errnoに設定されます。errnoには、システムのエラーコード(/usr/include/sys/ errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに定義されている値が設定されます。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.9 Mp_CloseRemoteCmdLog()関数 機能説明 コマンドログの獲得を終了する場合には、必ずMp_CloseRemoteCmdLog()関数を発行します。 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmdLog( fp ); HANDLE fp; /* Mp_OpenRemoteCmdLog() で獲得したファイル /* 識別子を指定する */ */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmdLog( fp ); int fp; /* Mp_OpenRemoteCmdLog() で獲得したファイル /* 識別子を指定する 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmdLog( fp ); - 61 - */ */ int fp; /* /* Mp_OpenRemoteCmdLog() で獲得したファイル 識別子を指定する */ */ 【Linux for Intel64版】 #include <mp_opagt_api.h> int Mp_CloseRemoteCmdLog( fp ); long fp; /* /* Mp_OpenRemoteCmdLog() で獲得したファイル 識別子を指定する */ */ パラメタ fp: Mp_OpenRemoteCmdLog()で獲得したファイル識別子を指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 復帰値 0: 正常終了。 なし: 異常終了(正常終了だけ)。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.10 Mp_ExecRemoteCmd()関数 機能説明 Mp_OpenRemoteCmd()関数発行後、Mp_ExecRemoteCmd()関数を発行することにより、コマンド要求を行います。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> int Mp_ExecRemoteCmd( fp, node, NodeID, DatabaseID, cmdtext, execflag ); - 62 - HANDLE char DWORD DWORD char int fp; *node; *NodeID; *DatabaseID; *cmdtext; execflag; /* /* /* /* /* /* Mp_OpenRemoteCmd()で獲得したハンドル コマンド要求先のノード名を指定する NULLを指定する NULLを指定する 発行するコマンドテキストを指定する コマンド実行フラグを指定する */ */ */ */ */ */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_ExecRemoteCmd( fp, node, rsv, cmdtext, execflag ); int fp; char *node; char *rsv; char *cmdtext; int execflag; /* Mp_OpenRemoteCmd()で獲得した記述子 /* コマンド要求先のノード名を指定する /* NULLを指定する /* 発行するコマンドテキストを指定する /* コマンド実行フラグを指定する */ */ */ */ */ パラメタ fp: Mp_OpenRemoteCmd()で獲得したハンドルを指定します。 node: コマンド要求先システムのノード名を128バイト以内で指定します。 cmdtext: 発行するコマンドテキストを2047バイト以内で指定します。 execflag: コマンドを実行する際の条件をフラグで指定します。 execflagは、いくつかのグループで構成され、各グループから1つ値を選択できます。 実行権限フラグ Windows Server 2008以降のWindows OSでは無効です。 OP_CMD_NOROOT: コマンド要求先システムで定義されたコマンドシェルおよび利用者権限でコマンドが実行されます(初期設定)。 OP_CMD_ROOT: コマンド要求先システムの、初期設定のコマンドシェルおよび特権利用者権限でコマンドが実行されます。 応答フラグ OP_CMD_REPLY: コマンド結果応答およびコマンド最終応答を受け取ることができます(初期設定)。 OP_CMD_NOREPLY: コマンド結果応答を受け取ることはできません。コマンド最終応答だけ受け取ることができます。 ロギングフラグ OP_CMD_LOG: コマンド要求、コマンド結果応答、コマンド最終応答のデータをロギングします (初期設定)。 OP_CMD_NOLOG: コマンド要求、コマンド結果応答、コマンド最終応答のデータをロギングしません。 実行に必要な権限/実行環境 【Windows版】 - 63 - ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必要 です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 復帰値 -1以外: 正常終了。コマンド要求とコマンド応答を対応付けるための識別子。 -1: 異常終了。異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.11 Mp_FreeActionInfo()関数【Windows版】 機能説明 Mp_GetActionInfo関数内で獲得された領域を解放します。 呼び出し形式 void Mp_FreeActionInfo(MpActionInfo *ActionInfo,int nAction) パラメタ ActionInfo: Mp_GetActionInfo関数で獲得されたアクション状態情報構造体(MpActionInfo)のアドレスを指定します。アクション 状態情報構造体については、“Mp_GetActionInfo()関数【Windows版】”を参照してください。 nAction: ActionInfoの領域に設定されているアクションの数を示します。 - 64 - 構造体の説明 アクション管理のAPI、Mp_GetActionInfo()関数を参照してください。 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_GetActionInfo()関数【Windows版】 API格納場所 “アクション管理のAPI”を参照してください。 使用例 アクション情報領域の解放APIの使用例を以下に示します。 #include "f3crhxac.h" long handle = 1 ; // 状態を獲得するアクションの管理番号 MpActionInfo *pInfo = NULL ; // 情報の領域のアドレス設定域 int nInfo = 0 ; long lrc; lrc = Mp_GetActionInfo(handle,&pInfo,&nInfo); if ( lrc != 0 ) { /* エラー処理 */ } /* アクション情報(pInfo)の参照 */ /* アクション情報域(pInfo)の解放 */ Mp_FreeActionInfo(pInfo,nInfo) ; 4.12 Mp_FreeActionInfo2()関数 機能説明 Mp_GetActionInfo2()関数内で獲得された領域を解放します。 呼び出し形式 void Mp_FreeActionInfo2(MpActionInfo2 *ActionInfo,int nAction) パラメタ ActionInfo: Mp_GetActionInfo2()関数で獲得されたアクション状態情報構造体(MpActionInfo2)のアドレスを指定します。 アクション状態情報構造体については、“Mp_GetActionInfo2()関数”を参照してください。 nAction: ActionInfoの領域に設定されているアクションの数を示します。 構造体の説明 アクション管理のAPI、Mp_GetActionInfo2()関数を参照してください。 参照 以下のアクション管理のAPIを参照してください。 - 65 - ・ Mp_GetActionInfo2()関数 API格納場所 “アクション管理のAPI”を参照してください。 使用例 アクション情報領域の解放APIの使用例を以下に示します。 #include "f3crhxac.h" long handle = 1 ; // 状態を獲得するアクションの管理番号 MpActionInfo2 *pInfo = NULL ; // 情報の領域のアドレス設定域 int nInfo = 0 ; long lrc; lrc = Mp_GetActionInfo2(handle,&pInfo,&nInfo); if ( lrc != 0 ) { /* エラー処理 */ } /* アクション情報(pInfo)の参照 */ /* アクション情報域(pInfo)の解放 */ Mp_FreeActionInfo2(pInfo,nInfo) ; 4.13 Mp_GetActionInfo()関数【Windows版】 機能説明 指定されたアクションの現在の状態を通知します。 呼び出し形式 long Mp_GetActionInfo(long handle, MpActionInfo **ActionInfo, int *nActionInfo) パラメタ handle: アクションの管理番号(アクション実行APIの復帰値)を指定します。 ActionInfo: アクション状態情報構造体(MpActionInfo)を指す領域のアドレスを指定します。APIでアクション状態情報構造体が 確保されます。 本パラメタが指す領域に、アクション状態情報構造体が設定されます。アクション状態情報構造体は、アクション情報 領域の解放API(Mp_FreeActionInfo)で解放されます。 nActionInfo: アクションの数を格納する領域のアドレスを指定します。本パラメタが指す領域に、アクション状態情報構造体の配列 数が設定されます。 構造体の説明 アクション状態情報構造体(MpActionInfo)の形式 typedef struct MpActionInfo_tag { long no ; long action ; MpActionAddr *addr ; - 66 - int naddr ; int status ; int code ; } MpActionInfo ; no: アクションの管理番号が設定されます。 action: アクションの種類が設定されます。 ACTION_EMAIL: E-mailの送信です。 ACTION_MSMAIL: MS-mailの送信です。 ACTION_POPUP: ポップアップメッセージの送信です。 ACTION_PAGER: ショートメールの送信です。 ACTION_SOUND: サウンドの再生です。 addr: アクション実行先情報構造体(MpActionAddr)のアドレスを指定します。アクションの実行先のアドレス情報を格納し ます。 naddr: addrに設定したアドレス数が設定されます。 status: アクションの状態が設定されます。 STATUS_NORMAL: 正常終了しました。 STATUS_EXEC: 実行中です。 STATUS_EXEWAIT: 実行待ちです。 STATUS_ERROR: 異常終了しました。 STATUS_STOP: 一時停止中です。 code: 状態が異常終了の場合に設定します。 なお、詳細コードについては、後述の“詳細コード”を参照してください。 アクション実行先情報構造体(MpActionAddr)の形式 typedef struct MpActionAddr_tag { unsigned char *name ; - 67 - char *address ; } MpActionAddr ; name: アクション実行APIであて先名を指定した場合は、指定されたあて先名のアドレスが設定されます。アドレスを指定し た場合は、NULLが設定されます。 address: 送信先(アドレス)のアドレスが設定されます。 メールの場合: メールアドレス設定されます。 ポップアップメッセージの場合: ユーザ名、またはコンピュータ名が設定されます。 ショートメールの場合: 送信先の電話番号が設定されます。 詳細コード アクション状態通知API(Mp_GetActionInfo)内で、獲得されたアクションの状態について記述します。 詳細コード 意味 MPACT_D_NOMEMORY アクション実行中にメモリ不足が発生した MPACT_D_FILEACCESS アクション実行中にファイル操作でエラーが発生した MPACT_D_NOFILE 指定されたファイルが存在しない MPACT_D_DEFFILE アクション実行環境が定義されていない MPACT_D_FAIL 何かの理由でアクション実行に失敗した MPACT_D_NOTMOVE アクション実行サーバが起動されていない MPACT_D_NOHOST 指定されたアクション実行ホストが存在しない MPACT_D_SENDFAIL メッセージの送信に失敗した MPACT_D_NOTSERVER SMTPサーバが見つからない MPACT_D_NOTMYHOST 自ホスト名が獲得できない MPACT_D_SMTPCOMMAND SMTPサーバでの処理でエラーが発生した MPACT_D_SMTPCOMM SMTPサーバとの通信でエラーが発生した MPACT_D_NOTCONNECT SMTPサーバと接続できない MPACT_D_FROMADDR 送信元アドレスが指定されていない MPACT_D_SIGNIN サインインに失敗した MPACT_D_NOSEND メール送信処理で失敗した MPACT_D_COMMOPEN COMポート(モデム)のオープンに失敗した MPACT_D_COMMFAIL COMポート(モデム)の入出力でエラーが発生した MPACT_D_INITCOMM COMポート(モデム)の設定に失敗した MPACT_D_LINEBUSY 通話中のため、送信できなかった MPACT_D_LINEFAIL 電話回線の異常のため、送信できなかった MPACT_D_CONVERTFAIL メッセージの変換処理に失敗した MPACT_D_NOTSOUND 音声再生用の環境が設定されていない MPACT_D_NOTDEVICE ほかのアプリケーションが音声再生用のドライバを使 用中 アクション すべて ポップアップ E-mail - 68 - MS-mail ショートメール 音声通知 詳細コード MPACT_D_CREATESOUND 意味 アクション 音声再生処理に失敗した 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_FreeActionInfo()関数 復帰値 0: 正常に情報を獲得しました。 MPACT_NOTACTION: 指定されたアクションは存在しません(すでに終了しています)。 対処は不要です。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_ALLOCFAIL: 領域の獲得に失敗しました。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Manager を再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取したあと、技 術員に連絡してください。 MPACT_NOTDLL: アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イベン ト監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT: 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してください。 保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守情報の収 集方法”を参照してください。 - 69 - API格納場所 “アクション管理のAPI”を参照してください。 使用例 アクション状態通知APIの使用例を以下に示します。 #include "f3crhxac.h" long handle = 1 ; MpActionInfo *pInfo = NULL ; int nInfo = 0 ; long lrc; // 状態を獲得するアクションの管理番号 // 情報の領域のアドレス設定域 lrc = Mp_GetActionInfo(handle,&pInfo,&nInfo); if ( lrc != 0 ) { /* エラー処理 */ } /* アクション情報(pInfo)の参照 */ /* アクション情報域(pInfo)の解放 */ Mp_FreeActionInfo(pInfo,nInfo) ; 4.14 Mp_GetActionInfo2()関数 機能説明 指定されたアクションの現在の状態を通知します。 呼び出し形式 long Mp_GetActionInfo2(long handle,MpActionInfo2 **ActionInfo,int *nActionInfo) パラメタ handle: アクションの管理番号(アクション実行APIの復帰値)を指定します。 ActionInfo: アクション状態情報構造体(MpActionInfo2)を指定する領域のアドレスを指定します。 APIでアクション状態情報構造体が確保されます。本パラメタが指す領域にアクション状態情報構造体が設定されます。 アクション状態情報構造体は、アクション情報領域の解放API(Mp_FreeActionInfo2)で解放されます。 nActionInfo: アクションの数を格納する領域のアドレスを指定します。本パラメタが指定する領域に、アクション状態情報構造体の 配列数が設定されます。 構造体の説明 アクション状態情報構造体(MpActionInfo2)の形式 typedef struct MpActionInfo2_tag { long no ; long action ; char *exehost ; MpActionAddr *addr ; int naddr ; int status ; - 70 - int code ; } MpActionInfo2 ; no: アクションの管理番号が設定されます。 action: アクションの種類が設定されます。 ACTION_EMAIL: E-mailの送信です。 ACTION_MSMAIL: MS-mailの送信です。 ACTION_POPUP: ポップアップメッセージの送信です。 ACTION_PAGER: ショートメールの送信です。 ACTION_SOUND: サウンドの再生です。 exehost: アクションを実行するホスト名が設定されます。 addr: アクション実行先情報構造体(MpActionAddr)のアドレスを指定します。アクションの実行先のアドレス情報を格納しま す。 naddr: addrに設定したアドレス数が設定されます。 status: アクションの状態が設定されます。 STATUS_NORMAL: 正常終了しました。 STATUS_EXEC: 実行中です。 STATUS_EXEWAIT: 実行待ちです。 STATUS_ERROR: 異常終了しました。 STATUS_STOP: 一時停止中です。 code: 状態が異常終了の場合に設定します。 なお、詳細コードについては、後述の“詳細コード”を参照してください。 アクション実行先情報構造体(MpActionAddr)の形式 typedef struct MpActionAddr_tag { unsigned char *name ; - 71 - char *address ; } MpActionAddr ; name: アクション実行APIで、あて先名を指定した場合は、指定されたあて先名のアドレスが設定されます。アドレスを指定 した場合は、NULLが設定されます。 address: 送信先(アドレス)のアドレスが設定されます。 メールの場合: メールアドレスが設定されます。 ポップアップメッセージの場合: ユーザ名、またはコンピュータ名が設定されます。 ショートメールの場合: 送信先の電話番号が設定されます。 詳細コード アクション状態通知API(Mp_GetActionInfo2)内で、獲得されたアクションの状態について記述します。 詳細コード 意味 MPACT_D_NOMEMORY アクション実行中にメモリ不足が発生した MPACT_D_FILEACCESS アクション実行中にファイル操作でエラーが発生した MPACT_D_NOFILE 指定されたファイルが存在しない MPACT_D_DEFFILE アクション実行環境が定義されていない MPACT_D_FAIL 何かの理由でアクション実行に失敗した MPACT_D_NOTMOVE アクション実行サーバが起動されていない MPACT_D_NOHOST 指定されたアクション実行ホストが存在しない MPACT_D_SENDFAIL メッセージの送信に失敗した MPACT_D_NOTSERVER SMTPサーバが見つからない MPACT_D_NOTMYHOST 自ホスト名が獲得できない MPACT_D_SMTPCOMMAND SMTPサーバでの処理でエラーが発生した MPACT_D_SMTPCOMM SMTPサーバとの通信でエラーが発生した MPACT_D_NOTCONNECT SMTPサーバと接続できない MPACT_D_FROMADDR 送信元アドレスが指定されていない MPACT_D_SIGNIN サインインに失敗した MPACT_D_NOSEND メール送信処理で失敗した MPACT_D_COMMOPEN COMポート(モデム)のオープンに失敗した MPACT_D_COMMFAIL COMポート(モデム)の入出力でエラーが発生した MPACT_D_INITCOMM COMポート(モデム)の設定に失敗した MPACT_D_LINEBUSY 通話中のため、送信できなかった MPACT_D_LINEFAIL 電話回線の異常のため、送信できなかった MPACT_D_CONVERTFAIL メッセージの変換処理に失敗した MPACT_D_NOTSOUND 音声再生用の環境が設定されていない アクション すべて ポップアップ E-mail - 72 - MS-mail ショートメール 音声通知 詳細コード 意味 MPACT_D_NOTDEVICE ほかのアプリケーションが音声再生用のドライバを使 用中 MPACT_D_CREATESOUND 音声再生処理に失敗した アクション 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_FreeActionInfo2()関数 復帰値 0: 正常に情報を獲得しました。 MPACT_NOTACTION: 指定されたアクションは存在しません(すでに終了しています)。 対処は不要です。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかどうかを確認してください。 MPACT_ALLOCFAIL: 領域の獲得に失敗しました。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Manager を再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取したあと、技 術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イベン ト監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 - 73 - 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してください。 保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守情報の収 集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 使用例 アクション状態通知APIの使用例を以下に示します。 #include "f3crhxac.h" long handle = 1 ; // 状態を獲得するアクションの管理番号 MpActionInfo2 *pInfo = NULL ; // 情報の領域のアドレス設定域 int nInfo = 0 ; long lrc; lrc = Mp_GetActionInfo2(handle,&pInfo,&nInfo); if ( lrc != 0 ) { /* エラー処理 */ } /* アクション情報(pInfo)の参照 */ /* アクション情報域(pInfo)の解放 */ Mp_FreeActionInfo2(pInfo,nInfo) ; 4.15 Mp_GetEventMap()関数【Windows版】 機能説明 Mp_ReadEvent()発行後にイベントの受信が完了し、Mp_GetEventMap()関数を呼び出すことにより、イベントのデータ を取り出します。 呼び出し形式 #include <mp_opmgr_api.h> int Mp_GetEventMap( buf,hisnum,status,category,timerec,logtime, nodename,NodeID,DatabaseID,folder,application, dealer,eventtext,level,evttype,jobnum,memo, chgstime,chgetime,IPaddr,reserve,rddatatyp ); char long DWORD char time_t time_t char DWORD DWORD char char *buf; *hisnum; /* /* /* *status; /* /* *category; /* /* *timerec; /* /* *logtime; /* /* *nodename; /* /* *NodeID; /* *DatabaseID; /* *folder; /* /* *application; /* データを指定する 監視イベント番号格納領域のアドレ スを指定する イベントの状態格納領域のアドレス を指定する 監視イベントの種別格納領域のアド レスを指定する イベントの発生日時格納領域のアド レスを指定する イベントのロギング日時格納領域の アドレスを指定する ノード名格納領域のアドレスを指定 する リザーブ領域 リザーブ領域 フォルダ名格納領域のアドレスを指 定する 表示名格納領域のアドレスを指定す - 74 - */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ char *dealer; char *eventtext; DWORD *level; DWORD *evttype; char *jobnum; char time_t *memo; *chgstime; time_t *chgetime; unsigned int *IPaddr; unsigned char *reserve; DWORD *rddatatyp; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* る 対応者格納領域のアドレスを指定す る イベントテキスト格納領域のアドレ スを指定する イベントの重要度レベル格納領域の アドレスを指定する イベントの属性格納領域のアドレス を指定する ジョブ番号格納領域のアドレスを指 定する メモ格納領域のアドレスを指定する イベントの対処開始日時格納領域の アドレスを指定する イベントの対処終了日時格納領域の アドレスを指定する IPアドレス格納領域のアドレスを指 定する 予約格納領域のアドレスを指定する イベントデータの種類格納領域のア ドレスを指定する */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ パラメタ buf: Mp_ReadEvent()で指定したバッファを指定します。 hisnum: 監視イベントの発生順序を示す、監視イベント番号が格納されます。 status: 監視イベントに対する対処の状況が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NOFIXEVT: 監視イベントの状態は“未対処”または“未確認”。 MPOP_RE_DEFEVT: 監視イベントの状態は“保留”。 MPOP_RE_UINVEVT: 監視イベントの状態は“調査中”。 MPOP_RE_FIXEVT: 監視イベントの状態は“対処済”。 MPOP_RE_REPEVT: 監視イベントの状態は“返答済”。 category: 発生した監視イベントの種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 timerec: 被監視システムで、イベントが発生した日時が格納されます。 ただし、日時が正しく獲得できなかった場合は、以下のように値が設定されています。 日付、時刻が獲得できない/項目がない場合: 0x00FFFFFF - 75 - 日付だけ獲得できない場合: 0x00hhmmss hh: 時(0x00~0x17) mm: 分(0x00~0x3B) ss: 秒(0x00~ox3B) logtime: イベントをロギングした日時が格納されます。 システム監視エージェントサービスが、メッセージをメッセージログファイルに格納した時間です。 nodename: 監視イベントが発生したシステムの、ノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 folder: 監視イベントが発生したシステムのフォルダ名が格納されます。 MPOP_FOLDERLENバイト分呼び出し元で準備します。 Application: 監視イベントが発生したシステムの表示名が格納されます。 MPOP_APPLICATIONLENバイト分呼び出し元で準備します。 dealer: 監視イベントに対応した人の名前が格納されます。 MPOP_DEALERLENバイト分呼び出し元で準備します。 eventtext: 発生したイベントテキストが格納されます。 MPOP_EVENTLENバイト分呼び出し元で準備します。 level: 監視イベントの重要度レベルが格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_SPEMG: 最重要 MPOP_RE_EMG: 重要 MPOP_RE_WARN: 警告 MPOP_RE_NOTICE: 通知 evttype: 監視イベントの属性が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NORMTYP: 監視イベントの属性は“一般”。 - 76 - MPOP_RE_REPLYTYP: 監視イベントの属性は“返答要求”。 MPOP_RE_SPCLTYP: 監視イベントの属性は“高輝度”。 jobnum: 監視イベントに対するジョブ番号が格納されます。 MPOP_JOBNUMLENバイト分呼び出し元で準備します。 memo: 監視イベントに対するユーザメモが格納されます。 MPOP_MEMOLENバイト分呼び出し元で準備します。 chgstime: 監視システムでイベントの対処を開始した日時が格納されます。 chgetime: 監視システムでイベントの対処を終了した日時が格納されます。 IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ reserve: 1バイトの予約域です。 rddatatyp: 読み出したイベントデータの種類が格納されます。 このパラメタには、以下の値のどちらかが格納されます。 MPOP_GEM_MONITOR: Systemwalker Centric Managerに通知された監視イベントのデータが読み出された。 MPOP_GEM_CHSTATUS: 状態が変更された監視イベントのデータが読み出された。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEvent()関数 ・ Mp_ReadEvent()関数 - 77 - ・ Mp_CloseEvent()関数 復帰値 0: 正常終了。 -1: 異常終了。詳細なエラーコードは、GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 API格納場所 “監視イベントのAPI”を参照してください。 注意事項 監視イベントに対して、何らかの状態変更(調査中やキャンセルなど)をすると、状態(status)の異なる、同じイベントが複数 読み出されます。これらの状態変更により発生するイベントは、APIでは取得できますが、Systemwalkerコンソールの監 視イベント一覧には出力されません。Systemwalkerコンソール上のイベントと一致させるためには、取り出したイベントの “rddatatyp”を判定し、“MPOP_GEM_MONITOR”であるイベントのみ出力するといったロジックを組み込んでください。 動作環境による差異 運用管理サーバだけで使用可能です。 4.16 Mp_GetMsgMap()関数【Windows版】 機能説明 Mp_ReadMsg()関数発行後にメッセージの受信が完了し、Mp_GetMsgMap()関数を呼び出すことにより、メッセージの データを取り出します。 呼び出し形式 #include <mp_opagt_api.h> BOOL Mp_GetMsgMap( fp,buf,hostxflg,level,time1,node,NodeID,DatabaseID, time2,category,msgtext,blkno,msgtype,ostype, submsgnum,voicenum,msgcolor,backcolor,domtype, domnum,replyid,systype,ext ); HANDLE fp; void *buf; unsigned char *hostxflg; short *level; time_t *time1; char *node; DWORD *NodeID; DWORD *DatabaseID; time_t *time2; char *category; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* Mp_OpenMsg()で獲得したハンドル を指定する Mp_ReadMsg()で指定したバッファ を指定する 強制表示フラグ メッセージの重要度格納領域のア ドレスを指定する 1:最重要 2:重要 3:一般 4:警告5:通知 メッセージが自システムに通知さ れた日時格納領域のアドレスを指 定する メッセージが出力されたシステム 名格納領域のアドレスを指定する リザーブ領域 リザーブ領域 メッセージが出力された日時格納 領域のアドレスを指定する メッセージの種別格納領域のアド - 78 - */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ char *msgtext; unsigned short *blkno; unsigned short *msgtype; unsigned short *ostype; unsigned short*submsgnum; unsigned short *voicenum; unsigned char *msgcolor; unsigned char *backcolor; unsigned short *domtype; long *domnum; char *replyid; unsigned char *systype; EXTENDDATA *ext; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* レスを指定する メッセージ格納領域のアドレスを 指定する メッセージのブロック番号格納領 域のアドレスを指定する メッセージ種別格納領域のアドレ スを指定する OS種別格納領域のアドレスを指定 する 補助説明文番号格納領域のアドレ スを指定する 音声番号格納領域のアドレスを指 定する 文字色格納領域のアドレスを指定 する 背景色格納領域のアドレスを指定 する DOM種別格納領域のアドレスを指定 する DOM番号格納領域のアドレスを指定 する 返答識別子格納領域のアドレスを 指定する 系区別格納領域のアドレスを指定 する 拡張データ格納領域のアドレスを 指定する */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ パラメタ fp: Mp_OpenMsg()で獲得したハンドルを指定します。 buf: Mp_ReadMsg()で指定したバッファを指定します。 hostxflg: リザーブ領域。Charの領域を作成し、そのアドレスを指定してください。 level: 発生したメッセージの重要度レベルが格納されます。 MPOP_RE_SPEMG: 最重要 MPOP_RE_EMG: 重要 MPOP_RE_WARN: 警告 MPOP_RE_NOTICE: 通知 MPOP_RE_MSG: 一般 な お 、 メ ッ セ ー ジ 種 別 (msgtype) が 、 OP_APIMSGTYPESTAT, OP_APIMSGTYPECHNGのときは、必ずMPOP_RE_MSGが格納されます。 - 79 - OP_APIMSGTYPESTOP, time1: システム監視エージェントサービスが、メッセージログファイルに格納した日時が格納されます。 Mp_OpenMsg()直後に通知されるメッセージには、以下の値が格納されます。 システム監視エージェント起動メッセージには、システム監視エージェントが、Mp_ReadMsg()に通知した日時が格 納されます。 ただし、日時が正しく獲得できなかった場合は、0x00FFFFFFが設定されます。 node: メッセージが発生したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 time2: nodeで示されたシステムで、メッセージが出力された日時が格納されます。 ただし、日時が正しく獲得できなかった場合は、以下のように値が設定されます。 日付、時刻が獲得できない/項目がない場合: 0x00FFFFFF 日付だけ獲得できない場合: 0x00hhmmss hh: 時(0x00~0x17) mm: 分(0x00~0x3B) ss: 秒(0x00~ox3B) category: 発生したメッセージの監視イベント種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 msgtext: 発生したメッセージテキストが格納されます。 2048バイト分呼び出し元で準備します。メッセージ長が2047バイトを超える場合は、2047バイト以降は破棄されます。 blkno: マルチラインメッセージのように、複数のメッセージで意味を持つ場合に、複数メッセージをブロック化するための番 号が格納されます。 単一メッセージの場合は、OP_ONLYBLK(0x0000)が格納され、マルチラインメッセージの場合は、0x0001~0xFFFF が格納されます。 ブロックの最後のメッセージには、必ずOP_MLTBLK_END(0xFFFF)が格納されます。 msgtype: 発生したメッセージのメッセージ種別が格納されます。メッセージ種別を以下に示します。 OP_APIMSGTYPENORM: 通常メッセージ OP_APIMSGTYPEREP: 返答要求メッセージ OP_APIMSGTYPEHB: 高輝度メッセージ OP_APIMSGTYPEDEL: メッセージ削除データ(以下、DOMデータという) - 80 - OP_APIMSGTYPESTAT: システム監視エージェントサービス起動メッセージ OP_APIMSGTYPESTOP: システム監視エージェントサービス停止メッセージ OP_APIMSGTYPECHNG: システム状態変更メッセージ ostype: 発生したメッセージのOS種別が格納されます。 OS種別を以下に示します。 OP_UXPDS : UXP/DS OP_SOLARIS1 : Solaris1.x系 OP_SOLARIS2 : Solaris2.x系 OP_HPUX10: HP-UX OP_AIX : AIX OP_MVS : MVS OP_LINUX : Linux OP_UXPM : UXP/M OP_UXPVPP : UXP/VPP OP_WINDOWS2000: Windows(R) 2000 OP_WINDOWSNT : Windows NT(R) OP_WINNTSERVER: Windows NT(R) Server OP_WINNTWS: Windows NT(R) Workstation OP_WINDOWS31 : Microsoft(R) Windows(R) 3.1, Microsoft(R) Windows(R) 3.11, Microsoft(R) Windows(R) for Workgroups 3.11 OP_WINDOWS95 : Windows(R) 95 - 81 - OP_WINDOWS98 : Windows(R) 98 OP_WINDOWSXP: Windows(R) XP OP_SXO : SXO OP_SYMFOWAREPS : Symfoware(R) Parallel Server OP_RAID : RAID OP_MSPE20 : MSP E20 OP_MSPAF2 : MSP AFII OP_XSPAF2 : XSP AFII OP_AVMEX : AVM/EX OP_FTOPS2 : SVPM(FTOPS-II) OP_MVSG : MVS 系(IBMおよび他社互換機) OP_MSERV : ホスト連携オプション OP_ASP : ASP OP_WINDOWSSV2003 : Windows Server(R) 2003 OP_WINDOWSVISTA: Windows Vista(R) OP_WINDOWSSV2008: Windows Server(R) 2008 OP_WINDOWS7: Windows(R) 7 OP_WINDOWS2012: Windows Server (R) 2012 OP_WINDOWS8: Windows (R) 8 (Windows (R) 8.1以外) OP_WINDOWS81: Windows (R) 8.1 - 82 - OP_WINDOWS8RT: Windows (R) RT OP_OS_UNKNOWN : 不明 submsgnum: GEEおよびUNIX版集中監視マネージャのGS連携オプションが使用する、メッセージの補助説明文の番号が格納さ れます。 この値は、GEEおよびGS連携オプション以外では使用しません(Windowsでは無効)。 voicenum: UNIX版集中監視マネージャで音声を出力する場合の、音声に対する番号が格納されます。 音声出力機能は未サポートです(Windowsでは無効)。 msgcolor: [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの文字の色が格納されます。 文字色の種類を以下に示します。 OP_COLOR_BLACK : 黒色 OP_COLOR_WHITE : 白色 OP_COLOR_RED : 赤色 OP_COLOR_GREEN : 緑色 OP_COLOR_BLUE : 青色 OP_COLOR_YELLOW : 黄色 OP_COLOR_LIGHTBLUE : 明青色 OP_COLOR_PURPLE : 紫色 OP_COLOR_DARKGRAY : 濃い灰色 OP_COLOR_ORANGE : 黄緑色 OP_COLOR_SKYBLUE : 空色 OP_COLOR_PINK : 桃色 OP_COLOR_PALEGREEN : 青緑色 - 83 - OP_COLOR_BROWN : 茶色 OP_COLOR_GRAY : 淡い灰色 OP_COLOR_CREAM : 黄土色 OP_COLOR_DEF : メッセージ属性に応じた初期設定色 backcolor: [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの背景色が格納されます。 文字色の種類は、msgcolorと同じです。 domtype: 返答要求メッセージ、および高輝度メッセージの種類が格納されます。 これは、返答要求メッセージ、高輝度メッセージ、およびDOM対応メッセージとDOMデータとの対応をとるために使 用します。 DOM種別を以下に示します。 OP_NORMDOM : 返答要求メッセージおよび高輝度メッセージ以外。 OP_NIPDOM : NIPDOM。MSPのNIP時のメッセージ、およびDOMデータです(Windowsでは無効)。 OP_MSPDOM : MSPDOM。MSPの通常時のメッセージ、およびDOMデータです(Windowsでは無効)。 OP_XSPDOM : XSPのNIP時以外の返答要求メッセージ、高輝度メッセージ、およびDOMデータです(Windowsでは無効)。 OP_WORKITDOM : WORKITDOM。BS*NET/WORKITが通知する返答要求メッセージ、およびDOMデータです。 OP_ASPDOM: ASPが通知する返答要求メッセージ、高輝度メッセージ、およびDOMデータです。 OP_APLDOM: Systemwalker Centric Managerアプリケーションが通知するDOM対応メッセージ、およびDOMデータです。 OP_GENERALDOM: 一般のアプリケーションが通知するDOM対応メッセージ、およびDOMデータです。 domnum: 返答要求メッセージ、および高輝度メッセージの場合に、メッセージとDOMデータとの対応をとるための番号が格納 されます。 この番号は、メッセージ発生システム内でDOM種別ごとに一意です。 replyid: 返答要求メッセージに対してコマンドで返答するときの、メッセージを識別する文字列が格納されます。 9バイト分呼び出し元で準備します。 systype: ホットスタンバイシステムの場合に、メッセージが発生した時点での運用系、待機系の区別が格納されます。 運用系および待機系の区別を以下に示します。 - 84 - OP_SYSTYPE_NORM: ホットスタンバイシステムではない。 または、ホットスタンバイシステムですが、運用系、待機系がまだ決定していない。 OP_SYSTYPE_MAIN: ホットスタンバイシステムの運用系です。 OP_SYSTYPE_SUB: ホットスタンバイシステムの待機系です。 OP_SYSTYPE_WP: Windows NT(R) のマイクロソフトクラスタシステムの運用。 ext: 発生したメッセージの拡張データが格納されます。 構造体の説明 拡張データ(EXTENDDATA)の形式 /* * EXTEND DATA */ typedef struct _EXTENDDATA { char runtype[MPOP_RUNTYPELEN]; unsigned char mailmsgflg; char rsv1[2]; DWORD DatabaseID; unsigned int IPaddr; DWORD DMInstallType; DWORD JMInstallType; DWORD MW_DM_vl; char MW_DM_suffix[MPOP_SUFFIXLEN]; char MW_DM_updatenum[MPOP_UPDATENUMLEN]; DWORD MW_JM_vl; char MW_JM_suffix[MPOP_SUFFIXLEN]; char MW_JM_updatenum[MPOP_UPDATENUMLEN]; unsigned char auttrbtkt; char domkey[MPOP_DOMKEYLEN]; } EXTENDDATA; runtype: メッセージが発生したシステムの運用形態名が格納されます。 mailmsgflg: 発生したメッセージのメール連携フラグが格納されます。 OP_NOMAILMSG: メール連携機能を使用していないメッセージです。 OP_MAILMSG: メール連携機能により通知されたメッセージです。 domkey: DOM拡張キーが格納されます。 DOM拡張キーがない場合は、NULLが設定されます。 DatabaseID: リザーブ領域。 - 85 - IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ DMInstallType: メッセージが発生したシステムのSystemwalker Centric Managerのインストールタイプが格納されます。 JMInstallType: メッセージが発生したシステムのSystemwalker Operation Managerのインストールタイプが格納されます。 MW_DM_vl: メッセージが発生したシステムのSystemwalker Centric Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。 0x00000000 ←→←→←→ a) b) c) a) メジャーバージョン b) マイナーバージョン c) メジャーレベル MW_DM_suffix: メッセージが発生したシステムのSystemwalker Centric Managerのサフィックスが格納されます。 MW_DM_updatenum: メッセージが発生したシステムのSystemwalker Centric Managerのアップデートパック修正番号が格納されます。 MW_JM_vl: メッセージが発生したシステムのSystemwalker Operation Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。 形式は、MW_DM_vlと同様です。 MW_JM_suffix: メッセージが発生したシステムのSystemwalker Operation Managerのサフィックスが格納されます。 MW_JM_updatenum: メッセージが発生したシステムのSystemwalker Operation Managerのアップデートパック修正番号が格納されます。 Auttrbtkt: リザーブ領域。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 - 86 - 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenMsg()関数 ・ Mp_ReadMsg()関数 ・ Mp_CloseMsg()関数 復帰値 TRUE: 正常終了。メッセージを正常に受信。 FALSE: 異常終了。詳細なエラーコードは、GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 API格納場所 “監視メッセージのAPI”を参照してください。 注意事項 拡張データの各メンバの値は、SystemWalker/CentricMGR V4.0L10以前のシステムで発生したメッセージには設定され ません。 IPv6通信を行って通知されたメッセージについては、メッセージ発生元システムのIPアドレスを取得することはできませ ん。 動作環境による差異 以下のインストール種別で使用可能です。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7 ・ クライアント Windows Vista(R)/Windows(R) 7 4.17 Mp_GetNodeIFTraffic()関数 機能説明 指定したノードのインタフェースのトラフィック情報を獲得します。 呼び出し形式 int Mp_GetNodeIFTraffic( char *lpNode, unsigned long dwIfIndex, LPMP_TRFIF_INF lpMpTrfIfInf ) ; パラメタ lpNode: ノード名を表す文字列へのポインタ。 - 87 - dwIfIndex: インタフェース番号。 そのノードが持つ、インタフェースの番号を1以上で指定します。 lpMpTrfIfInf: インタフェース別トラフィック情報格納構造体へのポインタ。 呼び出し側で用意した構造体の先頭ポインタを渡します。 復帰値 0: 正常終了。 -1: 異常終了。 詳細なエラーコードは、errnoを参照してください。 通知されるエラーコードは以下のとおりです。 F3CRTINF_WARN_DEFFECTIVE: 関数の引数が不当です。 F3CRTINF_ERROR_INSUFFCIENT_BUFFER: 領域不足が発生しました。 F3CRTINF_ERROR_ENVIRONMENT: 動作環境が不当です。 F3CRTINF_ERROR_INERROR: 内部エラーが発生しました。 F3CRTINF_ERROR_CONFIGURATION: 構成情報の取得に失敗しました。 F3CRTINF_ERROR_COMMUNICATION: 性能監視エージェントとの通信に失敗しました。 F3CRTINF_ERROR_HISTORY: 性能監視エージェントで異常が発生しました。 備考 ・ Mp_GetNodeIFTraffic()関数は、指定したノードが持つ、インタフェースの最新のトラフィック情報を獲得し、呼び出 し側で用意したMP_TRFIF_INF構造体に代入します。 ・ dwIfIndexでは、必ず1以上の値を設定してください。 なお、指定した番号のインタフェースが存在しない場合は、-1を返します。 ・ トラフィック情報が獲得できなかった場合は、MP_TRFIF_INF内の該当するフィールドにMP_TRF_INF_INGが設定 されます。 4.18 Mp_GetRemoteCmdMap()関数【Windows版】 機能説明 Mp_RespRemoteCmd()関数発行後にコマンド実行結果の受信が完了し、Mp_GetRemoteCmdMap()関数を呼び出す ことにより、コマンド実行結果のデータを取り出します。 - 88 - 呼び出し形式 #include <mp_opagt_api.h> BOOL Mp_GetRemoteCmdMap( fp,buf,id,status,resp,node,NodeID, DatabaseID ); HANDLE fp; /* Mp_OpenRemoteCmd()で獲得したハンドルを指定 /* する void *buf; /* Mp_RespRemoteCmd()で指定したバッファを指定 /* する int *id; /* コマンド要求に対応する識別子の格納領域のア /* ドレスを指定する int *status; /* 応答ステータスの格納領域のアドレスを指定す /* る char *resp; /* コマンドの実行結果、詳細コードの格納領域の /* アドレスを指定する char *node; /* コマンドを応答したシステムのノード名の格納 /* 領域のアドレスを指定する DWORD *NodeID; /* NULLを指定する DWORD *DatabaseID; /* NULLを指定する */ */ */ */ */ */ */ */ */ */ */ */ */ */ パラメタ fp: Mp_OpenRemoteCmd()で獲得したハンドルを指定します。 buf: Mp_RespRemoteCmd()で指定したバッファを指定します。 id: Mp_ExecRemoteCmd()の復帰コードに対応する識別子が格納されます。これにより、どのコマンド要求に対するコマ ンド応答かを識別できます。 status: statusは、コマンド応答の種別です。応答ステータスを、以下に示します。どちらかの値が格納されます。 - コマンド結果応答 STATUS_OUT: 標準出力に出力されたコマンドの結果です。 STATUS_ERR: 標準エラー出力に出力されたコマンドの結果です。 - コマンド最終応答 STATUS_END: コマンド応答が正常に終了しました(復帰コードあり)。 STATUS_AED: コマンド応答が終了しました(異常終了等)。 resp: statusがコマンド結果応答の場合、実行されたコマンドの出力結果が格納されます。2048バイト分呼び出し元で準備 します。statusがコマンド最終応答の場合、先頭4バイトにコマンドの詳細コードが格納されます。 応答ステータスがSTATUS_ENDの場合、respの内容を以下に示します。 0 1 2 3 4(バイト) +--------+--------+--------+--------+ |sig |code |rsv |rsv | +--------+--------+--------+--------+ - 89 - sig: NTにコマンドを発行した場合は0です。 UNIXにコマンドを発行した場合、コマンドがシグナルを受信して終了した場合0でない値が復帰します。詳しく は、wait関数のマニュアルを参照してください。 code: コマンドの終了コードが格納されます。 ただし、正確な値が格納されるのは0-255までです。 rsv: 予約域です。 備考) ホストバイトオーダで記述しています。 応答ステータスがSTATUS_AEDの場合、respの先頭4バイトにintで、以下に示す詳細コードが設定されます。 OP_RSPINFO_ABE: コマンド実行中にシステムが停止しました。 OP_RSPINFO_NDE: 要求されたシステムが停止しています。 OP_RSPINFO_EXECERR: 資源不足等でコマンドの実行に失敗しました。 OP_RSPINFO_RSPERR: コマンドは実行しましたが、その結果の獲得に失敗しました。 OP_RSPINFO_TPH: 通信パスに異常が発生しました。 OP_RSPINFO_LEN: コマンド実行結果のテキストが長すぎて処理できません。 OP_RSPINFO_CEK: ハードウェアが保守中のため、コマンドを投入できません。 OP_RSPINFO_LOC: キーボードロック中で、コマンドを投入できません。 OP_RSPINFO_PAR: 内部論理エラーが発生しました。 OP_RSPINFO_AOT: タイムアウトが発生しました。 OP_RSPINFO_EXC: コマンドの送信に失敗しました。 OP_RSPINFO_SDW: FTOPSII(SYSCOM)がスローダウンしました。 OP_RSPINFO_RST: アテンションリセット中断が発生しました。 OP_RSPINFO_LOWERLEVEL: 機能レベルが低いために、コマンドを投入できません。 - 90 - OP_RSPINFO_FTOPS2: FTOPSIIへのコマンド投入は不可能です。 OP_RSPINFO_END: コマンド応答が正常に終了しました(復帰コードなし)。 OP_RSPINFO_NOANSPART: 下位システムのシステム監視エージェントサービスが停止しているために、コマンドを投入できません。 OP_RSPINFO_NOANSRAS: 下位システムのシステム監視エージェントサービスが停止している、またはRASによる接続処理が行われていな いため、コマンドを投入できません。 OP_RSPINFO_NOHST: 下位システムのIPアドレスが未定義のために、コマンドを投入できません。 OP_RSPINFO_CONREQ: 下位システムに対して接続依頼中のために、コマンドを投入できません。 node: コマンドを応答したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必要 です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 復帰値 TRUE: 正常終了。コマンド実行結果を正常に受信。 FALSE: 異常終了。詳細なエラーコードは、GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.19 Mp_OpenEvent()関数 機能説明 Mp_OpenEvent()関数を発行することにより、監視イベントの通知を要求します。 呼び出し形式 【Windows版】 - 91 - #include <mp_opmgr_api.h> HANDLE Mp_OpenEvent(void); 【UNIX版】 #include <mp_opmgr_api.h> int Mp_OpenEvent(void); 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_ReadEvent()関数 ・ Mp_GetEventMap()関数【Windows版】 ・ Mp_CloseEvent()関数 復帰値 -1以外: 正常終了。監視イベントを読み出すためのハンドル。 -1: 異常終了。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoにはシステムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 - 92 - 4.20 Mp_OpenEventLog()関数 機能説明 Mp_OpenEventLog()関数を発行することにより、ロギングされた過去の監視イベントの読み出しを要求します。 呼び出し形式 【Windows(64bit)版で64ビットのアプリケーションを作成する場合】 #include <mp_opmgr_api.h> HANDLE Mp_OpenEventLog( rdmode, strhisnum, endhisnum, nodename,NodeID, DatabaseID, category, status,level, evttype ); DWORD long long char DWORD DWORD char DWORD DWORD DWORD rdmode; strhisnum; /* /* /* endhisnum; /* /* *nodename; /* NodeID; /* DatabaseID; /* *category; /* status; /* level; /* /* evttype; /* 監視イベントの読み出し方向を指定する*/ 読み出し開始監視イベント番号を指定 */ する */ 読み出し終了監視イベント番号を指定 */ する */ 読み出しイベントのノード名を指定する*/ リザーブ領域 */ リザーブ領域 */ 読み出しイベントの種別を指定する */ 読み出しイベントの状態指定する */ 読み出しイベントの重要度レベルを指定*/ する */ 読み出しイベントの属性を指定する */ 【Windows(64bit)版で以外のWindows版】 #include <mp_opmgr_api.h> int Mp_OpenEventLog( rdmode, strhisnum, endhisnum, nodename, NodeID, DatabaseID, category, status, level, evttype ); DWORD long long char DWORD DWORD char DWORD DWORD DWORD rdmode; strhisnum; /* /* /* endhisnum; /* /* *nodename; /* NodeID; /* DatabaseID; /* *category; /* status; /* level; /* /* evttype; /* 監視イベントの読み出し方向を指定する*/ 読み出し開始監視イベント番号を指定 */ する */ 読み出し終了監視イベント番号を指定 */ する */ 読み出しイベントのノード名を指定する*/ リザーブ領域 */ リザーブ領域 */ 読み出しイベントの種別を指定する */ 読み出しイベントの状態指定する */ 読み出しイベントの重要度レベルを指定*/ する */ 読み出しイベントの属性を指定する */ 【Linux for Intel64版以外のUNIX版】 #include <mp_opmgr_api.h> int Mp_OpenEventLog( rdmode, strhisnum, endhisnum, nodename, NodeID, DatabaseID, category, status, level, evttype ); unsigned long rdmode; /* 監視イベントの読み出し方向を指定する*/ long strhisnum; /* 読み出し開始監視イベント番号を指定 */ /* する */ long endhisnum; /* 読み出し終了監視イベント番号を指定 */ /* する */ char *nodename; /* 読み出しイベントのノード名を指定する*/ - 93 - unsigned unsigned char unsigned unsigned long NodeID; /* リザーブ領域 */ long DatabaseID; /* リザーブ領域 */ *category; /* 読み出しイベントの種別を指定する */ long status; /* 読み出しイベントの状態指定する */ long level; /* 読み出しイベントの重要度レベルを指定*/ /* する */ unsigned long evttype; /* 読み出しイベントの属性を指定する */ 【Linux for Intel64版】 #include <mp_opmgr_api.h> long Mp_OpenEventLog( rdmode, strhisnum, endhisnum, nodename, NodeID, DatabaseID, category, status, level, evttype ); unsigned long rdmode; /* 監視イベントの読み出し方向を指定する*/ long strhisnum; /* 読み出し開始監視イベント番号を指定 */ /* する */ long endhisnum; /* 読み出し終了監視イベント番号を指定 */ /* する */ char *nodename; /* 読み出しイベントのノード名を指定する*/ unsigned long NodeID; /* リザーブ領域 */ unsigned long DatabaseID; /* リザーブ領域 */ char *category; /* 読み出しイベントの種別を指定する */ unsigned long status; /* 読み出しイベントの状態指定する */ unsigned long level; /* 読み出しイベントの重要度レベルを指定*/ /* する */ unsigned long evttype; /* 読み出しイベントの属性を指定する */ パラメタ rdmode: ロギングされた過去の監視イベントの読み出す方向を指定します。 このパラメタには、以下のモードフラグのどれかを指定します。 MPOP_OEL_NEWEVT: ロギングされた最新の監視イベントから古いイベントへと読み出します。 MPOP_OEL_OLDEVT: ロギングされた最古の監視イベントから新しいイベントへと読み出します。 strhisnum: ロギングされた過去の監視イベントの読み出し開始監視イベント番号を指定します。監視イベント番号は、2,147,483,647 以下の値です。 ロギングされている最古の監視イベント(rdmodeでMPOP_OEL_NEWEVTを指定した場合は、最新のイベント)から 読み出す場合は、0を指定します。 endhisnum: ロギングされた過去の監視イベントの読み出し終了監視イベント番号を指定します。監視イベント番号は、2,147,483,647 以下の値です。 ロギングされている最新の監視イベント(rdmodeでMPOP_OEL_NEWEVTを指定した場合は、最古のイベント)まで 読み出す場合は、0を指定します。 nodename: 読み出す監視イベントのノード名を128バイト以内で指定します。 ロギングされているすべてのシステムの監視イベントを読み出す場合には、MPOP_OEL_ALLNODENMを指定しま す。 - 94 - category: 読み出す監視イベントの種別を、以下の範囲で指定します。 なお、ロギングされているすべての種別の監視イベントを読み出す場合には、MPOP_OEL_ALLCATEGを指定しま す。 【Windows】 16バイト以内で指定します。 【UNIX】 システムのデフォルトロケールがUTF-8の場合は32バイト以内で、それ以外の場合は16バイト以内で指定します。 status: 読み出す監視イベントの状態を指定します。 このパラメタには、以下のフラグを任意に組み合わせて指定します。 MPOP_OEL_NOFIXEVT: “未対処”または“未確認”状態の監視イベントを読み出します。 MPOP_OEL_DEFEVT: “保留”状態の監視イベントを読み出します。 MPOP_OEL_FIXEVT: “対処済”状態の監視イベントを読み出します。 MPOP_OEL_REPEVT: “返答済”状態の監視イベントを読み出します。 MPOP_OEL_ALLEVT: ロギングされたすべての状態の監視イベントを読み出します。 level: 読み出す監視イベントの重要度レベルを指定します。 このパラメタに任意のフラグを任意に組み合わせて指定します。 MPOP_OEL_SPEMGLVL: 最重要 MPOP_OEL_EMGLVL: 重要 MPOP_OEL_WARNLVL: 警告 MPOP_RE_NOTICE: 通知 MPOP_OEL_ALLLVL: ロギングされたすべての重要度レベルの監視イベントを読み出します。 evttype: 読み出す監視イベントの属性を指定します。 このパラメタには、フラグを任意に組み合わせて指定します。 MPOP_OEL_NORMTYP: 属性が“一般”の監視イベントを読み出します。 MPOP_OEL_REPLYTYP: 監視イベントの属性は“返答要求” - 95 - MPOP_OEL_SPCLTYP: 監視イベントの属性は“高輝度” MPOP_OEL_ALLTYP: ロギングされたすべての属性の監視イベントを読み出します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_ReadEventLog()関数 ・ Mp_CloseEventLog()関数 復帰値 -1以外: 正常終了。監視イベントを読み出すためのファイル識別子。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoにはシステムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 4.21 Mp_OpenEventStat()関数 機能説明 Mp_OpenEventStat()関数を発行することにより、イベントの状態変更を要求します。 - 96 - 呼び出し形式 【Windows版】 #include <mp_opmgr_api.h> HANDLE Mp_OpenEventStat(void); 【UNIX版】 #include <mp_opmgr_api.h> int Mp_OpenEventStat(void); 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_ChangeEventStat()関数 ・ Mp_CloseEventStat()関数 復帰値 -1以外: 正常終了。監視イベントを読み出すためのファイル識別子。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoにはシステムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 動作環境による差異 運用管理サーバだけで使用可能です。 - 97 - 4.22 Mp_OpenMsg()関数 機能説明 Mp_OpenMsg()関数を発行することにより、メッセージの通知を要求します。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> HANDLE Mp_OpenMsg(node,NodeID,DatabaseID,mode); char *node; DWORD NodeID; DWORD DatabaseID; int mode; /* /* /* /* 読み出しメッセージのノード名を指定する*/ リザーブ領域 */ リザーブ領域 */ モードを指定する */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_OpenMsg(node,NodeID,DatabaseID,mode); char *node; /* /* unsigned long NodeID; /* unsigned long DatabaseID; /* int mode; /* 読み出しメッセージのノード名を指*/ 定する */ リザーブ領域 */ リザーブ領域 */ モードを指定する */ パラメタ node: 読み出すメッセージのノード名を128バイト以内で指定します。自システムで出力されたメッセージだけを要求する場 合には、OWNNODEを指定してください。 自システムにメッセージを通知しているすべてのシステムで出力されたメッセージを要求する場合には、ALLNODE を指定してください。 mode: メッセージを受信する際のモードを指定します。 必ず0を指定してください。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 - 98 - 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_ReadMsg()関数 ・ Mp_CloseMsg()関数 ・ Mp_GetMsgMap()関数【Windows版】 復帰値 -1以外: 正常終了。関数の復帰値はメッセージを読み出すためのハンドル、またはファイル記述子(Mp_ReadMsg()で使用)。 -1: 異常終了。 備考 マイナス復帰した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視メッセージのAPI”を参照してください。 動作環境による差異 以下のインストール種別で使用可能です。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7(注) ・ クライアント: Windows Vista(R)/Windows(R) 7(注) 注)システム監視エージェントインストール選択時 4.23 Mp_OpenMsgLog()関数 機能説明 Mp_OpenMsgLog()関数を発行することにより、ロギングされた過去のメッセージの読み出しを要求します。 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 - 99 - #include <mp_opagt_api.h> HANDLE Mp_OpenMsgLog( node, NodeID, DatabaseID, first, last ); char *node; DWORD NodeID; DWORD DatabaseID; time_t first; time_t last; /* /* /* /* /* /* /* 読み出しメッセージのノード名を指定する*/ リザーブ領域 */ リザーブ領域 */ 読み込みを開始するメッセージの通知時刻*/ を指定する */ 読み込みを終了するメッセージの通知時刻*/ を指定する */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_OpenMsgLog( node, NodeID, DatabaseID, first, last ); char *node; /* 読み出しメッセージのノード名を指定する*/ DWORD NodeID; /* リザーブ領域 */ DWORD DatabaseID; /* リザーブ領域 */ time_t first; /* 読み込みを開始するメッセージの通知時刻*/ /* を指定する */ time_t last; /* 読み込みを終了するメッセージの通知時刻*/ /* を指定する */ 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opagt_api.h> int Mp_OpenMsgLog( node, NodeID, DatabaseID, first, last ); char *node; /* /* unsigned long NodeID; /* unsigned long DatabaseID; /* time_t first; /* /* time_t last; /* /* 読み出しメッセージのノード名を 指定する リザーブ領域 リザーブ領域 読み込みを開始するメッセージの 通知時刻を指定する 読み込みを終了するメッセージの 通知時刻を指定する */ */ */ */ */ */ */ */ 【Linux for Intel64版】 #include <mp_opagt_api.h> long Mp_OpenMsgLog( node, NodeID, DatabaseID, first, last ); char *node; /* /* unsigned long NodeID; /* unsigned long DatabaseID; /* time_t first; /* /* time_t last; /* /* 読み出しメッセージのノード名を 指定する リザーブ領域 リザーブ領域 読み込みを開始するメッセージの 通知時刻を指定する 読み込みを終了するメッセージの 通知時刻を指定する */ */ */ */ */ */ */ */ パラメタ node: 読み出すメッセージのノード名を128バイト以内で指定します。 自システムで出力されたメッセージだけを要求する場合には、OWNNODEを指定してください。ロギングされている すべてのメッセージを要求する場合には、ALLNODEを指定してください。 first: 読み込みを開始するメッセージを指定します。メッセージがメッセージログに格納された日時(time_t型)で指定しま す。 - 100 - last: 読み込みを終了するメッセージを指定します。メッセージがメッセージログに格納された日時(time_t型)で指定しま す。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_ReadMsgLog()関数 ・ Mp_CloseMsgLog()関数 復帰値 0以外: 正常終了。メッセージを読み出すためのファイル識別子。 0: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視メッセージのAPI”を参照してください。 動作環境による差異 以下のインストール種別で使用可能です。 - 101 - ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7(注) ・ クライアント: Windows Vista(R)/Windows(R) 7(注) 注)システム監視エージェントインストール選択時 4.24 Mp_OpenRemoteCmd()関数 機能説明 リモートコマンドを発行します。Mp_OpenRemoteCmd()関数を発行し、エージェントサービスと接続を行います。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> HANDLE Mp_OpenRemoteCmd( conid ); int conid; 【UNIX版】 #include <mp_opagt_api.h> int Mp_OpenRemoteCmd( conid ); int conid; パラメタ conid: 0を指定してください。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必要 です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 - 102 - 復帰値 正の値: 正常終了。コマンド要求、コマンド応答のためのハンドル。 -1、0: 異常終了。異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.25 Mp_OpenRemoteCmdLog()関数 機能説明 Mp_OpenRemoteCmdLog()関数を発行することにより、ロギングされた過去のコマンドデータの読み出しを要求します。 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opagt_api.h> HANDLE Mp_OpenRemoteCmdLog( node, NodeID, DatabaseID, first, last ); char DWORD DWORD time_t *node; /* 読み出しコマンドデータのノード名を指定する NodeID; /* 0を指定する DatabaseID; /* 0を指定する first; /* 読み込みを開始するコマンドの通知時刻を指定 /* する time_t last; /* 読み込みを終了するコマンドの通知時刻を指定 /* する */ */ */ */ */ */ */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_OpenRemoteCmdLog( node, NodeID, DatabaseID, first, last ); char DWORD DWORD time_t *node; /* 読み出しコマンドデータのノード名を指定する NodeID; /* 0を指定する DatabaseID; /* 0を指定する first; /* 読み込みを開始するコマンドの通知時刻を指定 /* する time_t last; /* 読み込みを終了するコマンドの通知時刻を指定 /* する 【UNIX版(Linux for Intel64を除く)の場合】 #include <mp_opagt_api.h> int Mp_OpenRemoteCmdLog( node, rsv, first, last, files ); - 103 - */ */ */ */ */ */ */ char char time_t time_t char *node; /* /* *rsv; /* first; /* /* last; /* /* **files; /* 読み出しコマンドデータのノード名を指定 する リザーブ領域 NULLを指定する 読み込みを開始するコマンドの通知時刻を 指定する 読み込みを終了するコマンドの通知時刻を 指定する リザーブ領域 NULLを指定する */ */ */ */ */ */ */ */ 【Linux for Intel64】 #include <mp_opagt_api.h> long Mp_OpenRemoteCmdLog( node, rsv, first, last, files ); char char time_t time_t char *node; /* /* *rsv; /* first; /* /* last; /* /* **files; /* 読み出しコマンドデータのノード名を指定 する リザーブ領域 NULLを指定する 読み込みを開始するコマンドの通知時刻を 指定する 読み込みを終了するコマンドの通知時刻を 指定する リザーブ領域 NULLを指定する */ */ */ */ */ */ */ */ パラメタ node: 読み出すコマンドデータのノード名を128バイト以内で指定します。 自システムに関するコマンドデータ(自システムへのコマンド要求、および自システムからのコマンド応答)だけを要求 する場合には、OWNNODEを指定してください。 ロギングされているすべてのコマンドデータを要求する場合には、ALLNODEを指定してください。 first: 読み込みを開始するコマンドの通知時刻を指定します。(システム監視エージェントサービスが、コマンドログファイル に格納した日時を、time_t型で指定します。) last: 読み込みを終了するコマンドの通知時刻を指定します。(システム監視エージェントサービスが、コマンドログファイル に格納した日時を、time_t型で指定します。) 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 - 104 - 復帰値 正の値: 正常終了。コマンドデータを読み出すためのファイル識別子 0: 異常終了。異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.26 Mp_PlaySound()関数【Windows版】 機能説明 以下の音声を通知します。 ・ メッセージテキストの読み上げ ・ WAVEファイルの再生 ・ BEEP音 呼び出し形式 long Mp_PlaySound(unsigned char *AppName,int kind, unsigned char *text_or_filename, int repeat,MpSoundParam *SoundParam) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 kind: 通知する音声の種類を指定します。 このパラメタには、以下の値のどれかを指定します。 SOUND_VOICE: メッセージテキストを読み上げます。 SOUND_WAVE: WAVEファイルを再生します。 SOUND_BEEP: BEEP音です。 - 105 - text_or_filename: kindの指定値により、以下の値のどれかを指定します。 SOUND_VOICEを指定した場合: 読み上げるメッセージテキストのアドレスを指定します。 SOUND_WAVEを指定した場合: 再生するファイルのフルパス名のアドレスをMAX_PATH以内で指定します。 SOUND_BEEPを指定した場合: 無効です。 repeat: 音声を通知する回数を指定します。 0を指定した場合は、停止処理がされるまで繰り返します。 SoundParam: 音声オプション情報構造体(MpSoundParam)のアドレスを指定します。 SOUND_VOICEを指定した場合に、システムの設定値を変更する場合に指定します。 SOUND_VOICE以外の場合は、無効になります。設定の必要がない場合は、NULLを指定します。 また、各項目で0を指定した場合、システムの設定値が使われます。 構造体の説明 音声オプション情報構造体(MpSoundParam)の形式 typedef struct MpSoundParam_tag { DWORD dwVoiceType ; DWORD dwIntonation ; DWORD dwPitch ; DWORD dwSpeed ; DWORD dwSpeedRate ; DWORD dwTone ; DWORD dwVolume ; } MpSoundParam ; dwVoiceType: 声種を指定します。 VOICE_MALE: 男性の声です。 VOICE_FEMALE: 女性の声です。 dwIntonation: イントネーションのレベルを1~4で指定します。 dwPitch: 発声の声の高さを1~5で指定します。 dwSpeed: 発声スピードを1~10で指定します。 dwSpeedRate: 発声スピードの変化の割合を1~10で指定します。 dwTone: 高域強調の有無を指定します。 - 106 - なし: 1 あり: 2 dwVolume: ボリュームを1~10で指定します。 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_StopSound()関数 復帰値 0: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTSOUND: サウンド再生用の環境がインストールされていません。 Microsoft Speech API(SAPI) 5.xに対応する音声合成エンジンを実装した製品がインストールされているかを確認 してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信でエラーが発生しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL: アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin - 107 - ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT: 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 使用例 音声通知APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "音声通知API" ; // 依頼元アプリケーション名 int kind = SOUND_VOICE ; // テキストの読み上げ unsigned char *text = "異常が発生しました。オペレータに連絡してください"; int repeat = 0 ; // 停止処理がされるまで繰り返す MpSoundParam *SndPrm = NULL ; // 省略値を使用 long lrc ; /* 音声通知依頼 */ lrc = Mp_PlaySound(AppName,kind,text,repeat,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.27 Mp_PlaySound2()関数 機能説明 以下の音声を通知します。 ・ メッセージテキストの読み上げ ・ WAVEファイルの再生 ・ BEEP音 呼び出し形式 long Mp_PlaySound2(unsigned char *AppName,int kind, unsigned char *text_or_filename, int repeat,MpSoundParam *SoundParam,char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 kind: 通知する音声の種類を指定します。 このパラメタには、以下の値のどれかを指定します。 - 108 - SOUND_VOICE: メッセージテキストを読み上げます。 SOUND_WAVE: WAVEファイルを再生します。 SOUND_BEEP: BEEP音です。 text_or_filename: kindの指定値により、以下の値のどれかを指定します。 SOUND_VOICEを指定した場合: 読み上げるメッセージテキストのアドレスを指定します。 SOUND_WAVEを指定した場合: 再生するファイルのフルパス名のアドレスを260バイト以内で指定します。 なお、ファイルはexehostで指定したホストに存在するものを指定してください。 SOUND_BEEPを指定した場合: 無効です。 repeat: 音声を通知する回数を指定します。 0を指定した場合は、停止処理がされるまで繰り返します。 SoundParam: 音声オプション情報構造体(MpSoundParam)のアドレスを指定します。 SOUND_VOICEを指定した場合に、システムの設定値を変更する場合に指定します。 SOUND_VOICE以外の場合は、無効になります。 設定の必要がない場合は、NULLを指定します。また、各項目で0を指定した場合、システムの設定値が使われます。 exehost: アクションを実行するホスト名(アクション実行を選択したクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]画面で指定したホストでアクションが実行されます。 構造体の説明 音声オプション情報構造体(MpSoundParam)の形式 typedef struct MpSoundParam_tag { unsigned long dwVoiceType ; unsigned long dwIntonation ; unsigned long dwPitch ; unsigned long dwSpeed ; unsigned long dwSpeedRate ; unsigned long dwTone ; unsigned long dwVolume ; } MpSoundParam ; dwVoiceType: 声種を指定します。 VOICE_MALE: 男性の声です。 VOICE_FEMALE: 女性の声です。 - 109 - dwIntonation: イントネーションのレベルを1~4で指定します。 dwPitch: 発声の声の高さを1~5で指定します。 dwSpeed: 発声スピードを1~10で指定します。 dwSpeedRate: 発声スピードの変化の割合を1~10で指定します。 dwTone: 高域強調の有無を指定します。 なし: 1 あり: 2 dwVolume: ボリュームを1~10で指定します。 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_StopSound()関数 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTSOUND: サウンド再生用の環境がインストールされていません。 Microsoft Speech API(SAPI) 5.xに対応する音声合成エンジンを実装した製品がインストールされているかを確認 してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信でエラーが発生しました。 - 110 - サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 使用例 音声通知APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName int kind unsigned char *text int repeat MpSoundParam *SndPrm long lrc ; = = = = = "音声通知API" ; // 依頼元アプリケーション名 SOUND_VOICE ; // テキストの読み上げ "異常が発生しました。オペレータに連絡してください"; 0 ; // 停止処理がされるまで繰り返す NULL ; // 省略値を使用 /* 音声通知依頼 */ lrc = Mp_PlaySound2(AppName,kind,text,repeat,NULL,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.28 Mp_PopupDomain()関数【Windows版】 機能説明 指定されたドメインに接続しているすべてのコンピュータに、ポップアップメッセージを表示します。 呼び出し形式 long Mp_PopupDomain(unsigned char *AppName, char *domain,unsigned char *MsgText) - 111 - パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 domain: メッセージを表示するドメイン名のアドレスを指定します。 ドメイン名は15バイト以内で指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL: アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 - 112 - MPACT_EXCEPT: 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ポップアップメッセージは、Microsoftネットワークで使用できます。 動作環境による差異 Windows NT(R)上で動作可能です。 使用例 ポップアップメッセージ送信(ドメイン)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName char *domain unsigned char *text long lrc ; = "ポップアップAPI" ; // 依頼元アプリケーション名 = "Domain" ; // 送信先のドメイン名 = "システムを停止します。" ; // 送信するメッセージテキスト lrc = Mp_PopupDomain(AppName,domain,text) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.29 Mp_PopupDomain2()関数 機能説明 指定されたドメインに接続しているすべてのコンピュータに、ポップアップメッセージを表示します。 呼び出し形式 long Mp_PopupDomain2(unsigned char *AppName, char *domain,unsigned char *MsgText,char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 domain: メッセージを表示するドメイン名のアドレスを指定します。 ドメイン名は15バイト以内で指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 - 113 - exehost: アクションを実行するホスト名(アクション実行を選択したクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]画面で指定したホストでアクションが実行されます。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 - 114 - API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ・ ポップアップメッセージは、Microsoftネットワークで使用できます。 ・ ポップアップアクションの実行ホストまたはあて先には、Systemwalker Centric Manager V13.3.0以降がインストールさ れている必要があります。 使用例 ポップアップメッセージ送信(ドメイン)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "ポップアップAPI" ; // 依頼元アプリケーション名 char *domain = "Domain" ; // 送信先のドメイン名 unsigned char *text = "システムを停止します。" ; // 送信するメッセージテキスト long lrc ; lrc = Mp_PopupDomain2(AppName,domain,text,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.30 Mp_PopupSession()関数【Windows版】 機能説明 サーバに接続しているすべてのセッションにポップアップメッセージを送信します。 呼び出し形式 long Mp_PopupSession(unsigned char *AppName, unsigned char *MsgText) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 - 115 - MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL: アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT: 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ポップアップメッセージは、Microsoftネットワークで使用できます。 動作環境による差異 Windows NT(R)上で動作可能です。 使用例 ポップアップメッセージ送信(全ユーザ)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "ポップアップAPI" ; // 依頼元アプリケーション名 unsigned char *text = "システムを停止します。" ; // 送信するメッセージテキスト long lrc ; - 116 - lrc = Mp_PopupSession(AppName,text) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.31 Mp_PopupSession2()関数 機能説明 サーバに接続しているすべてのセッションに、ポップアップメッセージを送信します。 呼び出し形式 long Mp_PopupSession2(unsigned char *AppName,unsigned char *MsgText,char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 exehost: アクションを実行するホスト名(アクション実行を選択したクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]ウィンドウで指定したホストでアクションが実行されます。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 - 117 - MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ・ ポップアップメッセージは、Microsoftネットワークで使用できます。 ・ ポップアップアクションの実行ホストまたはあて先には、Systemwalker Centric Manager V13.3.0以降がインストールさ れている必要があります。 使用例 ポップアップメッセージ送信(全ユーザ)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName unsigned char *text long lrc ; = "ポップアップAPI" ; // 依頼元アプリケーション名 = "システムを停止します。" ; // 送信するメッセージテキスト lrc = Mp_PopupSession2(AppName,text,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.32 Mp_PopupUser()関数【Windows版】 - 118 - 機能説明 指定されたユーザが、ログオンしているコンピュータ、または指定されたコンピュータに、ポップアップメッセージを表示し ます。 呼び出し形式 long Mp_PopupUser(unsigned char *AppName,MpAddress *AddressList, int nAddressList, unsigned char *MsgText) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 AddressList: あて先情報構造体(MpAddress)のアドレスを指定します。ポップアップメッセージを送信するユーザ名、またはコン ピュータ名を指定します。 複数指定する場合は、配列で指定します。 なお、NULLを指定した場合は、ドメインにログオンしているすべてのユーザに送信します。 nAddressList: AddressListに指定した配列の数を指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 構造体の説明 あて先情報構造体(MpAddress)の形式 typedef struct MpAddress_tag { int type ; unsigned char *address ; char *addrid ; } MpAddress ; type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: ユーザ名またはコンピュータ名 TYPE_NAME: あて先名 address: ユーザ名、コンピュータ名、またはあて先名のアドレスを指定します。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 参照 “アクション管理のAPI”を参照してください。 - 119 - 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効なユーザ名、またはコンピュータ名がありません。 あて先情報構造体(MpAddress)に指定した address に誤りがあります。正しいあて先名に変更してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL: アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT: 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ポップアップメッセージは、Microsoftネットワークで使用できます。 - 120 - 動作環境による差異 Windows NT(R)上で動作可能です。 使用例 ポップアップメッセージ送信(指定ユーザ)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName MpAddress addr [2] ; int naddr ; unsigned char *text long lrc ; = "ポップアップAPI" ; // 依頼元アプリケーション名 // 送信先アドレス格納域 = "システムを停止します。" ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01" ; naddr = 2 ; // 送信するメッセージテキスト // ユーザ operatorとuser01にメッ // セージを送信する lrc = Mp_PopupUser(AppName,addr,naddr,text) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.33 Mp_PopupUser2()関数 機能説明 指定されたユーザが、ログインしているコンピュータ、または指定されたコンピュータに、ポップアップメッセージを表示し ます。 呼び出し形式 long Mp_PopupUser2(unsigned char *AppName,MpAddress *AddressList, int nAddressList, unsigned char *MsgText, char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 AddressList: あて先情報構造体(MpAddress)のアドレスを指定します。 ポップアップメッセージを送信するユーザ名、またはコンピュータ名を指定します。 複数指定する場合は、配列で指定します。 なお、NULLを指定した場合は、ドメインにログインしているすべてのユーザに送信します。 nAddressList: AddressListに指定した配列の数を指定します。 MsgText: ポップアップに表示するメッセージのアドレスを指定します。 メッセージは128バイト以内で指定します。 - 121 - exehost: アクションを実行するホスト名(アクション実行を選択したクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]ウィンドウで指定したホストでアクションが実行されます。 構造体の説明 あて先情報構造体(MpAddress)の形式 typedef struct MpAddress_tag { int type ; unsigned char *address ; char *addrid ; } MpAddress ; type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: ユーザ名、またはコンピュータ名 TYPE_NAME: あて先名 address: ユーザ名/コンピュータ名、またはあて先名のアドレスを指定します。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効なユーザ名またはコンピュータ名がありません。 あて先情報構造体(MpAddress)に指定した address に誤りがあります。正しいあて先名に変更してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 - 122 - MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows版】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows版】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項 ・ ポップアップメッセージは、Microsoftネットワークで使用できます。 ・ ポップアップアクションの実行ホストまたはあて先には、Systemwalker Centric Manager V13.3.0以降がインストールさ れている必要があります。 使用例 ポップアップメッセージ送信(指定ユーザ)APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName Mp Address addr[2] ; int naddr ; unsigned char *text long lrc ; = "ポップアップAPI" ; // 依頼元アプリケーション名 // 送信先アドレス格納域 = "システムを停止します。" ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01" ; naddr = 2 ; // 送信するメッセージテキスト // ユーザ operatorとuser01に // メッセージを送信する lrc = Mp_PopupUser2(AppName,addr,naddr,text,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } - 123 - /* 正常終了 */ 4.34 Mp_ReadEvent()関数 機能説明 【Windows版】 Mp_OpenEvent()発行後、Mp_ReadEvent()関数とMp_GetEventMap()関数を組み合わせて発行することにより、監視 イベントを1イベントずつ読み出します。 Mp_ReadEvent()関数は、Systemwalker Centric Managerに対して、イベントの受信を要求してすぐに呼び出し元に戻り ます。 【UNIX版】 Mp_OpenEvent()発行後、Mp_ReadEvent()関数を発行することにより、監視イベントを1イベントずつ読み出します。 呼び出し形式 【Windows版】 #include <mp_opmgr_api.h> BOOL Mp_ReadEvent( fp, buf, rlen, olr ); HANDLE char DWORD fp; *buf; *rlen; OVERLAPPED *olr; /* /* /* /* /* ハンドルを指定する データ格納領域のアドレスを指定する 読み取りバイト数格納領域のアドレスを指 定する OVERLAPPED構造体のアドレスを指定する */ */ */ */ */ 【UNIX版】 #include <mp_opmgr_api.h> int Mp_ReadEvent( fp, hisnum, status, category, timerec, logtime, nodename, NodeID, DatabaseID, folder, application, dealer, eventtext, level, evttype, jobnum, memo, chgstime, chgetime, IPaddr, reserve, rddatatyp ); int fp; /* /* long *hisnum; /* /* unsigned long *status; /* /* char *category; /* /* time_t *timerec; /* /* time_t *logtime; /* /* char *nodename; /* /* unsigned long *NodeID; /* unsigned long *DatabaseID; /* char *folder; /* /* char *application; /* /* char *dealer; /* /* char *eventtext; /* /* Mp_OpenEvent()で獲得したファイ*/ ル記述子 */ 監視イベント番号格納領域のアド*/ レスを指定する */ イベントの状態格納領域のアドレ*/ スを指定する */ 監視イベントの種別格納領域のア*/ ドレスを指定する */ イベント発生日時格納領域のアド*/ レスを指定する */ イベントのロギング日時格納領域*/ のアドレスを指定する */ ノード名格納領域のアドレスを指*/ 定する */ リザーブ領域 */ リザーブ領域 */ フォルダ名格納領域のアドレスを*/ 指定する */ 表示名格納領域のアドレスを格納*/ する */ 対応者格納領域のアドレスを格納*/ する */ イベントテキスト格納領域のアド*/ レスを指定する */ - 124 - unsigned long *level; unsigned long *evttype; char *jobnum; char *memo; time_t *chgstime; time_t *chgetime; unsigned int *IPaddr; unsigned char *reserve; unsigned long *rddatatyp; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* イベントの重要度レベル格納領域*/ のアドレスを指定する */ イベントの属性格納領域のアドレ*/ スを指定する */ ジョブ番号格納領域のアドレスを*/ 指定する */ メモ格納領域のアドレスを指定す*/ る */ イベントの対処開始日時格納領域*/ のアドレスを指定する */ イベントの対処終了日時格納領域*/ のアドレスを指定する */ IPアドレス格納領域のアドレスを*/ 指定する */ 予約格納領域のアドレスを指定す*/ る */ イベントデータの種類格納領域の*/ アドレスを指定する */ パラメタ 【Windows版】 fp: Mp_OpenEvent()で獲得したハンドルを指定します。 buf: 受信データを格納する領域アドレスを指定します。 MPOP_EVTDATAREADLENバイト分呼び出し元で準備します。 rlen: 実際に読み取ったバイト数を格納する領域のアドレスを指定します。 olr: イベント受信の非同期I/Oで使用するOVERLAPPED構造体のアドレスを指定します。 【UNIX版】 fp: Mp_OpenEvent()で獲得したファイル記述子を指定します。 hisnum: 監視イベントの発生順序を示す、監視イベント番号が格納されます。 status: 監視イベントに対する対処の状況が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NOFIXEVT 監視イベントの状態は“未対処”または“未確認” MPOP_RE_DEFEVT 監視イベントの状態は“保留” MPOP_RE_UINVEVT 監視イベントの状態は“調査中” MPOP_RE_FIXEVT 監視イベントの状態は“対処済” - 125 - MPOP_RE_REPEVT 監視イベントの状態は“返答済” category: 発生した監視イベントの種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 timerec: 被監視システムで、イベントが発生した日時が格納されます。 ただし、日時が正しく獲得できなかった場合は、以下のように値が設定されています。 日付、時刻が獲得できない/項目がない場合: 0x00FFFFFF 日付だけ獲得できない場合: 0x00hhmmss hh: 時(0x00~0x17) mm: 分(0x00~0x3B) ss: 秒(0x00~ox3B) logtime: 監視イベントがイベントログに格納された日時が格納されます。日付、時刻が獲得できない場合、または日付だけ獲 得できない場合は、timerecと同様の設定になります。 nodename: 監視イベントが発生したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 NodeID: リザーブ領域。 DatabaseID: リザーブ領域。 folder: 監視イベントが発生したシステムのフォルダ名が格納されます。 MPOP_FOLDERLENバイト分呼び出し元で準備します。 application: 監視イベントが発生したシステムの表示名が格納されます。 MPOP_APPLICATIONLENバイト分呼び出し元で準備します。 dealer: 監視イベントに対応した人の名前が格納されます。 MPOP_DEALERLENバイト分呼び出し元で準備します。 eventtext: 発生したイベントテキストが格納されます。 MPOP_EVENTLENバイト分呼び出し元で準備します。 level: 監視イベントの重要度レベルが格納されます。 このパラメタには、以下の値のどれかが格納されます。 - 126 - MPOP_RE_SPEMG: 最重要 MPOP_RE_EMG: 重要 MPOP_RE_WARN: 警告 MPOP_RE_NOTICE: 通知 evttype: 監視イベントの属性が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NORMTYP 監視イベントの属性は“一般” MPOP_RE_REPLYTYP 監視イベントの属性は“返答要求” MPOP_RE_SPCLTYP 監視イベントの属性は“高輝度” jobnum: 監視イベントに対するジョブ番号が格納されます。 MPOP_JOBNUMLENバイト分呼び出し元で準備します。 memo: 監視イベントに対するユーザメモが格納されます。 MPOP_MEMOLENバイト分呼び出し元で準備します。 chgstime: 監視システムで、イベントの対処を開始した日時が格納されます。 発生イベント(rddatatyp==MPOP_GEM_MONITOR)の場合は0が格納されます。 日付、時刻が獲得できない場合、または日付だけ獲得できない場合は、timerecと同様の設定になります。 chgetime: 監視システムで、イベントの対処を終了した日時が格納されます。 発生イベント(rddatatyp==MPOP_GEM_MONITOR)の場合は0が格納されます。 日付、時刻が獲得できない場合、または日付だけ獲得できない場合は、timerecと同様の設定になります。 IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ reserve: 1バイトの予約域です。 - 127 - rddatatyp: 読み出したイベントデータの種類が格納されます。 このパラメタには、以下の値のどちらかが格納されます。 MPOP_GEM_MONITOR: Systemwalker Centric Managerに通知された監視イベントのデータが読み出された。 MPOP_GEM_CHSTATUS: 状態が変更された監視イベントのデータが読み出された。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEvent()関数 ・ Mp_CloseEvent()関数 ・ Mp_GetEventMap()関数【Windows版】 復帰値 【Windows版】 ReadFile()関数の復帰情報が、そのまま応答されます。 詳細なエラーコードは、GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 0: 正常終了。 -1: 異常終了。詳細なエラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 注意事項 監視イベントに対して、何らかの状態変更(調査中やキャンセルなど)をすると、状態(status)の異なる、同じイベントが複数 読み出されます。これらの状態変更により発生するイベントは、APIでは取得できますが、Systemwalkerコンソールの監 視イベント一覧には出力されません。Systemwalkerコンソール上のイベントと一致させるためには、取り出したイベントの “rddatatyp”を判定し、“MPOP_GEM_MONITOR”であるイベントのみ出力するといったロジックを組み込んでください。 【Windows版】 - 128 - 呼び出し元は、Mp_ReadEvent()関数の第4パラメタの、OVERLAPPED構造体を利用して、イベント受信のオーバラップ 処理を完了し、Mp_GetEventMap()関数を呼び出してください。 【UNIX版(Linux for Intel64版を除く)】 UTF-8環境で本APIを使用する場合、以下の注意事項があります。 ・ 監視イベント種別(category) 獲得できる監視イベント種別が16バイトになります。17バイト目以降が削除されます。このため、以下のように対応し てください。 - APIを使用するサーバ [イベント監視の条件定義]に、17バイト以上の監視イベント種別を16バイト以下に変更する定義を実施してくださ い。 - 運用管理サーバ この定義を実施した場合、定義した16バイト以下の監視イベント種別を[サーバ環境定義]に追加してください。 ・ 対応者名(dealer) 獲得できる対応者名が16バイトになります。17バイト目以降が削除されます。このため、イベント対処時に16バイト以 内となる対応者名を指定してください。 ・ システムの表示名(application) 獲得できるシステムの表示名が128バイトになります。129バイト目以降が削除されます。このため、Systemwalkerコン ソール上で表示名を指定する場合は、128バイト以内となる表示名を指定してください。 動作環境による差異 運用管理サーバで使用可能です。 4.35 Mp_ReadEventLog()関数 機能説明 Mp_OpenEventLog()発行後、Mp_ReadEventLog()関数を発行することによりロギングされた監視イベントを、1イベント ずつ読み出します。 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opmgr_api.h> int Mp_ReadEventLog( fp, hisnum, status, category, timerec, logtime, nodename, NodeID, DatabaseID, folder, application, dealer, eventtext, level, evttype, jobnum, memo, chgstime, chgetime, IPaddr, reserve); HANDLE long fp; *hisnum; unsigned long *status; char *category; time_t *timerec; time_t *logtime; char DWORD *nodename; *rsv; /*ファイル識別子を指定する */ /*監視イベント番号格納領域のアドレス */ /*を指定する */ /*イベントの状態格納領域のアドレスを指*/ /*定する */ /*監視イベントの種別格納領域のアドレス*/ /*を指定する */ /*イベントの発生日時格納領域のアドレス*/ /*を指定する */ /*イベントのロギング日時格納領域のアド*/ /*レスを指定する */ /*ノード名格納領域のアドレスを指定する*/ /*リザーブ領域 */ - 129 - DWORD char *rsv; *folder; char char char *application; *dealer; *eventtext; unsigned long *level; unsigned long *evttype; char *jobnum; char time_t *memo; *chgstime; time_t *chgetime; unsigned int *IPaddr; unsigned char *reserve; /*リザーブ領域 */ /*フォルダ名格納領域のアドレスを指定 */ /*する */ /*表示名格納領域のアドレスを指定する */ /*対応者格納領域のアドレスを指定する */ /*イベントテキスト格納領域のアドレスを*/ /*指定する */ /*イベントの重要度レベル格納領域のアド*/ /*レスを指定する */ /*イベントの属性格納領域のアドレスを指*/ /*定する */ /*ジョブ番号格納領域のアドレスを指定す*/ /*る */ /*メモ格納領域のアドレスを指定する */ /*イベントの対処開始日時格納領域のアド*/ /*レスを指定する */ /*イベントの対処終了日時格納領域のアド*/ /*レスを指定する */ /*IPアドレス格納領域のアドレスを指定す*/ /*る */ /*予約格納領域のアドレスを指定する */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opmgr_api.h> int Mp_ReadEventLog( fp, hisnum, status, category, timerec, logtime, nodename, NodeID, DatabaseID, folder, application, dealer, eventtext, level, evttype, jobnum, memo, chgstime, chgetime, IPaddr, reserve); int long unsigned char time_t time_t char DWORD DWORD char char char char unsigned unsigned char char time_t time_t unsigned fp; *hisnum; /*ファイル識別子を指定する */ /*監視イベント番号格納領域のアドレス */ /*を指定する */ long *status; /*イベントの状態格納領域のアドレスを指*/ /*定する */ *category; /*監視イベントの種別格納領域のアドレス*/ /*を指定する */ *timerec; /*イベントの発生日時格納領域のアドレス*/ /*を指定する */ *logtime; /*イベントのロギング日時格納領域のアド*/ /*レスを指定する */ *nodename; /*ノード名格納領域のアドレスを指定する*/ *rsv; /*リザーブ領域 */ *rsv; /*リザーブ領域 */ *folder; /*フォルダ名格納領域のアドレスを指定 */ /*する */ *application; /*表示名格納領域のアドレスを指定する */ *dealer; /*対応者格納領域のアドレスを指定する */ *eventtext; /*イベントテキスト格納領域のアドレスを*/ /*指定する */ long *level; /*イベントの重要度レベル格納領域のアド*/ /*レスを指定する */ long *evttype; /*イベントの属性格納領域のアドレスを指*/ /*定する */ *jobnum; /*ジョブ番号格納領域のアドレスを指定す*/ /*る */ *memo; /*メモ格納領域のアドレスを指定する */ *chgstime; /*イベントの対処開始日時格納領域のアド*/ /*レスを指定する */ *chgetime; /*イベントの対処終了日時格納領域のアド*/ /*レスを指定する */ int *IPaddr; /*IPアドレス格納領域のアドレスを指定す*/ - 130 - /*る unsigned char *reserve; /*予約格納領域のアドレスを指定する */ */ 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opmgr_api.h> int Mp_ReadEventLog( fp, hisnum, status, category, timerec, logtime, nodename, NodeID, DatabaseID, folder, application, dealer, eventtext, level, evttype, jobnum, memo, chgstime, chgetime, IPaddr, reserve); int long fp; *hisnum; unsigned long *status; char *category; time_t *timerec; time_t *logtime; char *nodename; unsigned long *NodeID; unsigned long *DatabaseID; char *folder; char *application; char *dealer; char *eventtext; unsigned long *level; unsigned long *evttype; char *jobnum; char *memo; time_t *chgstime; time_t *chgetime; unsigned int *IPaddr; unsigned char *reserve; /*ファイル識別子を指定する */ /*監視イベント番号格納領域のアド*/ /*レスを指定する */ /*イベントの状態格納領域のアドレ*/ /*スを指定する */ /*監視イベントの種別格納領域のア*/ /*ドレスを指定する */ /*イベントの発生日時格納領域のア*/ /*ドレスを指定する */ /*イベントのロギング日時格納領域*/ /*のアドレスを指定する */ /*ノード名格納領域のアドレスを指*/ /*定する */ /*リザーブ領域 */ /*リザーブ領域 */ /*フォルダ名格納領域のアドレスを*/ /*指定する */ /*表示名格納領域のアドレスを指定*/ /*する */ /*対応者格納領域のアドレスを指定*/ /*する */ /*イベントテキスト格納領域のアド*/ /*レスを指定する */ /*イベントの重要度レベル格納領域*/ /*のアドレスを指定する */ /*イベントの属性格納領域のアドレ*/ /*スを指定する */ /*ジョブ番号格納領域のアドレスを*/ /*指定する */ /*メモ格納領域のアドレスを指定す*/ /*る */ /*イベントの対処開始日時格納領域*/ /*のアドレスを指定する */ /*イベントの対処終了日時格納領域*/ /*のアドレスを指定する */ /*IPアドレス格納領域のアドレスを*/ /*指定する */ /*予約格納領域のアドレスを指定す*/ /*る */ 【Linux for Intel64版】 #include <mp_opmgr_api.h> int Mp_ReadEventLog( fp, hisnum, status, category, timerec, logtime, nodename, NodeID, DatabaseID, folder, application, dealer, eventtext, level, evttype, jobnum, memo, chgstime, chgetime, IPaddr, reserve); long long fp; *hisnum; /*ファイル識別子を指定する */ /*監視イベント番号格納領域のアド*/ /*レスを指定する */ - 131 - unsigned long *status; char *category; time_t *timerec; time_t *logtime; char *nodename; unsigned long *NodeID; unsigned long *DatabaseID; char *folder; char *application; char *dealer; char *eventtext; unsigned long *level; unsigned long *evttype; char *jobnum; char *memo; time_t *chgstime; time_t *chgetime; unsigned int *IPaddr; unsigned char *reserve; /*イベントの状態格納領域のアドレ*/ /*スを指定する */ /*監視イベントの種別格納領域のア*/ /*ドレスを指定する */ /*イベントの発生日時格納領域のア*/ /*ドレスを指定する */ /*イベントのロギング日時格納領域*/ /*のアドレスを指定する */ /*ノード名格納領域のアドレスを指*/ /*定する */ /*リザーブ領域 */ /*リザーブ領域 */ /*フォルダ名格納領域のアドレスを*/ /*指定する */ /*表示名格納領域のアドレスを指定*/ /*する */ /*対応者格納領域のアドレスを指定*/ /*する */ /*イベントテキスト格納領域のアド*/ /*レスを指定する */ /*イベントの重要度レベル格納領域*/ /*のアドレスを指定する */ /*イベントの属性格納領域のアドレ*/ /*スを指定する */ /*ジョブ番号格納領域のアドレスを*/ /*指定する */ /*メモ格納領域のアドレスを指定す*/ /*る */ /*イベントの対処開始日時格納領域*/ /*のアドレスを指定する */ /*イベントの対処終了日時格納領域*/ /*のアドレスを指定する */ /*IPアドレス格納領域のアドレスを*/ /*指定する */ /*予約格納領域のアドレスを指定す*/ /*る */ パラメタ fp: Mp_OpenEventLog()で獲得したファイル識別子を指定します。 hisnum: 監視イベントの発生順序を示す監視イベント番号が格納されます。 status: 監視イベントに対する対処の状況が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NOFIXEVT: 監視イベントの状態は“未対処”または“未確認” MPOP_RE_DEFEVT: 監視イベントの状態は“保留” MPOP_RE_UINVEVT: 監視イベントの状態は“調査中” MPOP_RE_FIXEVT: 監視イベントの状態は“対処済” - 132 - MPOP_RE_REPEVT: 監視イベントの状態は“返答済” category: 発生した監視イベントの種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 timerec: 被監視システムで、イベントが発生した日時が格納されます。 ただし、日時が正しく獲得できなかった場合、以下のように値が設定されます。 日付、時刻が獲得できない/項目がない場合: 0x00FFFFFF 日付だけ獲得できない場合: 0x00hhmmss hh: 時(0x00 ~0x17) mm: 分(0x00 ~0x3B) ss: 秒(0x00 ~0x3B) logtime: 監視イベントがイベントログに格納された日時が格納されます。日付、時刻が獲得できない、または日付だけ獲得で きない場合は、timerecと同様の設定になります。 nodename: 監視イベントが発生したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 folder: 監視イベントが発生したシステムのフォルダ名が格納されます。 MPOP_FOLDERLENバイト分呼び出し元で準備します。 application: 監視イベントが発生したシステムの表示名が格納されます。 MPOP_APPLICATIONLENバイト分呼び出し元で準備します。 dealer: 監視イベントに対応した人の名前が格納されます。 MPOP_DEALERLENバイト分呼び出し元で準備します。 eventtext: 発生したイベントテキストが格納されます。 MPOP_EVENTLENバイト分呼び出し元で準備します。 level: 監視イベントの重要度レベルが格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_SPEMG: 最重要 MPOP_RE_EMG: 重要 - 133 - MPOP_RE_WARN 警告 MPOP_RE_NOTICE 通知 evttype: 監視イベントの属性が格納されます。 このパラメタには、以下の値のどれかが格納されます。 MPOP_RE_NORMTYP: 監視イベントの属性は“一般” MPOP_RE_REPLYTYP: 監視イベントの属性は“返答要求” MPOP_RE_SPCLTYP: 監視イベントの属性は“高輝度” jobnum: 監視イベントに対するジョブ番号が格納されます。 MPOP_JOBNUMLENバイト分呼び出し元で準備します。 memo: 監視イベントに対するユーザメモが格納されます。 MPOP_MEMOLENバイト分呼び出し元で準備します。 chgstime: 監視システムで、イベントの対処を開始した日時が格納されます。 日付、時刻が獲得できない、または日付だけ獲得できない場合は、timerecと同様の設定になります。 chgetime: 監視システムで、イベントの対処を終了した日時が格納されます。 日付、時刻が獲得できない、または日付だけ獲得できない場合は、timerecと同様の設定になります。 IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ reserve: 1バイトの予約域です。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバでは、Administrator権限/DmAdmin権限/DmOperation/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ 運用管理サーバでは、システム管理者(スーパーユーザ)権限が必要です。 - 134 - ・ 運用管理サーバで実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenEventLog()関数 ・ Mp_CloseEventLog()関数 復帰値 1: 正常終了(監視イベントを正常に獲得)。 0(EOF): 正常終了(監視イベントをすべて獲得)。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードはerrnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 API格納場所 “監視イベントのAPI”を参照してください。 注意事項 【UNIX版(Linux for Intel64版を除く)の場合】 UTF-8環境で本APIを使用する場合、以下の注意事項があります。 ・ 監視イベント種別(category) 獲得できる監視イベント種別が16バイトになります。17バイト目以降が削除されます。このため、以下のように対応し てください。 - APIを使用するサーバ [イベント監視の条件定義]に、17バイト以上の監視イベント種別を16バイト以下に変更する定義を実施してくださ い。 - 運用管理サーバ この定義を実施した場合、定義した16バイト以下の監視イベント種別を[サーバ環境定義]に追加してください。 ・ 対応者名(dealer) 獲得できる対応者名が16バイトになります。17バイト目以降が削除されます。このため、イベント対処時に16バイト以 内となる対応者名を指定してください。 - 135 - ・ システムの表示名(application) 獲得できるシステムの表示名が128バイトになります。129バイト目以降が削除されます。このため、Systemwalkerコン ソール上で表示名を指定する場合は、128バイト以内となる表示名を指定してください。 動作環境による差異 運用管理サーバで使用可能です。 4.36 Mp_ReadMsg()関数 機能説明 【Windows版】 Mp_OpenMsg()関数発行後、Mp_ReadMsg()関数とMp_GetMsgMap()関数を組み合わせて発行することにより、メッ セージを1メッセージずつ読み出します。 Mp_OpenMsg()関数直後のMp_ReadMsg()には、すでに起動しているシステムのエージェント起動メッセージ (msgtype=OP_APIMGTYPESTAT)が、起動しているシステムの数だけ通知されます。 Mp_ReadMsg()関数は、システム監視エージェントサービスに対して、メッセージの受信を要求し、すぐに呼び出し元に 戻ります。 【UNIX版】 Mp_OpenMsg()関数発行後、Mp_ReadMsg()関数を発行することで、監視イベントを1イベントずつ獲得します。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> BOOL Mp_ReadMsg(fp, olr , buf); HANDLE fp; /* Mp_OpenMsg()で獲得したハンドルを指定する OVERLAPPED *olr; /* メッセージ受信の非同期I/Oで使用する /* OVERLAPPED構造体のアドレス char *buf; /* 受信データのヘッダ部分だけを格納する領 /* 域のアドレス */ */ */ */ */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_ReadMsg(fp, hostx_flg, level, time1, node, NodeID, DatabaseID, time2, category, msgtext, blkno, msgtype, ostype, submsgnum, voicenum, msgcolor, backcolor, domtype, domnum, replyid, systype, ext); int fp; /* /* unsigned char *hostx_flg; /* /* short *level; /* /* time_t *time1; /* /* char *node; /* /* unsigned long *NodeID; /* unsigned long *DatabaseID;/* time_t *time2; /* /* char *category; /* /* Mp_OpenMsg()で獲得したファイル記*/ 述子 */ 強制表示フラグの格納領域のアドレ*/ スを指定する */ メッセージの重要度のアドレスを指*/ 定する */ メッセージが自システムに通知され*/ た日時格納領域のアドレス */ メッセージが出力されたシステム名*/ 格納領域のアドレス */ リザーブ領域 */ リザーブ領域 */ メッセージが出力された日時格納領*/ 域のアドレス */ メッセージの種別格納領域のアドレ*/ ス */ - 136 - char *msgtext; unsigned short *blkno; /* /* /* unsigned short *msgtype; /* unsigned short *ostype; /* unsigned short *submsgnum;/* unsigned short *voicenum; /* unsigned char *msgcolor; /* unsigned char *backcolor; /* unsigned short *domtype; /* long *domnum; /* char *replyid; /* unsigned char *systype; /* EXTENDDATA *ext; /* メッセージ格納領域のアドレス */ メッセージのブロック番号格納領域*/ のアドレス */ メッセージ種別格納領域のアドレス*/ OS種別格納領域のアドレス */ 補助説明文番号格納領域のアドレス*/ 音声番号が格納される */ 文字色が格納される */ 背景色が格納される */ DOM種別が格納される */ DOM番号が格納される */ 返答記述子が格納される */ 系区別が格納される */ 拡張データ格納領域のアドレス */ パラメタ 【Windows版】 fp: Mp_OpenMsg()で獲得したハンドルを指定します。 olr: メッセージ受信の非同期I/Oで使用するOVERLAPPED構造体のアドレスを指定します。 buf: 受信データのヘッダ部分だけを格納する領域アドレスを指定します。12バイト分呼び出し元で準備します。 【UNIX版】 fp: Mp_OpenMsg()で獲得したファイル記述子を指定します。 hostxflg: リザーブ領域。 charの領域を確保し、そのアドレスを指定してください。 level: 発生したメッセージの重要度レベルが格納されます。 MPOP_RE_SPEMG : 最重要 MPOP_RE_EMG : 重要 MPOP_RE_WARN : 警告 MPOP_RE_NOTICE 通知 MPOP_RE_MSG : 一般 な お 、 メ ッ セ ー ジ 種 別 (msgtype) が 、 OP_APIMSGTYPESTAT, OP_APIMSGTYPECHNGのときは、必ずMPOP_RE_MSGが格納されます。 OP_APIMSGTYPESTOP, time1: メッセージがメッセージログに格納された日時が格納されます。Mp_OpenMsg()直後に通知されるシステム監視エー ジェント起動メッセージの場合は、システム監視エージェントがMp_ReadMsg()に通知した日時が格納されます。 - 137 - 日時が正しく獲得できなかったときは、以下の値が設定されています。 日付、時刻とも獲得できない場合: 0x00FFFFFF 日付だけ獲得できない場合: 0x00hhmmss hh: 時(0x00 ~0x17) mm: 分(0x00 ~0x3B) ss: 秒(0x00 ~0x3B) node: メッセージが発生したシステムのホスト名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 NodeID: リザーブ領域。 DatabaseID: リザーブ領域。 time2: nodeで示されたシステムで、メッセージが出力された日時が格納されます。Mp_OpenMsg()直後に通知されるシステ ム監視エージェント起動メッセージの場合は、システム監視エージェントがMp_ReadMsg()に通知した日時が格納さ れます。 日時が正しく獲得できなかったときは、time1と同様の設定となります。 category: 発生したメッセージの監視イベント種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 msgtext: 発生したメッセージテキストが格納されます。 2048バイト分呼び出し元で準備します。 メッセージ長が2047バイトを超える場合は、2047バイト以降は破棄されます。 blkno: (GEE/DSの場合に“OP_APIMSGTYPENORM”以外の値の場合あり) マルチラインメッセージのように、複数のメッセージで意味をもつ場合に、複数メッセージをブロック化の番号が格納 されます。 単一メッセージの場合は、OP_ONLYBLK(0x0000)が格納され、マルチラインメッセージの場合は、0x0001~0xFFFF が格納されます。 ブロックの最後のメッセージには、必ずOP_MLTBLK_END(0xFFFF)が格納されます。 msgtype: 発生したメッセージのメッセージ種別が格納されます。 メッセージ種別を以下に示します。 OP_APIMSGTYPENORM: 通常メッセージ OP_APIMSGTYPEREP: 返答要求メッセージ(GEE/DS) OP_APIMSGTYPEHB: 高輝度メッセージ(GEE) - 138 - OP_APIMSGTYPEDEL: メッセージ削除データ(以下、DOMデータという) これは実際にはメッセージではなく、返答要求メッセージや高輝度メッセージが対処されたことを通知するための 情報データです。 OP_APIMSGTYPESTAT: システム監視エージェント起動メッセージ このメッセージは、システムが監視状態であることを通知するメッセージです。 接続形態が常時接続で接続中か、接続形態が必要時接続、またはRAS接続として登録されていることを示しま す。 OP_APIMSGTYPESTOP: システム監視エージェント停止メッセージ このメッセージは、システムが監視状態でなくなったことを通知するメッセージです。 接続形態が常時接続のシステムが切断されたか、接続形態が必要時接続、またはRAS接続として登録されてい たシステムが削除されたことを示します。 OP_APIMSGTYPECHNG: システム状態変更メッセージ (GEE)このメッセージは、ホットスタンバイの系区別が変更されたことを通知するメッセージです。 ostype: 発生したメッセージのOS種別が格納されます。 OS種別を以下に示します。 OP_UXPDS: UXP/DS OP_SOLARIS1: Solaris1.x系 OP_SOLARIS2: Solaris2.x系 OP_HPUX10: HP-UX OP_AIX: AIX OP_MVS: MVS OP_LINUX: Linux OP_UXPM: UXP/M OP_UXPVPP: UXP/VPP OP_WINDOWS2000: Windows(R) 2000 OP_WINDOWSNT: Windows NT(R) - 139 - OP_WINNTSERVER: Windows NT(R) Server OP_WINNTWS: Windows NT(R) Workstation OP_WINDOWS31: Microsoft(R) Windows(R) 3.1, Microsoft(R) Windows(R) 3.11, Microsoft(R) Windows(R) for Workgroups 3.11 OP_WINDOWS95: Windows(R) 95 OP_WINDOWS98: Windows(R) 98 OP_WINDOWSXP: Windows(R) XP OP_SXO: SXO OP_SYMFOWAREPS: Symfoware(R) Parallel Server OP_RAID: RAID OP_MSPE20: MSP E20 OP_MSPAF2: MSP AFII OP_XSPAF2: XSP AFII OP_AVMEX: AVM/EX OP_FTOPS2: FTOPS-II OP_MVSG: MVS 系(IBMおよび他社互換機) OP_ASP: ASP OP_WINDOWSSV2003 : Windows Server(R) 2003 OP_WINDOWSVISTA: Windows Vista(R) OP_WINDOWSSV2008: Windows Server(R) 2008 OP_WINDOWS7: Windows(R) 7 - 140 - OP_WINDOWS2012: Windows Server (R) 2012 OP_WINDOWS8: Windows (R) 8 (Windows (R) 8.1以外) OP_WINDOWS81: Windows (R) 8.1 OP_WINDOWS8RT: Windows (R) RT OP_OS_UNKNOWN: 不明 submsgnum GEE、およびUNIX版集中監視マネージャのGS連携オプションが使用する、メッセージの補助説明文の番号が格納 されます。 voicenum 通報番号が格納されます。 msgcolor [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの文字の色が格納されます。 文字色の種類を以下に示します。 OP_COLOR_BLACK: 黒色 OP_COLOR_WHITE: 白色 OP_COLOR_RED: 赤色 OP_COLOR_GREEN: 緑色 OP_COLOR_BLUE: 深緑色 OP_COLOR_YELLOW: 黄色 OP_COLOR_LIGHTBLUE: 明青色 OP_COLOR_PURPLE: 紫色 OP_COLOR_DARKGRAY: 濃い灰色 OP_COLOR_ORANGE: 黄緑色 OP_COLOR_SKYBLUE: 水色 - 141 - OP_COLOR_PINK: ピンク色 OP_COLOR_PALEGREEN: 青緑色 OP_COLOR_BROWN: 茶色 OP_COLOR_GRAY: 淡い灰色 OP_COLOR_CREAM: 黄土色 OP_COLOR_DEF: 標準色 な お 、 メ ッ セ ー ジ 種 別 (msgtype) が 、 OP_APIMSGTYPESTAT, OP_APIMSGTYPECHNGのときは、必ずOP_COLOR_DEFが格納されます。 OP_APIMSGTYPESTOP, backcolor: [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの背景色が格納されます。 文字色の種類は、msgcolorと同じです。 なお、メッセージ種別(msgtype)が、OP_APIMSGTYPESTAT, OP_APIMSGTYPESTOP, OP_APIMSGTYPECHNG のときは、必ずOP_COLOR_DEFが格納されます。 domtype: 返答要求メッセージ、および高輝度メッセージの種類が格納されます。 これは、返答要求メッセージ、高輝度メッセージ、およびDOM対応メッセージとDOMデータとの対応をとるために使 用します。 DOM種別を以下に示します。 OP_NORMDOM: 返答要求メッセージ、高輝度メッセージ、およびDOM対応メッセージ以外。 OP_NIPDOM: MSP、またはXSPのNIP時の返答要求メッセージ、およびDOMデータです。 OP_MSPDOM: MSPのNIP時以外の返答要求メッセージ、高輝度メッセージ、およびDOMデータです。 OP_XSPDOM: XSPのNIP時以外の返答要求メッセージ、高輝度メッセージ、およびDOMデータです。 OP_WORKITDOM: BS*NET/WORKITが通知する返答要求メッセージ、およびDOMデータです。 OP_ASPDOM: ASPが通知する返答要求メッセージ、高輝度メッセージ、およびDOMデータです。 OP_APLDOM: Systemwalker Centric Managerアプリケーションが通知するDOM対応メッセージ、およびDOMデータです。 OP_WTORDOM : 返答メッセージ機能が通知するDOM対応メッセージ、およびDOMデータです。 - 142 - domnum: 返答要求メッセージ、高輝度メッセージ、およびDOM対応メッセージの場合に、メッセージとDOMデータの対応をと るための番号が格納されます。 この番号は、メッセージ発生システム内でDOM種別ごとに一意です。 replyid: 返答要求メッセージに対して、コマンドで返答するときの、メッセージを識別する文字列が格納されます。9バイト分呼 び出し元で準備します。 systype: (GEE以外では“OP_SYSTYPE_NORM”が設定される) ホットスタンバイシステムの場合に、メッセージが発生した時点での運用系、待機系の区別が格納されます。 系区別を以下に示します。 OP_SYSTYPE_NORM: ホットスタンバイシステムではない。 または、ホットスタンバイシステムですが、運用系、待機系がまだ決定していない。 OP_SYSTYPE_MAIN: ホットスタンバイシステムの運用系です。 OP_SYSTYPE_SUB: ホットスタンバイシステムの待機系です。 OP_SYSTYPE_WP: Windows NT(R)のマイクロソフトクラスタシステム運用です。 ext: 発生したメッセージの拡張データが格納されます。 構造体の説明【UNIX版】 拡張データ(EXTENDDATA)の形式 /* * EXTEND DATA */ typedef struct _EXTENDDATA{ unsigned short protype; unsigned char conntype; char rsv1[1]; char jobnum[MPOP_JOBNUMLEN]; char rsv2[3]; char runtype[MPOP_RUNTYPELEN]; char rsv3[3]; unsigned char mailmsgflg; char rsv4[3]; char domkey[MPOP_DOMKEYLEN]; char rsv5[3]; unsigned int IPaddr; unsigned int DMInstallType; unsigned int JMInstallType; unsigned int MW_DM_vl; char MW_DM_suffix[MPOP_SUFFIXLEN]; char MW_DM_updatenum[MPOP_UPDATENUMLEN]; char rsv6[2]; unsigned int MW_JM_vl; char MW_JM_suffix[MPOP_SUFFIXLEN]; char MW_JM_updatenum[MPOP_UPDATENUMLEN]; unsigned char auttrbtkt; - 143 - char }EXTENDDATA; rsv7[1]; protype: リザーブ領域 conntype: リザーブ領域 jobnum: リザーブ領域 runtype: メッセージが発生したシステムの運用形態名が格納されます。 mailmsgflg: 発生したメッセージのメール連携フラグが格納されます。 domkey: DOM拡張キーが格納されます。 DOM拡張キーがない場合は、NULLが格納されます。 IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ DMInstallType: メッセージが発生したシステムのSystemwalker Centric Managerのインストールタイプが格納されます。 JMInstallType: メッセージが発生したシステムのSystemwalker Operation Managerのインストールタイプが格納されます。 MW_DM_vl: メッセージが発生したシステムのSystemwalker Centric Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。 0x00000000 ←→←→←→ a) b) c) a) メジャーバージョン b) マイナーバージョン c) メジャーレベル MW_DM_suffix: メッセージが発生したシステムのSystemwalker Centric Managerのサフィックスが格納されます。 MW_DM_updatenum: メッセージが発生したシステムのSystemwalker Centric Managerのアップデートパック修正番号が格納されます。 MW_JM_vl: メッセージが発生したシステムのSystemwalker Operation Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。形式は、MW_DM_vlと同様です。 - 144 - MW_JM_suffix: メッセージが発生したシステムのSystemwalker Operation Managerのサフィックスが格納されます。 MW_JM_updatenum: メッセージが発生したシステムのSystemwalker Operation Managerのアップデートパック修正番号が格納されます。 Auttrbtkt: リザーブ領域。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenMsg()関数 ・ Mp_CloseMsg()関数 ・ Mp_GetMsgMap()関数【Windows版】 復帰値 【Windows版】 ReadFile()関数の復帰情報がそのまま応答されます。 詳細なエラーコードは、GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 0: 正常終了。メッセージを正常に受信。 -1: 異常終了。詳細なエラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “監視メッセージのAPI”を参照してください。 - 145 - 注意事項 msgtypeがOP_APIMSGTYPENORM(通常メッセージ)、およびOP_APIMSGTYPEHB(高輝度メッセージ)以外のメッセー ジについては、制御用メッセージのため、OS種別が設定されないことがあります。 また、msgtypeがOP_APIMSGTYPENORM(通常メッセージ)、およびOP_APIMSGTYPEHB(高輝度メッセージ)で他製 品との連携時に送付されたメッセージでは、OS種別としてOP_OS_UNKNOWN(不明)が取得されることがあります。 【Windows版】 呼び出し元は、Mp_ReadMsg()関数の第4パラメタの、OVERLAPPED構造体を利用して、イベント受信のオーバラップ 処理を完了し、Mp_GetMsgMap()関数を呼び出してください。 【UNIX版(Linux for Intel64版を除く)】 UTF-8環境で本APIを使用する場合、以下の注意事項があります。 ・ 監視イベント種別(category) 獲得できる監視イベント種別が16バイトになります。17バイト目以降が削除されます。このため、以下のように対応し てください。 - APIを使用するサーバ [イベント監視の条件定義]に、17バイト以上の監視イベント種別を16バイト以下に変更する定義を実施してくださ い。 - 運用管理サーバ この定義を実施した場合、定義した16バイト以下の監視イベント種別を[サーバ環境定義]に追加してください。 ・ DOM拡張キー(domkey) 獲得できるDOM拡張キーが80バイトになります。81バイト目以降が削除されます。このため、Systemwalkerスクリプト のメッセージ監視アクション型スクリプトにおいて、復旧キーに、文字コードUTF-8に変換したときに80バイト以内とな るキーを指定してください。 IPv6通信を行って通知されたメッセージについては、メッセージ発生元システムのIPアドレスを取得することはできませ ん。 動作環境による差異 以下のインストール種別で使用可能です。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7(注) ・ クライアント: Windows Vista(R)/Windows(R) 7(注) 注)システム監視エージェントインストール選択時 4.37 Mp_ReadMsgLog()関数 機能説明 Mp_OpenMsgLog()関数発行後、Mp_ReadMsgLog()関数を発行することによりロギングされたメッセージを、1メッセー ジずつ読み出します。 - 146 - 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opagt_api.h> int Mp_ReadMsgLog( fp, hostxflg, level, time1, node, NodeID, DatabaseID, time2, category, msgtext, blkno, msgtype, ostype, submsgnum, voicenum, msgcolor, backcolor, domtype, domnum, replyid, systype,ext ); HANDLE fp; unsigned char *hostxflg; short *level; time_t *time1; char *node; DWORD *NodeID; DWORD *DatabaseID; time_t *time2; char *category; char *msgtext; unsigned short *blkno; unsigned short *msgtype; unsigned short *ostype; unsigned short *submsgnum; unsigned short *voicenum; unsigned char *msgcolor; unsigned char *backcolor; unsigned short *domtype; long *domnum; char *replyid; unsigned char *systype; EXTENDDATA *ext; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* Mp_OpenMsgLog()で獲得したハ */ ンドルを指定する */ 強制表示フラグの格納領域のア*/ ドレスを指定する */ メッセージの重要度格納領域の*/ アドレスを指定する */ メッセージが自システムに通知*/ された日時格納領域のアドレス*/ を指定する */ メッセージが出力されたシステ*/ ム名 */ 格納領域のアドレスを指定する*/ リザーブ領域 */ リザーブ領域 */ メッセージが出力された日時格*/ 納領域のアドレスを指定する */ メッセージの種別格納領域のア*/ ドレスを指定する */ メッセージ格納領域のアドレス*/ を指定する */ メッセージのブロック番号格納*/ 領域のアドレスを指定する */ メッセージ種別格納領域のアド*/ レスを指定する */ OS種別格納領域のアドレスを指*/ 定する */ 補助説明文番号格納領域のアド*/ レスを指定する */ 音声番号格納領域のアドレスを*/ 指定する */ 文字色格納領域のアドレスを指*/ 定する */ 背景色格納領域のアドレスを指*/ 定する */ DOM種別格納領域のアドレスを */ 指定する */ DOM番号格納領域のアドレスを */ 指定る */ 返答識別子格納領域のアドレス*/ を指定する */ 系区別格納領域のアドレスを指*/ 定する */ 拡張データ格納領域のアドレス*/ を指定する */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_ReadMsgLog( fp, hostxflg, level, time1, node, NodeID, DatabaseID, time2, category, msgtext, blkno, msgtype, ostype, submsgnum, voicenum, msgcolor, backcolor, domtype, domnum, replyid, systype,ext ); int fp; /* Mp_OpenMsgLog()で獲得したハ */ - 147 - unsigned char *hostxflg; short *level; time_t *time1; char *node; DWORD *NodeID; DWORD *DatabaseID; time_t *time2; char *category; char *msgtext; unsigned short *blkno; unsigned short *msgtype; unsigned short *ostype; unsigned short *submsgnum; unsigned short *voicenum; unsigned char *msgcolor; unsigned char *backcolor; unsigned short *domtype; long *domnum; char *replyid; unsigned char *systype; EXTENDDATA *ext; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* ンドルを指定する */ 強制表示フラグの格納領域のア*/ ドレスを指定する */ メッセージの重要度格納領域の*/ アドレスを指定する */ メッセージが自システムに通知*/ された日時格納領域のアドレス*/ を指定する */ メッセージが出力されたシステ*/ ム名 */ 格納領域のアドレスを指定する*/ リザーブ領域 */ リザーブ領域 */ メッセージが出力された日時格*/ 納領域のアドレスを指定する */ メッセージの種別格納領域のア*/ ドレスを指定する */ メッセージ格納領域のアドレス*/ を指定する */ メッセージのブロック番号格納*/ 領域のアドレスを指定する */ メッセージ種別格納領域のアド*/ レスを指定する */ OS種別格納領域のアドレスを指*/ 定する */ 補助説明文番号格納領域のアド*/ レスを指定する */ 音声番号格納領域のアドレスを*/ 指定する */ 文字色格納領域のアドレスを指*/ 定する */ 背景色格納領域のアドレスを指*/ 定する */ DOM種別格納領域のアドレスを */ 指定する */ DOM番号格納領域のアドレスを */ 指定る */ 返答識別子格納領域のアドレス*/ を指定する */ 系区別格納領域のアドレスを指*/ 定する */ 拡張データ格納領域のアドレス*/ を指定する */ 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opagt_api.h> int Mp_ReadMsgLog( fp, hostxflg, level, time1, node, NodeID, DatabaseID, time2, category, msgtext, blkno, msgtype, ostype, submsgnum, voicenum, msgcolor, backcolor, domtype, domnum, replyid, systype, ext ); int fp; unsigned char *hostxflg; short *level; time_t *time1; char *node; /* /* /* /* /* /* /* /* /* /* /* Mp_OpenMsgLog()で獲得した */ ファイル記述子を指定する */ 強制表示フラグの格納領域のア*/ ドレスを指定する */ メッセージの重要度格納領域の*/ アドレスを指定する */ メッセージが自システムに通知*/ された日時格納領域のアドレス*/ を指定する */ メッセージが出力されたシステ*/ ム名格納領域のアドレスを指定*/ - 148 - unsigned long *NodeID; unsigned long *DatabaseID; time_t *time2; char *category; char *msgtext; unsigned short *blkno; unsigned short *msgtype; unsigned short *ostype; unsigned short *submsgnum; unsigned short *voicenum; unsigned char *msgcolor; unsigned char *backcolor; unsigned short *domtype; long *domnum; char *replyid; unsigned char *systype; EXTENDDATA *ext; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* する */ リザーブ領域 */ リザーブ領域 */ メッセージが出力された日時格*/ 納領域のアドレスを指定する */ メッセージの種別格納領域のア*/ ドレスを指定する */ メッセージ格納領域のアドレス*/ を指定する */ メッセージのブロック番号格納*/ 領域のアドレスを指定する */ メッセージ種別格納領域のアド*/ レスを指定する */ OS種別格納領域のアドレスを指*/ 定する */ 補助説明文番号格納領域のアド*/ レスを指定する */ 音声番号格納領域のアドレスを*/ 指定する */ 文字色格納領域のアドレスを指*/ 定する */ 背景色格納領域のアドレスを指*/ 定する */ DOM種別格納領域のアドレスを */ 指定する */ DOM番号格納領域のアドレスを */ 指定る */ 返答識別子格納領域のアドレス*/ を指定する */ 系区別格納領域のアドレスを指*/ 定する */ 拡張データ格納領域のアドレス*/ を指定する */ 【Linux for Intel64版】 #include <mp_opagt_api.h> int Mp_ReadMsgLog( fp, hostxflg, level, time1, node, NodeID, DatabaseID, time2, category, msgtext, blkno, msgtype, ostype, submsgnum, voicenum, msgcolor, backcolor, domtype, domnum, replyid, systype, ext ); long fp; unsigned char *hostxflg; short *level; time_t *time1; char *node; unsigned long *NodeID; unsigned long *DatabaseID; time_t *time2; char *category; char *msgtext; unsigned short *blkno; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* Mp_OpenMsgLog()で獲得した */ ファイル記述子を指定する */ 強制表示フラグの格納領域のア*/ ドレスを指定する */ メッセージの重要度格納領域の*/ アドレスを指定する */ メッセージが自システムに通知*/ された日時格納領域のアドレス*/ を指定する */ メッセージが出力されたシステ*/ ム名格納領域のアドレスを指定*/ する */ リザーブ領域 */ リザーブ領域 */ メッセージが出力された日時格*/ 納領域のアドレスを指定する */ メッセージの種別格納領域のア*/ ドレスを指定する */ メッセージ格納領域のアドレス*/ を指定する */ メッセージのブロック番号格納*/ - 149 - unsigned short *msgtype; unsigned short *ostype; unsigned short *submsgnum; unsigned short *voicenum; unsigned char *msgcolor; unsigned char *backcolor; unsigned short *domtype; long *domnum; char *replyid; unsigned char *systype; EXTENDDATA *ext; /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* 領域のアドレスを指定する */ メッセージ種別格納領域のアド*/ レスを指定する */ OS種別格納領域のアドレスを指*/ 定する */ 補助説明文番号格納領域のアド*/ レスを指定する */ 音声番号格納領域のアドレスを*/ 指定する */ 文字色格納領域のアドレスを指*/ 定する */ 背景色格納領域のアドレスを指*/ 定する */ DOM種別格納領域のアドレスを */ 指定する */ DOM番号格納領域のアドレスを */ 指定る */ 返答識別子格納領域のアドレス*/ を指定する */ 系区別格納領域のアドレスを指*/ 定する */ 拡張データ格納領域のアドレス*/ を指定する */ パラメタ fp: Mp_OpenMsgLog()で獲得したハンドル、またはファイル識別子を指定します。 hostxflg: リザーブ領域。 charの領域を確保し、そのアドレスを指定してください。 level: 発生したメッセージの重要度レベルが格納されます。 MPOP_RE_SPEMG : 最重要 MPOP_RE_EMG : 重要 MPOP_RE_WARN : 警告 MPOP_RE_NOTICE : 通知 MPOP_RE_MSG : 一般 time1: メッセージがメッセージログに格納された日時が格納されます。ただし、日時が正しく獲得できなかったときは、以下 の値が設定されています。 日付、時刻とも獲得できない場合: 0x00FFFFFF 日付だけ獲得できない場合: 0x00hhmmss - 150 - hh: 時(0x00 ~0x17) mm: 分(0x00 ~0x3B) ss: 秒(0x00 ~0x3B) node: メッセージが発生したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 time2: nodeで示されたシステムでメッセージが出力された日時が格納されます。日時が正しく獲得できなかったときは、time1 と同様の設定となります。 category: 発生したメッセージの監視イベント種別が格納されます。 MPOP_CATEGORYLENバイト分呼び出し元で準備します。 msgtext: 発生したメッセージテキストが格納されます。 2048バイト分呼び出し元で準備します。 メッセージ長が2047バイトを超える場合は、2047バイト以降は破棄されます。 blkno: マルチラインメッセージのように、複数のメッセージで意味をもつ場合に、複数メッセージをブロック化するための番号 が格納されます。 単一メッセージの場合は、OP_ONLYBLK(0x0000)が格納され、マルチラインメッセージの場合は、0x0001~0xFFFF が格納されます。 ブロックの最後のメッセージには、必ずOP_MLTBLK_END(0xFFFF)が格納されます。 msgtype: 発生したメッセージのメッセージ種別が格納されます。 メッセージ種別を以下に示します。 OP_APIMSGTYPENORM: 通常メッセージ OP_APIMSGTYPEREP: 返答要求メッセージ OP_APIMSGTYPEHB: 高輝度メッセージ OP_APIMSGTYPEDEL: メッセージ削除データ(以下、DOMデータという) OP_APIMSGTYPESTAT: システム監視エージェントサービス起動メッセージ OP_APIMSGTYPESTOP: システム監視エージェントサービス停止メッセージ OP_APIMSGTYPECHNG: システム状態変更メッセージ ostype: 発生したメッセージのOS種別が格納されます。 OS種別を以下に示します。 - 151 - OP_UXPDS: UXP/DS OP_SOLARIS1: Solaris1.x系 OP_SOLARIS2: Solaris2.x系 OP_HPUX10: HP-UX OP_AIX: AIX OP_MVS: MVS OP_LINUX: Linux OP_UXPM: UXP/M OP_UXPVPP: UXP/VPP OP_WINDOWS2000: Windows(R) 2000 OP_WINDOWSNT: Windows NT(R) OP_WINNTSERVER: Windows NT(R) Server OP_WINNTWS: Windows NT(R) Workstation OP_WINDOWS31 : Microsoft(R) Windows(R) 3.1, Microsoft(R) Windows(R) 3.11, Microsoft(R) Windows(R) for Workgroups 3.11 OP_WINDOWS95: Windows(R) 95 OP_WINDOWS98: Windows(R) 98 OP_WINDOWSXP: Windows(R) XP OP_SXO: SXO OP_SYMFOWAREPS: Symfoware(R) Parallel Server OP_RAID: RAID - 152 - OP_MSPE20: MSP E20 OP_MSPAF2: MSP AFII OP_XSPAF2: XSP AFII OP_AVMEX: AVM/EX OP_FTOPS2: FTOPS-II OP_MVSG: MVS 系(IBM、および他社互換機) OP_MSERV: ホスト連携オプション OP_ASP: ASP OP_WINDOWSSV2003 : Windows Server(R) 2003 OP_WINDOWSVISTA: Windows Vista(R) OP_WINDOWSSV2008: Windows Server(R) 2008 OP_WINDOWS7: Windows(R) 7 OP_WINDOWS7UL: Windows(R) 7 Ultimate OP_WINDOWS2012: Windows Server (R) 2012 OP_WINDOWS8: Windows (R) 8 (Windows (R) 8.1以外) OP_WINDOWS81: Windows (R) 8.1 OP_WINDOWS8RT: Windows (R) RT OP_OS_UNKNOWN: 不明 submsgnum: GEEおよびUNIX版集中監視マネージャのGS連携オプションが使用する、メッセージの補助説明文の番号が格納さ れます。 この値は、GEEおよびGS連携オプション以外では使用しません(Windowsでは無効)。 - 153 - voicenum: UNIX版集中監視マネージャで音声を出力する場合の、音声に対する番号が格納されます。 音声出力機能は未サポートです(Windowsでは無効)。 msgcolor: [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの文字の色が格納されます。 文字色の種類を以下に示します。 OP_COLOR_BLACK: 黒色 OP_COLOR_WHITE: 白色 OP_COLOR_RED: 赤色 OP_COLOR_GREEN: 緑色 OP_COLOR_BLUE: 青色 OP_COLOR_YELLOW: 黄色 OP_COLOR_LIGHTBLUE: 明青色 OP_COLOR_PURPLE: 紫色 OP_COLOR_DARKGRAY: 濃い灰色 OP_COLOR_ORANGE: 黄緑色 OP_COLOR_SKYBLUE: 空色 OP_COLOR_PINK: 桃色 OP_COLOR_PALEGREEN: 青緑色 OP_COLOR_BROWN: 茶色 OP_COLOR_GRAY: 淡い灰色 OP_COLOR_CREAM: 黄土色 OP_COLOR_DEF: メッセージ属性に応じた初期設定色 - 154 - backcolor: [Systemwalkerコンソール]の[監視イベント一覧]に表示する、メッセージの背景色が格納されます。 文字色の種類はmsgcolorと同じです。 domtype: 返答要求メッセージ、および高輝度メッセージの種類が格納されます。 DOM種別を以下に示します。 OP_NORMDOM: 返答要求メッセージ、および高輝度メッセージ以外です。 OP_NIPDOM: NIPDOMです。MSPのNIP時のメッセージ、およびDOMデータです(Windowsでは無効)。 OP_MSPDOM: MSPDOMです。MSPの通常時のメッセージ、およびDOMデータです(Windowsでは無効)。 OP_XSPDOM: XSPのNIP時以外の返答要求メッセージ、高輝度メッセージ、およびDOMデータです。 OP_WORKITDOM: WORKITDOMです。BS*NET/WORKITが通知する返答要求メッセージ、およびDOMデータです。 OP_ASPDOM: ASPが通知する返答要求メッセージ、高輝度メッセージ、およびDOM データです。 OP_APLDOM: Systemwalker Centric Managerアプリケーションが通知するDOM対応メッセージ、およびDOMデータです。 OP_WTORDOM :【UNIX】 返答メッセージ機能が通知するDOM対応メッセージ、およびDOMデータです。 domnum: 返答要求メッセージ、および高輝度メッセージの場合に、メッセージとDOMデータとの対応をとるための番号が格納 されます。 この番号は、メッセージ発生システム内でDOM種別ごとに一意です。 replyid: 返答要求メッセージに対してコマンドで返答するときの、メッセージを識別するための文字列が格納されます。 9バイト分呼び出し元で準備します。 systype: ホットスタンバイシステムの場合に、メッセージが発生した時点での運用系、待機系の区別が格納されます。 系区別を以下に示します。 OP_SYSTYPE_NORM : ホットスタンバイシステムではない。または、ホットスタンバイシステムですが、運用系、待機系がまだ決定していま せん。 OP_SYSTYPE_MAIN : ホットスタンバイシステムの運用系です。 OP_SYSTYPE_SUB : ホットスタンバイシステムの待機系です。 OP_SYSTYPE_WP : Windows NT(R)のマイクロソフトクラスタシステムの運用です。 - 155 - ext: 発生したメッセージの拡張データが格納されます。 構造体の形式 拡張データ(EXTENDDATA)の形式 【Windows版】 /* * EXTEND DATA */ typedef struct _EXTENDDATA { char runtype[MPOP_RUNTYPELEN]; unsigned char mailmsgflg; char rsv1[2]; DWORD DatabaseID; unsigned int IPaddr; DWORD DMInstallType; DWORD JMInstallType; DWORD MW_DM_vl; char MW_DM_suffix[MPOP_SUFFIXLEN]; char MW_DM_updatenum[MPOP_UPDATENUMLEN]; DWORD MW_JM_vl; char MW_JM_suffix[MPOP_SUFFIXLEN]; char MW_JM_updatenum[MPOP_UPDATENUMLEN]; unsigned char auttrbtkt; char domkey[MPOP_DOMKEYLEN]; } EXTENDDATA; 【UNIX版】 /* * EXTEND DATA */ typedef struct _EXTENDDATA { unsigned short protype; unsigned char conntype; char rsv1[1]; char jobnum[MPOP_JOBNUMLEN]; char rsv2[3]; char runtype[MPOP_RUNTYPELEN]; char rsv3[3]; unsigned char mailmsgflg; char rsv4[3]; char domkey[MPOP_DOMKEYLEN]; char rsv5[3]; unsigned int IPaddr; unsigned int DMInstallType; unsigned int JMInstallType; unsigned int MW_DM_vl; char MW_DM_suffix[MPOP_SUFFIXLEN]; char MW_DM_updatenum[MPOP_UPDATENUMLEN]; char rsv6[2]; DWORD MW_JM_vl; char MW_JM_suffix[MPOP_SUFFIXLEN]; char MW_JM_updatenum[MPOP_UPDATENUMLEN]; unsigned char auttrbtkt; char rsv7[1]; } EXTENDDATA; - 156 - protype:【UNIX版】 リザーブ conntype:【UNIX版】 リザーブ jobnum:【UNIX版】 リザーブ runtype: メッセージが発生したシステムの運用形態名が格納されます。 mailmsgflg: 発生したメッセージのメール連携フラグが格納されます。 domkey: DOM拡張キーが格納されます。 DOM拡張キーがない場合は、NULLが格納されます。 DatabaseID:【Windows版】 リザーブ領域。 IPaddr: メッセージが発生したシステムのIPアドレスが格納されます。 IPアドレスがない場合は、0が格納されます。 以下のようなSystemwalker Centric Managerの連携製品から通知されたメッセージについては、「0」が格納されます。 - FUJITSU Storage ETERNUS SF Storage Cruiser 「SSC:」で始まるメッセージ - System Console Software 「FJSVcsl:」で始まるメッセージ DMInstallType: メッセージが発生したシステムのSystemwalker Centric Managerのインストールタイプが格納されます。 JMInstallType: メッセージが発生したシステムのSystemwalker Operation Managerのインストールタイプが格納されます。 MW_DM_vl: メッセージが発生したシステムのSystemwalker Centric Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。 0x00000000 ←→←→←→ a) b) c) a) メジャーバージョン b) マイナーバージョン c) メジャーレベル MW_DM_suffix: メッセージが発生したシステムのSystemwalker Centric Managerのサフィックスが格納されます。 MW_DM_updatenum: メッセージが発生したシステムのSystemwalker Centric Managerのアップデートパック修正番号が格納されます。 MW_JM_vl: メッセージが発生したシステムのSystemwalker Operation Managerのメジャーバージョン、マイナーバージョン、メジャー レベルが格納されます。形式は、MW_DM_vlと同様です。 - 157 - MW_JM_suffix: メッセージが発生したシステムのSystemwalker Operation Managerのサフィックスが格納されます。 MW_JM_updatenum: メッセージが発生したシステムのSystemwalker Operation Managerのアップデートパック修正番号が格納されます。 Auttrbtkt: リザーブ領域。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 参照 以下のシステム監視のAPIを参照してください。 ・ Mp_OpenMsgLog()関数 ・ Mp_CloseMsgLog()関数 復帰値 1: 正常終了。メッセージを正常に獲得。 0: 正常終了。メッセージをすべて獲得。 -1: 異常終了。 備考 異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されます。 【UNIX版】 エラーコードはerrnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.hに 定義されている値が設定されます。 - 158 - API格納場所 “監視メッセージのAPI”を参照してください。 注意事項 拡張データの各メンバの値は、SystemWalker/CentricMGR V4.0L10以前のシステムで発生したメッセージには設定され ません。 msgtypeがOP_APIMSGTYPENORM(通常メッセージ)、およびOP_APIMSGTYPEHB(高輝度メッセージ)以外のメッセー ジについては、制御用メッセージのため、OS種別が設定されないことがあります。 また、msgtypeがOP_APIMSGTYPENORM(通常メッセージ)、およびOP_APIMSGTYPEHB(高輝度メッセージ)で他製 品との連携時に送付されたメッセージでは、OS種別としてOP_OS_UNKNOWN(不明)が取得されることがあります。 【UNIX版(Linux for Intel64版を除く)の場合】 UTF-8環境で本APIを使用する場合、以下の注意事項があります。 ・ 監視イベント種別(category) 獲得できる監視イベント種別が16バイトになります。17バイト目以降が削除されます。このため、以下のように対応し てください。 - APIを使用するサーバ [イベント監視の条件定義]に、17バイト以上の監視イベント種別を16バイト以下に変更する定義を実施してくださ い。 - 運用管理サーバ この定義を実施した場合、定義した16バイト以下の監視イベント種別を[サーバ環境定義]に追加してください。 ・ DOM拡張キー(domkey) 獲得できるDOM拡張キーが80バイトになります。81バイト目以降が削除されます。 このため、Systemwalkerスクリプトのメッセージ監視アクション型スクリプトにおいて、復旧キーに、文字コードUTF-8 に変換したときに80バイト以内となるキーを指定してください。 IPv6通信を行って通知されたメッセージについては、メッセージ発生元システムのIPアドレスを取得することはできませ ん。 動作環境による差異 以下のインストール種別で使用可能です。 ・ 運用管理サーバ ・ 部門管理サーバ ・ 業務サーバ ・ 運用管理クライアント: Windows Vista(R)/Windows(R) 7(注) ・ クライアント: Windows Vista(R)/Windows(R) 7(注) 注)システム監視エージェントインストール選択時 4.38 Mp_ReadRemoteCmdLog()関数 機能説明 Mp_OpenRemoteCmdLog()発行後、Mp_ReadRemoteCmdLog()関数を発行することにより、ロギングされたコマンドデー タを1行ずつ読み出します。 - 159 - 呼び出し形式 【Windows x64版で64ビットのアプリケーションを作成する場合】 #include <mp_opagt_api.h> int Mp_ReadRemoteCmdLog( fp, id, logtime, status, text, node, NodeID, DatabaseID ); HANDLE fp; /* Mp_OpenRemoteCmdLog()で獲得したファイル */ /* 識別子を指定する */ int *id; /* コマンド要求とコマンド応答を対応付ける */ /* 識別子の格納領域のアドレスを指定する */ time_t *logtime; /* コマンドデータが自システムに通知された */ /* 日時の格納領域のアドレスを指定する */ int *status; /* ステータスの格納領域のアドレスを指定する*/ char *text; /* 要求コマンドテキスト,コマンドの実行結果,*/ /* 詳細コードの格納領域のアドレスを指定する*/ char *node; /* コマンド要求先システムまたはコマンドを応*/ /* 答したシステムのノード名の格納領域のアド*/ /* レスを指定する */ DWORD *NodeID; /* NULLを指定する */ DWORD *DatabaseID; /* NULLを指定する */ 【Windows版(Windows x64版以外)の場合】 #include <mp_opagt_api.h> int Mp_ReadRemoteCmdLog( fp, id, logtime, status, text, node, NodeID, DatabaseID ); int fp; /* Mp_OpenRemoteCmdLog()で獲得したファイル */ /* 識別子を指定する */ int *id; /* コマンド要求とコマンド応答を対応付ける */ /* 識別子の格納領域のアドレスを指定する */ time_t *logtime; /* コマンドデータが自システムに通知された */ /* 日時の格納領域のアドレスを指定する */ int *status; /* ステータスの格納領域のアドレスを指定する*/ char *text; /* 要求コマンドテキスト,コマンドの実行結果,*/ /* 詳細コードの格納領域のアドレスを指定する*/ char *node; /* コマンド要求先システムまたはコマンドを応*/ /* 答したシステムのノード名の格納領域のアド*/ /* レスを指定する */ DWORD *NodeID; /* NULLを指定する */ DWORD *DatabaseID; /* NULLを指定する */ 【UNIX版(Linux for Intel64版を除く)の場合】 #include <mp_opagt_api.h> int Mp_ReadRemoteCmdLog( fp, id, logtime, status, text, node, rsv ); int fp; /* /* int *id; /* /* time_t *logtime; /* /* int *status; /* char *text; /* /* char *node; /* /* /* char *rsv; /* Mp_OpenRemoteCmdLog()で獲得したファイル */ 識別子を指定する */ コマンド要求とコマンド応答を対応付ける */ 識別子の格納領域のアドレスを指定する */ コマンドデータが自システムに通知された日*/ 時の格納領域のアドレスを指定する */ ステータスの格納領域のアドレスを指定する*/ 要求コマンドテキスト,コマンドの実行結果,*/ 詳細コードの格納領域のアドレスを指定する*/ コマンド要求先システムまたはコマンドを応*/ 答したシステムのノード名の格納領域のアド*/ レスを指定する */ NULLを指定する */ - 160 - 【Linux for Intel64版】 #include <mp_opagt_api.h> int Mp_ReadRemoteCmdLog( fp, id, logtime, status, text, node, rsv ); long fp; /* /* int *id; /* /* time_t *logtime; /* /* int *status; /* char *text; /* /* char *node; /* /* /* char *rsv; /* Mp_OpenRemoteCmdLog()で獲得したファイル */ 識別子を指定する */ コマンド要求とコマンド応答を対応付ける */ 識別子の格納領域のアドレスを指定する */ コマンドデータが自システムに通知された日*/ 時の格納領域のアドレスを指定する */ ステータスの格納領域のアドレスを指定する*/ 要求コマンドテキスト,コマンドの実行結果,*/ 詳細コードの格納領域のアドレスを指定する*/ コマンド要求先システムまたはコマンドを応*/ 答したシステムのノード名の格納領域のアド*/ レスを指定する */ NULLを指定する */ パラメタ fp: Mp_OpenRemoteCmdLog()で獲得したファイル識別子を指定します。 id: Mp_ExecRemoteCmd()の復帰コードに対応する識別子が格納されます。 これにより、どのコマンド要求に対するコマンド応答かを識別することができます。 logtime: システム監視エージェントサービスがコマンドログファイルに格納した日時が格納されます。 status: statusは、コマンドデータの種別です。応答ステータスには、以下のものがあり、どれかの値が格納されます。 コマンド要求 STATUS_IN: コマンドの発行要求です。 コマンド結果応答 STATUS_OUT: 標準出力に出力されたコマンドの結果です。 STATUS_ERR: 標準エラー出力に出力されたコマンドの結果です。 コマンド最終応答 STATUS_END: コマンド応答が正常に終了しました(復帰コードあり)。 STATUS_AED: コマンド応答が終了しました(異常終了等)。 text: statusがコマンド要求の場合、発行されたコマンドテキストが格納されます。 statusがコマンド結果応答、およびコマンド最終応答の場合、textには、Mp_GetRemoteCmdMap()のパラメタrespと同 じ値が格納されます。 2048バイト分呼び出し元で準備します。 - 161 - node: statusがコマンド要求の場合はコマンド要求先のシステムのノード名、statusがコマンド結果応答、およびコマンド最終 応答の場合はコマンドを応答したシステムのノード名が格納されます。 MPOP_NODENAMELENバイト分呼び出し元で準備します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 復帰値 1: 正常終了。コマンドデータを正常に獲得。 0: 正常終了。コマンドデータをすべて獲得。 -1: 異常終了。異常終了した場合の詳細なエラーコードは、以下の方法で取得/参照してください。 【Windows版】 GetLastError()で取得してください。 Systemwalkerインストールディレクトリ\MPWALKER.DM\Include\mp_operr_api.hに定義されている値が設定されま す。 【UNIX版】 エラーコードは、errnoに設定されます。 errnoには、システムのエラーコード(/usr/include/sys/errno.hに定義)、または/opt/systemwalker/include/mp_operr_api.h に定義されている値が設定されます。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.39 Mp_RespRemoteCmd()関数 機能説明 【Windows版】 Mp_ExecRemoteCmd()関数発行後、Mp_RespRemoteCmd()関数とMp_GetRemoteCmdMap()関数を組み合わせて発 行することにより、コマンド実行結果を1行ずつ読み出します。 - 162 - Mp_RespRemoteCmd()関数は、システム監視エージェントサービスに対して、コマンド実行結果の受信を要求し、すぐ に呼び出し元に戻ります。 呼び出し元は、Mp_RespRemoteCmd()関数の第2パラメタの、OVERLAPPED構造体を利用して、コマンド結果受信の オーバラップ処理を完了してから、Mp_GetRemoteCmdMap()関数を呼び出してください。 【UNIX版】 Mp_ExecRemoteCmd()関数発行後、Mp_RespRemoteCmd()関数を発行することにより、コマンド実行結果を1行ずつ 読み出します。 Mp_RespRemoteCmd()関数は、システム監視エージェントサービスに対して、コマンド実行結果の受信を要求し、すぐ に呼び出し元に戻ります。 呼び出し形式 【Windows版】 #include <mp_opagt_api.h> BOOL Mp_RespRemoteCmd(fp, olr, buf); HANDLE fp; OVERLAPPED *olr; char *buf; /* /* /* /* /* Mp_OpenRemoteCmd()で獲得したハンドル */ コマンド実行結果受信の非同期I/O で使用*/ するOVERLAPPED構造体のアドレス */ 受信データのヘッダ部分を格納する */ 領域(12バイト)のアドレス */ 【UNIX版】 #include <mp_opagt_api.h> int Mp_RespRemoteCmd(fp, id, status, resp, node, rsv); int int fp; *id; int *status; char *resp; char *node; char *rsv; /*Mp_OpOpenRemoteCmd()で獲得したファイル記述子*/ /*コマンド要求に対応する記述子格納領域のアドレ*/ /*ス */ /*応答ステータス格納領域のアドレス */ /*コマンドの実行結果、詳細コード格納領域のアド*/ /*レス */ /*コマンドを応答したシステム名格納領域のアドレ*/ /*ス */ /*リザーブ領域 */ パラメタ 【Windows版】 fp: Mp_OpenRemoteCmd()で獲得したハンドルを指定します。 olr: メッセージ実行結果受信の非同期で使用するOVERLAPPED構造体のアドレスを指定します。 buf: 受信データのヘッダ部分だけを格納する領域アドレスを指定します。12バイト分呼び出し元で準備します。 【UNIX版】 fp: Mp_OpenRemoteCmd()で獲得した記述子を指定します。 id: Mp_ExecRemoteCmd()によるコマンド要求の戻り値に対応させる記述子格納領域のアドレスを指定します。 - 163 - status: statusは、コマンドデータの種別です。応答ステータスには、以下のものがあり、どれかの値が格納されます。 コマンド結果応答 STATUS_OUT: 標準出力に出力されたコマンドの結果です。 STATUS_ERR: 標準エラー出力に出力されたコマンドの結果です。 コマンド最終応答 STATUS_END: コマンド応答が正常に終了しました(復帰コードあり)。 STATUS_AED: コマンド応答が終了しました(異常終了等)。 resp: statusがコマンド結果応答の場合、実行されたコマンドの出力結果が格納されます。2048バイト分呼び出し元で準備 します。statusがコマンド最終応答の場合、先頭4バイトにコマンドの詳細コードが格納されます。 応答ステータスがSTATUS_ENDの場合、詳細コードは以下の関数を使用して獲得してください。 ・コマンドの終了状態 WIFEXITED ・コマンドの終了コード WEXITSTATUS 上記関数の詳細については、wait関数関連のマニュアルを参照してください。 応答ステータスがSTATUS_AEDの場合、詳細コードは、以下に示すコードのどれかです。 OP_RSPINFO_ABE: コマンド実行中にシステムが停止しました。 OP_RSPINFO_NDE: 要求されたシステムが停止しています。 OP_RSPINFO_EXECERR: 資源不足等でコマンドの実行に失敗しました。 OP_RSPINFO_RSPERR: コマンドは実行しましたが、その結果の獲得に失敗しました。 OP_RSPINFO_TPH: 通信パスに異常が発生しました。 OP_RSPINFO_LEN: コマンド実行結果のテキストが長すぎて処理できません。 OP_RSPINFO_CEK: ハードウェアが保守中のため、コマンドを投入できません。 OP_RSPINFO_LOC: キーボードロック中で、コマンドを投入できません。 OP_RSPINFO_PAR: 内部論理エラーが発生しました。 - 164 - OP_RSPINFO_AOT: タイムアウトが発生しました。 OP_RSPINFO_EXC: コマンドの送信に失敗しました。 OP_RSPINFO_SDW: FTOPSII(SYSCOM)がスローダウンしました。 OP_RSPINFO_RST: アテンションリセット中断が発生しました。 OP_RSPINFO_LOWERLEVEL: 機能レベルが低いために、コマンドを投入できません。 OP_RSPINFO_FTOPS2: FTOPSIIへのコマンド投入は不可能です。 OP_RSPINFO_END: コマンド応答が正常に終了しました(復帰コードなし)。 OP_RSPINFO_NOANSPART: 下位システムのシステム監視エージェントサービスが停止しているために、コマンドを投入できません。 OP_RSPINFO_NOANSRAS: 下位システムのシステム監視エージェントサービスが停止しているか、RASによる接続処理が行われていないた めに、コマンドを投入できません。 OP_RSPINFO_NOHST: 下位システムのIPアドレスが未定義のために、コマンドを投入できません。 OP_RSPINFO_CONREQ: 下位システムに対して接続依頼中のために、コマンドを投入できません。 node: コマンドを応答したシステム名格納領域のアドレスを指定します。 実行に必要な権限/実行環境 【Windows版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必要 です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、Administrator権限が必要です。 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 ・ 運用管理クライアント/クライアントでは、[イベント監視]を選択インストールしたとき実行可能です。 復帰値 【Windows版】 - 165 - ReadFile()関数の復帰情報がそのまま応答されます。詳細なエラーコードは、GetLastError()で取得してください。 【UNIX版】 0: 正常。コマンド実行結果を正常に受信。 -1: 異常。内部動作異常。 API格納場所 “リモートコマンドのAPI”を参照してください。 4.40 Mp_SendEMail()関数 機能説明 E-mailの送信を要求します。 呼び出し形式 long Mp_SendEMail(unsigned char *AppName,MpAddress *AddressList, int nAddressList,MpDataList *MailData, int nMailData,char *FromAddress, unsigned char *MailTitle, char *SMTPServer) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 AddressList: あて先情報構造体(MpAddress)のアドレスを指定します。 複数指定する場合は、配列で指定します。 nAddressList: AddressListに指定したアドレスの数(配列数)を指定します。 MailData: メール送信データ情報構造体(MpDataList)のアドレスを指定します。複数のデータを送信する場合は、配列で指定 します。 nMailData: MailDataに指定した配列数を指定します。 FromAddress: メール送信元のメールアドレスを指定します。 NULLを指定した場合は、省略値を使用します。 MailTitle: メールのタイトルを指定します。 SMTPServer: SMTPサーバ名を指定します。 NULLを指定した場合は、省略値を使用します。 - 166 - 構造体の説明 あて先情報構造体(MpAddress)の形式 typedef struct MpAddress_tag { int type : unsigned char *address ; char *addrid ; } MpAddress ; type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: 送信先のメールアドレスです。 TYPE_NAME: あて先名です。 address: メールアドレスまたはあて先名のアドレスを指定します。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 メール送信データ情報構造体(MpDataList)の形式 typedef struct MpDataList_tag { int type ; unsigned char *data ; } MpDataList ; type: dataに指定するデータの種別を指定します。 TYPE_LMEMORY: メモリデータです。 TYPE_FILENAME: ファイル名です。 TYPE_TEMPFILE: ファイル名(メール送信が正常終了したあと、アクション管理がファイルを削除する)です。 data: TYPE_LMEMORY の 場 合 は 、 2048 バ イ ト 以 内 で メ モ リ デ ー タ を 指 定 し ま す 。 TYPE_FILENAME 、 お よ び TYPE_TEMPFILEの場合は、260バイト以内で送信するファイル名を指定します。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 - 167 - MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効なメールアドレスがありません。 あて先情報構造体(MpAddress)に指定した address に誤りがあります。正しいあて先名に変更してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 備考 ・ メールデータの先頭に指定されたデータは、メールの本体(テキスト)として送信します。メールの本体部がない場合 は、先頭の配列のメンバdataにNULLを指定します。 ・ メールデータにTYPE_LMEMORYは1つだけ指定できます。 また、TYPE_LMEMORYは配列の先頭に指定する必要があります。 ・ メモリデータは、'\0'で終了させます。 改行は、CR(0x0d)+LF(0x0a)のコードで行います。 - 168 - ・ メール本体にSJISコード、またはEUCコードが指定されている場合は、テキストは、ISO-2022-JP形式に変換後、 送信します。添付ファイルは、Base64の形式に変換して送信します。 使用例 E-Mail送信APIの使用例を以下に示します。 【Windows版】 #include "f3crhxac.h" unsigned char *AppName MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata; char *FromAddr unsigned char *Title char *SMTPSrv long lrc ; = "E-Mail送信API" ; // 依頼元アプリケーション名 // 送信先アドレス格納域 = "Systemwalker@fujitsu.co.jp" ; = "System Report" ; = NULL ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator@fujitsu.co.jp" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01 @fujitsu.co.jp" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data ndata = 2 ; = = = = // 送信先アドレス // メールタイトル // 省略値を使用 // ユーザ operatorとuser01に // メッセージを送信する TYPE_LMEMORY ; // 送信データの設定 "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; TYPE_FILENAME ; "C:\\temp\\ERR001.LOG" ; lrc = Mp_SendEMail(AppName,addr,naddr,data,ndata,FromAddr,Title,SMTPSrv) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 【UNIX版】 #include "f3crhxac.h" unsigned char *AppName MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata; char *FromAddr unsigned char *Title char *SMTPSrv long lrc ; = "E-Mail送信API" ; = "Systemwalker@fujitsu.co.jp" ; = "System Report" ; = NULL ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator@fujitsu.co.jp" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01 @fujitsu.co.jp" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data = = = = // 依頼元アプリケーション名 // 送信先アドレス格納域 // 送信先アドレス // メールタイトル // 省略値を使用 // ユーザ operatorとuser01に // メッセージを送信する TYPE_LMEMORY ; // 送信データの設定 "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; TYPE_FILENAME ; "/tmp/ERR001.LOG" ; - 169 - ndata = 2 ; lrc = Mp_SendEMail(AppName,addr,naddr,data,ndata,FromAddr,Title,SMTPSrv) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.41 Mp_SendEMail2()関数 機能説明 E-mailの送信を要求します。 呼び出し形式 long Mp_SendEMail(unsigned char *AppName,MpAddress *AddressList, int nAddressList,MpDataList *MailData, int nMailData, char *FromAddress,unsigned char *MailTitle char *SMTPServer, char *sCommand,int fAppendFileDelete) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 AddressList: あて先情報構造体(MpAddress)のアドレスを指定します。 複数指定する場合は、配列で指定します。 nAddressList: AddressListに指定したアドレスの数(配列数)を指定します。 MailData: メール送信データ情報構造体(MpDataList)のアドレスを指定します。複数のデータを送信する場合は、配列で指定 します。 nMailData: MailDataに指定した配列数を指定します。 FromAddress: メール送信元のメールアドレスを指定します。 NULLを指定した場合は、省略値を使用します。 MailTitle: メールのタイトルを指定します。 SMTPServer: SMTPサーバ名を指定します。 NULLを指定した場合は、省略値を使用します。 sCommand: 送信する前に実行するコマンド(フルパス、オプションを含む文字列)を指定します。 NULLを指定した場合は、コマンドを実行しません。 fAppendFileDelete: メール送信後、添付ファイルを削除する場合に、“1”を指定します。 - 170 - 構造体の説明 あて先情報構造体(MpAddress)の形式 typedef struct MpAddress_tag { int type : unsigned char *address ; char *addrid ; } MpAddress ; type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: 送信先のメールアドレスです。 TYPE_NAME: あて先名です。 address: メールアドレスまたはあて先名のアドレスを指定します。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 メール送信データ情報構造体(MpDataList)の形式 typedef struct MpDataList_tag { int type ; unsigned char *data ; } MpDataList ; type: dataに指定するデータの種別を指定します。 TYPE_LMEMORY: メモリデータです。 TYPE_FILENAME: ファイル名です。 TYPE_TEMPFILE: ファイル名(メール送信が正常終了したあと、アクション管理がファイルを削除する)です。 data: TYPE_LMEMORY の 場 合 は 、 1028 バ イ ト 以 内 で メ モ リ デ ー タ を 指 定 し ま す 。 TYPE_FILENAME 、 お よ び TYPE_TEMPFILEの場合は、260バイト以内で送信するファイル名を指定します。 送信するファイル名は、“:”で区切って30個まで指定できます。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 - 171 - 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効なメールアドレスがありません。 あて先情報構造体(MpAddress)に指定した address に誤りがあります。正しいあて先名に変更してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 MPACT_ACCESSERR: 指定されたファイルには必要なアクセス権がありません。 送信するファイルのアクセス権(読み込み権)の有無を確認し、読み込みが可能な状態にしてください。 API格納場所 “アクション管理のAPI”を参照してください。 - 172 - 備考 ・ メールデータの先頭に指定されたデータは、メールの本体(テキスト)として送信します。メールの本体部がない場合 は、先頭の配列のメンバdataにNULLを指定します。 ・ メールデータにTYPE_LMEMORYは1つだけ指定できます。 また、TYPE_LMEMORYは配列の先頭に指定する必要があります。 ・ メモリデータは、'\0'で終了させます。 改行は、CR(0x0d)+LF(0x0a)のコードで行います。 ・ メール本体にSJISコード、またはEUCコードが指定されている場合、テキストは、ISO-2022-JP形式に変換後、送 信します。添付ファイルは、Base64の形式に変換して送信します。 使用例 E-mail送信APIの使用例を以下に示します。 【Windows版】 #include "f3crhxac.h" unsigned char *AppName unsigned char *CmdName MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata; char *FromAddr unsigned char *Title char *SMTPSrv long lrc ; = "E-Mail送信API" ; // 依頼元アプリケーション名 = "C:\\GetLog.bat" ; // 送信前実行コマンド名 // 送信先アドレス格納域 = "Systemwalker@fujitsu.co.jp" ; = "System Report" ; = NULL ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator@fujitsu.co.jp" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01 @fujitsu.co.jp" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data ndata = 2 ; = = = = // 送信先アドレス // メールタイトル // 省略値を使用 // ユーザ operatorとuser01に // メッセージを送信する TYPE_LMEMORY ; // 送信データの設定 "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; TYPE_FILENAME ; "C:\\temp\\ERR001.LOG" ; lrc = Mp_SendEMail2(AppName,addr,naddr,data,ndata,FromAddr,Title,SMTPSrv,CmdName,1) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 【UNIX版】 #include "f3crhxac.h" unsigned char *AppName unsigned char *CmdName MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata; char *FromAddr unsigned char *Title char *SMTPSrv = "E-Mail送信API" ; // 依頼元アプリケーション名 = "/GetLog.sh" ; // 送信前実行コマンド名 // 送信先アドレス格納域 = "Systemwalker@fujitsu.co.jp" ; = "System Report" ; = NULL ; // 送信先アドレス // メールタイトル // 省略値を使用 - 173 - long lrc ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator@fujitsu.co.jp" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01 @fujitsu.co.jp" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data ndata = 2 ; // ユーザ operatorとuser01に // メッセージを送信する = TYPE_LMEMORY ; // 送信データの設定 = "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; = TYPE_FILENAME ; ="/tmp/ERR001.LOG"; lrc = Mp_SendEMail2(AppName,addr,naddr,data,ndata,FromAddr,Title,SMTPSrv,CmdName,1) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.42 Mp_SendMSMail2()関数 機能説明 MS-mailの送信を要求します。 呼び出し形式 long Mp_SendMSMail2(unsigned char *AppName,MpAddress *AddressList, int nAddressList,MpDataList *MailData, int nMailData,unsigned char *MailTitle, MpMMParam *MMailParam,char *exehost) パラメタ AppName: 呼び出し元のアプリケーション名のアドレスを指定します。 アプリケーション名は64バイト以内で指定します。 AddressList: あて先情報構造体(MpAddress)のアドレスを指定します。 メールを送信するユーザ名を指定します。 複数指定する場合は、配列で指定します。 nAddressList: AddressListに指定した配列数を指定します。 MailData: メール送信データ情報構造体(MpDataList)のアドレスを指定します。複数のデータを送信する場合は、配列で指定 します。 nMailData: MailDataに指定した配列数を指定します。 MailTitle: メールのタイトルを指定します。 - 174 - MMailParam: メール送信管理情報構造体(MpMMParam)のアドレスを指定します。 メールを送信するための情報を指定します。 NULLの場合、各項目の省略値を使用します。 exehost: アクションを実行するホスト名(アクション実行を選択したクライアント)のアドレスを指定します。 NULLを指定した場合は、[アクション環境設定]ウィンドウで指定したホストでアクションが実行されます。 構造体の説明 あて先情報構造体(MpAddress)の形式 typedef struct MpAddress_tag { int type ; unsigned char *address ; char *addrid ; } MpAddress ; type: addressに指定したアドレスの種別を指定します。 TYPE_ADDRESS: 送信先のメールアドレスです。 TYPE_NAME: あて先名です。 address: メールアドレスまたはあて先名のアドレスを指定します。 addrid: TYPE_NAMEを指定した場合に、あて先名に対応する利用者管理の利用者コードのアドレスを指定します。 メール送信データ情報構造体(MpDataList)の形式 typedef struct MpDataList_tag { int type ; unsigned char *data ; } MpDataList ; type: dataに指定するデータの種別を指定します。 TYPE_LMEMORY: メモリデータです。 TYPE_FILENAME: ファイル名です。 TYPE_TEMPFILE: ファイル名(メール送信が正常終了したあと、アクション管理がファイルを削除する)です。 data: TYPE_LMEMORYの場合は、2048バイト以内で指定したメモリデータのアドレスを指定します。 TYPE_FILENAME、およびTYPE_TEMPFILEの場合は、260バイト以内で指定したファイル名のアドレスを指定します。 なお、ファイルはexehostで指定したホストに存在するものを指定してください。 - 175 - メール送信管理情報構造体(MpMMParam)の形式 typedef struct MpMMParam_tag { char *Profile ; char *Password ; } MpMMParam ; Profile: ログインするユーザ名のアドレスを指定します。 NULLを指定した場合は、省略値を使用します。 Password: ログインするユーザのパスワードのアドレスを指定します。 NULLを指定した場合は、省略値を使用します。 参照 “アクション管理のAPI”を参照してください。 復帰値 0以上: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTADDRESS: 有効なメールアドレスがありません。 あて先情報構造体(MpAddress)に指定した address に誤りがあります。正しいあて先名に変更してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows版】 アクション要求用DLLがロードできません。 - 176 - アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows版】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 備考 ・ メールデータにメモリデータは1つ指定可能。 また、メモリデータは配列の先頭に指定します。 メモリデータがない場合は、すべて添付ファイルとして送信します。 ・ メモリデータは、'\0'で終了させます。 改行は、CR(0x0d)+LF(0x0a)のコードで行います。 API格納場所 “アクション管理のAPI”を参照してください。 注意事項【Windows版】 Windows Server 2003 STD /Windows Server 2003 DTC/Windows Server 2003 EEなどOutlook Expressがインストールさ れている場合は、MS-mailの受信はできません。E-mailで実施してください。 使用例 MS-mail送信APIの使用例を以下に示します。 【Windows版】 #include "f3crhxac.h" unsigned char *AppName = "MS-Mail送信API" ; MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata ; unsigned char *Title = "システム異常通知" ; MpMMParam MailPrm = NULL ; long lrc ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data ndata = 2 ; = = = = // 依頼元アプリケーション名 // 送信先アドレス格納域 // メールタイトル // 省略値を使用 // ユーザ operatorとuser01にメッ // セージを送信する TYPE_LMEMORY ; // 送信データの設定 "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; TYPE_FILENAME ; "C:\\TEMP\\ERR001.LOG" ; lrc = Mp_SendMSMail2(AppName,addr,naddr,data,ndata,Title,MailPrm,NULL) ; if ( lrc < 0 ) { - 177 - /* エラー処理 */ } /* 正常終了 */ 【UNIX版】 #include "f3crhxac.h" unsigned char *AppName = "MS-Mail送信API" ; MpAddress addr[2] ; int naddr ; MpDataList data[2] ; int ndata ; unsigned char *Title = "システム異常通知" ; MpMMParam MailPrm = NULL ; long lrc ; addr[0].type = TYPE_ADDRESS ; addr[0].address = "operator" ; addr[1].type = TYPE_ADDRESS ; addr[1].address = "user01" ; naddr = 2 ; data[0].type data[0].data data[1].type data[1].data ndata = 2 ; = = = = // 依頼元アプリケーション名 // 送信先アドレス格納域 // メールタイトル // 省略値を使用 // ユーザ operatorとuser01にメッ // セージを送信する TYPE_LMEMORY ; // 送信データの設定 "異常が発生しました。\r\n詳細は添付ファイルを参照してください。\r\n" ; TYPE_FILENAME ; "/tmp/ERR001.LOG" ; lrc = Mp_SendMSMail2(AppName,addr,naddr,data,ndata,Title,MailPrm,NULL) ; if ( lrc < 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.43 Mp_StopAction()関数 機能説明 アクション管理サーバに依頼したアクションを停止します。 呼び出し形式 long Mp_StopAction(unsigned char *AppName,long handle) パラメタ AppName: 停止するアクションを要求した(アクション実行用のAPIに指定した)呼び出し元のアプリケーション名のアドレスを指 定します。 handle: 停止するアクションの管理番号(アクション実行用のAPIの復帰値)を指定します。 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_CallPager2()関数 - 178 - ・ Mp_PlaySound()関数 ・ Mp_PlaySound2()関数 ・ Mp_PopupDomain()関数【Windows版】 ・ Mp_PopupDomain2()関数 ・ Mp_PopupSession()関数【Windows版】 ・ Mp_PopupSession2()関数 ・ Mp_SendEMail()関数 ・ Mp_SendMSMail2()関数 復帰値 0: 停止処理を行います。 MPACT_NOTACTION: 指定されたアクションは存在しません(すでに終了しています)。 対処は不要です。 MPACT_NOTSTOP: 指定されたアクションは実行中のため、停止できません。 MPACT_NOTACCESS: 停止する権限がありません。 Administrator権限で実行してください。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信に失敗しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Manager を再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取したあと、技 術員に連絡してください。 MPACT_NOTDLL:【Windows】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dllが、以下のフォルダにあるかどうかを確認してください。 - 179 - Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イベン ト監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してください。 保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守情報の収 集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 使用例 アクション停止APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "実行API" ; long handle = 1 ; long lrc ; // アクション実行APIに指定したアプリ名 // アクション実行APIの戻り値 lrc = Mp_StopAction(AppName,handle) ; if ( lrc != 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.44 Mp_StopSound()関数 機能説明 音声通知を停止します。 呼び出し形式 long Mp_StopSound(unsigned char *AppName,long handle) パラメタ AppName: Mp_PlaySound()関数、またはMp_PlaySound2()関数で指定した呼び出し元のアプリケーション名のアドレスを指定 します。 handle: Mp_PlaySound()関数、またはMp_PlaySound2()関数で返された値を指定します。 0を指定した場合は、再生中の音声を停止します。 参照 以下のアクション管理のAPIを参照してください。 ・ Mp_PlaySound()関数 ・ Mp_PlaySound2()関数 - 180 - 復帰値 0: 正常。 負の値: エラー。 MPACT_PARAMERR: パラメタエラーです。 パラメタに誤りがないかを確認してください。 MPACT_NOMEMORY: メモリ不足です。 ページファイルのサイズを拡張するか、またはメモリを増設してください。 MPACT_NOTACTION: 指定されたアクションは存在しません(すでに終了しています)。 対処は不要です。 MPACT_NOTSTOP: 指定されたアクションは、停止できません。 MPACT_NOTMOVE: アクション管理サーバが起動されていません。 サービス“Systemwalker MpAosfB”が起動されていることを確認してください。 MPACT_COMFAIL: アクション管理サーバとの通信でエラーが発生しました。 サービス“Systemwalker MpAosfB”、および“Systemwalker MpAosfX”が起動されていることを確認してください。 MPACT_SYSERR: アクション管理サーバでエラーが発生しました。 イベントログ/syslogに出力されたメッセージを参照してエラーの原因を取り除いたあと、Systemwalker Centric Managerを再起動してください。再現する場合は、保守情報収集ツールを使用して[イベント監視]の資料を採取 したあと、技術員に連絡してください。 MPACT_NOTDLL:【Windows版】 アクション要求用DLLがロードできません。 アクション管理に必要なファイルf3crhxac.dll(64bit版の場合はf3crhxac_64.dll)が、以下のフォルダにあるかどうか を確認してください。 Systemwalkerインストールディレクトリ\mpwalker\bin ない場合は、Systemwalker Centric Managerを再インストールするか、または保守情報収集ツールを使用して[イ ベント監視]の資料を採取したあと、技術員に連絡してください。 MPACT_EXCEPT:【Windows版】 不当な領域のアドレスが指定されました。 内部論理異常が発生しています。保守情報収集ツールを使用して資料を採取したあと、技術員に連絡してくださ い。保守情報収集ツールの使用方法については、“Systemwalker Centric Manager メッセージ説明書”の“保守 情報の収集方法”を参照してください。 API格納場所 “アクション管理のAPI”を参照してください。 - 181 - 使用例 音声停止APIの使用例を以下に示します。 #include "f3crhxac.h" unsigned char *AppName = "音声通知API" ; long handle = 1 ; long lrc ; // Mp_PlaySound()に指定したアプリ名 // Mp_PlaySound()の戻り値 lrc = Mp_StopSound(AppName,handle) ; if ( lrc != 0 ) { /* エラー処理 */ } /* 正常終了 */ 4.45 NWsnmpCleanup()関数 機能説明 ネットワーク管理APIのクローズ処理を行います。 ネットワーク管理APIを使用するプロセスの終了時に、本関数を呼び出す必要があります。 呼び出し形式 int NWsnmpCleanup(NWsnmpErrinfo *infoErr) 復帰値 1: 正常終了。 0: 異常終了。 使用例 main() { NWsnmpErrinfo infoErr; /* エラー通知構造体 */ if (!NWsnmpStartup ( &infoErr )) { /* エラー処理 */ } -中略- if (!NWsnmpCleanup ( &infoErr )) { } /* エラー処理 */ exit( 0 ); } 4.46 NWsnmpClose()関数 - 182 - 機能説明 NWsnmpOpen()関数で獲得したソケットを解放します。 呼び出し形式 int NWsnmpClose(NWSNMP_FD socket_id, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ socket_id: NWsnmpOpen()関数で獲得したソケットIDを指定します。 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_CLOSESOCKET_ERR: ソケットの解放に失敗しました。 使用例 NWsnmpErrinfo infoErr; NWSNMP_FD socket_id = NWsnmpOpen(&infoErr) ; if (socket_id == 0xFFFFFFFF) { /* エラー処理 */ } -中略- NWsnmpClose(socket_id, &infoErr) ; 4.47 NWsnmpDot2Mib()関数 機能説明 ドット形式文字列からMIB名への変換を行います。 呼び出し形式 int NWsnmpDot2Mib(char* dot, char** mib, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ - 183 - dot: 変換するドット形式文字列へのポインタを指定します。 出力パラメタ mib: 変換後のMIB名を格納する領域へのポインタを指定します(領域は関数内で獲得されます)。 infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_PARAMETER_ERR: 不当なパラメタが指定されました。 NWSNMP_OBJECT_INVALID: 指定ドット形式文字列に対応するMIBが存在しませんでした。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 注意事項 ・ MIB名に変換できるところまで変換し、変換できない部分に関してはドット形式で付加されます。 ・ MIB名が格納される領域は関数内で獲得されるため、使用後はNWsnmpFree()関数を用いて解放してください。 使用例 char *mib; NWsnmpErrinfo infoErr; /* 変換後のMIB名形式文字列の格納ポインタ */ /* エラー通知構造体*/ -中略- if (!NMsnmpDot2Mib("1.3.6.1.2.1.1.5.0", &mib, &infoErr)) { /* エラー処理 */ } 4.48 NWsnmpFree()関数 機能説明 ネットワーク管理APIで取得した領域の解放を行います。 呼び出し形式 void NWsnmpFree(void *pRelease) - 184 - パラメタ 入力パラメタ pRelease: ネットワーク管理APIで取得した領域のアドレスを指定します。 使用例 NWSNMP_FD char int NWsnmpErrinfo socket_id; *pdu; len; infoErr; /* /* /* /* NWsnmpOpen関数で獲得したソケットID */ GetResponsePDUの領域ポインタ */ PDU長 */ エラー通知構造体 */ -中略- if (!NWsnmpReceive(socket_id, &pdu, &len, &infoErr)) { /* エラー処理 */ } -中略- NWsnmpFree(pdu); 4.49 NWsnmpMib2Dot()関数 機能説明 MIB名からドット形式への変換を行います。 呼び出し形式 int NWsnmpMib2Dot(char* mib, char**dot, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ mib: 変換対象MIB名へのポインタを指定します。 出力パラメタ dot: 変換後のMIB名(ドット形式)を格納する領域へのポインタを指定します(領域は関数内で獲得)。 infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考) エラー時には、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 - 185 - NWSNMP_PARAMETER_ERR: 不当なパラメタが指定されました。 NWSNMP_OBJECT_INVALID: 指定MIB名が存在しませんでした。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 注意事項 ドット形式文字列が格納される領域は関数内で獲得されるので、使用後はNWsnmpFree()関数を用いて解放してくださ い。 使用例 char *dot; /* 変換後のOID形式文字列の格納ポインタ*/ NWsnmpErrinfo infoErr; /* エラー通知構造体 */ -中略- if (!NWsnmpMib2Dot("sysName.0" , &dot, &infoErr)) { /* エラー処理*/ } 4.50 NWsnmpMibFree()関数 機能説明 NWsnmpMibLoad()関数でロードされたMIB情報の解放を行います。 呼び出し形式 void NWsnmpMibFree() 注意事項 ロードされたすべてのMIB情報を解放します。 使用例 NWsnmpMibFree(); 4.51 NWsnmpMibLoad()関数 機能説明 MIB拡張コマンドでコンパイルしたMIBファイルをロードします。 呼び出し形式 int NWsnmpMibLoad(char* filename, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ - 186 - filename: MIBファイルを指定します。 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_PARAMETER_ERR: 不当なパラメタ(ファイル名)が指定されました。 NWSNMP_FOPEN_ERR: MIBファイルのオープンに失敗しました。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 注意事項 ・ 登録したMIB情報は、NWsnmpMibFree()関数で解放してください。 ・ MIBファイル名のサフィックスに“.MIB”がない場合には、ファイル名に付け加えます。 ・ NWsnmpMibLoad()関数は複数回の呼び出しが可能です。 ・ 同一のMIB名がすでにロードされている場合、対応するObjectIDは上書きされます。 ・ 同一のObjectIDで、異なるMIB名がすでにロードされている場合には、先にロードされたMIB名が有効になります。 使用例 char *file_name; /* 拡張MIBファイル名 */ NWsnmpErrinfo infoErr; /* エラー通知構造体 */ -中略- if (!NWsnmpMibLoad(file_name, &infoErr)) { /* エラー処理 */ } 4.52 NWsnmpOpen()関数 機能説明 SNMP操作とSNMPトラップ送信を行うために、ソケットIDの取得を行います。 呼び出し形式 NWSNMP_FD NWsnmpOpen(NWsnmpErrinfo *infoErr) - 187 - パラメタ 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 取得したソケットID: 正常終了。 0xFFFFFFFF: 異常終了。 備考 エラー時には、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_WSASTARTUP_ERR: ソケットの初期化に失敗しました。 NWSNMP_SOCKET_ERR: ソケットの取得に失敗しました。 注意事項 ・ SNMPのGET/GETNEXT/SET REQUEST、およびSNMPトラップを送信する場合は、送信要求前に呼び出す必要 があります。 ・ プロセスが取得できる最大ソケット数まで、複数回の呼び出しが可能です。 ・ 使用後は、NWsnmpClose()関数で解放してください。 使用例 NWsnmpErrinfo infoErr; NWSNMP_FD socket_id = NWsnmpOpen(&infoErr) ; if ( socket_id == 0xFFFFFFFF) { /* エラー処理 */ } 4.53 NWsnmpPduDecode()関数 機能説明 PDUを復号化し、結果をNWsnmp_pdu構造体に設定します。 呼び出し形式 int NWsnmpPduDecode(char* pdu, int len, NWsnmp_pdu **tsp, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ pdu: 復号化するPDUを指定します。 - 188 - len: 復号化するPDU長を指定します。 出力パラメタ tsp: NWsnmp_pdu構造体を指定します(領域は関数内で獲得されます)。 infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_BAD_DATA: NWsnmp_pdu構造体に変換できないPDUが指定されました。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 NWSNMP_PARAMETER_ERR: 不当パラメタが指定されました。 NWSNMP_OBJECT_INVALID: 変換MIB名が存在しませんでした。 注意事項 ・ PDUタイプがGET RESPONSEとSNMPトラップの復号化が可能です。 ・ NWsnmp_pdu構造体の領域は、関数内で獲得されます。 使用後は、NWsnmpPduFree()関数を用いて領域を解放してください。 使用例 NWsnmp_pdu char int NWsnmpErrinfo *tsp; *pdu; pdu_len; infoErr; /* /* /* /* 復号化したPDUの格納構造体 受信したPDU 受信したPDU長 エラー通知構造体 */ */ */ */ -中略- if (!NWsnmpPduDecode(pdu, pdu_len, &tsp, &infoErr)) { /* エラー処理 */ } 4.54 NWsnmpPduEncode()関数 機能説明 NWsnmp_pdu構造体をPDUに変換します。 - 189 - 呼び出し形式 int NWsnmpPduEncode(NWsnmp_pdu* tsp, char** pdu, int* len, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ tsp: NWsnmp_pdu構造体を指定します。 出力パラメタ pdu: 作成PDUを指定します(領域は関数内で確保されます)。 len: 作成PDU長を指定します。 infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時に、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_TOO_BIG: 作成PDUが2KBを超えました。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 NWSNMP_OBJECT_INVALID: 指定MIB名が存在しませんでした。 NWSNMP_PARAMETER_ERR: 不当パラメタが指定されました。 NWSNMP_BAD_MIB: MIB名が2048文字を超えました。 NWSNMP_BAD_DATA: PDU形式に変換できないNWsnmp_pdu構造体が指定されました。 注意事項 ・ PDUタイプがGET/GETNEXT/SET REQUESTとSNMPトラップの符号化が可能です。 ・ PDU領域は関数内で取得されます。 使用後はNWsnmpFree()関数を用いて領域の解放を行ってください。 - 190 - 使用例 GetRequestPDU、およびGetNextRequestPDUの作成例 NWsnmp_pdu NWsnmp_Varbind NWsnmp_Varbind char int NWsnmpErrinfo tsp; varbind1; varbind2; *pdu; len; infoErr; /* /* /* /* /* /* 符号化するNWsnmp_pdu構造体 NWsnmp_Varbind構造体 NWsnmp_Varbind構造体 生成するPDU 生成するPDU長 エラー通知構造体 */ */ */ */ */ */ -中略- memset(&tsp, ‘\0’ , sizeof(tsp)); memset(&varbind1, ‘\0’ , sizeof(varbind1)); memset(&varbind2, ‘\0’ , sizeof(varbind2)); tsp.version = NWSNMP_VERSION_1; /* バージョンの設定 */ tsp.community = "public"; /* コミュニティ名の設定 */ tsp.community_len = strlen("public"); /* コミュニティ名長の設定*/ tsp.pdu_type = NWSNMP_GET; /* 種別の設定、GetNextRequestの場合、*/ /* NWSNMP_NEXTを設定 */ tsp.request_id = 12345; /* リクエストIDの設定 */ /* * NWsnmp_Varbind構造体の設定 */ tsp.varbind = &varbind1; /* varbindリスト1 */ varbind1.obj_name = "sysName.0"; varbind1.obj_type = NWSNMP_NULL; varbind1.next = &varbind2; /* varbindリスト2 */ varbind1.obj_name = "1.3.6.1.2.1.1.6.0"; varbind1.obj_type = NWSNMP_NULL; varbind1.next = NULL; /* NWsnmp_pduの符号化 */ if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) { /* エラー処理 */ } SetRequestPDUの作成例 NWsnmp_pdu NWsnmp_Varbind char int NWsnmpErrinfo tsp; varbind; *pdu; len; infoErr; /* /* /* /* /* 符号化するNWsnmp_pdu構造体 NWsnmp_Varbind構造体 生成するPDU 生成するPDU長 エラー通知構造体 */ */ */ */ */ -中略- memset(&tsp, ‘\0’ , sizeof(tsp)); memset(&varbind, ‘\0’ , sizeof(varbind)); tsp.version = NWSNMP_VERSION_1; tsp.community = "public"; tsp.community_len = strlen("public"); tsp.pdu_type = NWSNMP_SET; tsp.request_id = 12345; /* /* /* /* /* バージョンの設定 */ コミュニティ名の設定*/ コミュニティ名長の設定*/ 種別の設定 */ リクエストIDの設定 */ - 191 - /* * NWsnmp_Varbind構造体の設定 */ tsp.varbind = &varbind1; /* varbindリスト */ varbind.obj_name = "sysLocation.0"; varbind.obj_type = NWSNMP_OCTET_STRING; varbind.obj_syntax.val_octet_string.string = "PFU"; varbind.obj_syntax.val_octet_string.len =strlen("PFU"); varbind.next = NULL; /* NWsnmp_pduの符号化 */ if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) { /* エラー処理 */ } TrapPDUの作成例 【Windows版/UNIX版】 NWsnmp_pdu NWsnmp_Varbind char int NWsnmpErrinfo unsigned long tsp; varbind; *pdu; len; infoErr; agent; /* /* /* /* /* /* 符号化するNWsnmp_pdu構造体 NWsnmp_Varbind構造体 生成するPDU 生成するPDU長 エラー通知構造体 エージェントアドレス */ */ */ */ */ */ -中略- memset(&tsp, ‘\0’ , sizeof(tsp)); memset(&varbind, ‘\0’ , sizeof(varbind)); tsp.version = NWSNMP_VERSION_1; tsp.community = "public"; tsp.community_len = strlen("public"); tsp.pdu_type = NWSNMP_TRAP; tsp.enterprise = "1.3.6.1.4.1"; tsp.agent_addr = agent; tsp.generic_trap = NWSNMP_COLDSTART; tsp.specific_trap = 0; tsp.time_stamp = 0; /* /* /* /* /* /* /* /* /* バージョンの設定 */ コミュニティ名の設定*/ コミュニティ名長の設定*/ 種別の設定 */ enterpriseの設定 */ エージェントアドレスの設定 */ SNMPトラップ種別の設定 */ specificCodeの設定 */ タイムスタンプの設定 */ /* * NWsnmp_Varbind構造体の設定 */ tsp.varbind = &varbind1; /* varbindリスト */ varbind.obj_name = "sysName.0"; varbind.obj_type = NWSNMP_OCTET_STRING; varbind.obj_syntax.val_octet_string.string = "HostName"; varbind.obj_syntax.val_octet_string.len =strlen("HostName"); varbind.next = NULL; /* NWsnmp_pduの符号化 */ if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) { /* エラー処理 */ } 4.55 NWsnmpPduFree()関数 - 192 - 機能説明 NWsnmpPduDecode()関数で獲得した、NWsnmp_pdu構造体、およびそれに関連するすべての領域の解放を行いま す。 呼び出し形式 void NWsnmpPduFree(NWsnmp_pdu* pdu) パラメタ 入力パラメタ pdu: 解放するNWsnmp_pdu構造体へのポインタを指定します。 使用例 NWsnmp_pdu tsp; /*複号化したPDUの格納構造体 */ -中略- NWsnmpPduFree(&tsp); 4.56 NWsnmpPerror()関数 機能説明 NWsnmpErrinfoから、エラーを標準出力に出力します。 呼び出し形式 void NWsnmpPerror(char* msg, NwsnmpErrinfo *infoErr) パラメタ 入力パラメタ msg: 出力メッセージのラベル名を指定します。 infoErr: エラー情報設定構造体を指定します。 注意事項 NWsnmpErrinfoの値が、ネットワーク管理APIライブラリで設定する範囲外の場合には、以下の文字列を出力します。 "Error Mssage Not Found" 使用例 int *socket_id; NWsnmpErrinfo infoErr; /* エラー通知構造体 */ -中略- socket_id = NWsnmpOpen(&infoErr); if ( socket_id == -1 ) { NWsnmpPerror("command", &infoErr); /* エラー処理 */ } - 193 - 実行結果/出力形式 "command: Socket error" 4.57 NWsnmpReadSelect()関数 機能説明 select()関数による、同期型入力の多重化を行います。 本関数はselect()関数をSNMPの受信用に簡易化したものです。 FD_ZERO(NWsnmpFd_set *mask)で、記述子セットをクリアしてください。 クリアした記述子セットに、FD_SET(NWSNMP_FD sockfd,NWsnmpFd_Set* mask)で、ソケットIDをセットします(複数個 指定できます)。 NWsnmpReadSelect()関数で、入力のチェックを行います。 “timeout”に“NULL”を指定すると、入力可能状態になるまで復帰しません。 ソケットの読み取り準備確認には、FD_ISSET(NWSNMP_FD sockfd,NWsnmpFd_set* mask)を使用してください。 呼び出し形式 int NWsnmpReadSelect(NWSNMP_FD width, NWsnmpFd_Set* readfds, struct timeval *timeout, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ width: チェックするビット数。 readfds: 記述子セットのポインタ。 timeout: タイムアウト値のポインタ。 出力パラメタ readfds: チェックした記述子セットのポインタ。 infoErr: エラー情報設定構造体。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 - 194 - NWSNMP_PARAMETER_ERR: 不当なパラメタが指定されました。 NWSNMP_TIMEOUT_ERR: 指定時間内にイベントがありませんでした。 NWSNMP_SELECT_ERR: イベント待ち合わせで異常が発生しました。 使用例 NWSNMP_FD NWSNMP_FD struct timeval NWsnmpFd_Set NWsnmpErrinfo sock_snmp; sock_trap; timeout; mask; infoErr; /* /* /* /* /* NWsnmpOpen関数で取得したソケットID */ NWsnmpTrapdOpen関数で取得したソケットID */ タイムアウト値 */ 記述子セット */ エラー通知構造体 */ -中略- /* タイムアウト値を設定 */ timeout.tv_sec = 10; timeout.tv_usec = 0; /* 記述子セットの初期化 */ FD_ZERO(&mask); /* 記述子セットにソケットIDを設定 */ FD_SET (sock_snmp, &mask ); FD_SET (sock_trap, &mask ); /* 同期型入力の多重化 */ if (!NWsnmpReadSelect(sock_trap + 1, &mask, &timeout, &infoErr)) { /* エラー処理 */ } /* sock_snmpの読み取り準備確認 */ if (FD_ISSET(sock_snmp, &mask)) { /* sock_snmpからイベント受信 */ } /* sock_trapの読み取り準備確認 */ if (FD_ISSET(sock_trap, &mask)) { /* sock_trapからイベント受信 */ } 4.58 NWsnmpReceive()関数 機能説明 SNMP操作の応答を、PDU形式で受信します。 呼び出し形式 int NWsnmpReceive(NWSNMP_FD socket_id, char **pdu, int *len, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ socket_id: NWsnmpOpen()関数で獲得したソケットIDを指定します。 - 195 - 出力パラメタ pdu: 受信PDUを指定します(領域は関数内で取得されます)。 len: 受信PDU長を指定します。 infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_INVALIDSOCKET_ERR: 不当なソケットIDが設定されました。 NWSNMP_RECVFROM_ERR: PDUの受信に失敗しました。 NWSNMP_MALLOC_ERR: 領域の獲得に失敗しました。 注意事項 ・ 受信PDU領域は関数内で取得されます。 領域の解放は、NWsnmpFree()関数で行ってください。 ・ GetResponse-PDUを受信するまで復帰しません。 使用例 NWSNMP_FD socket_id; char *pdu; int len; NWsnmpErrinfo infoErr; /* /* /* /* NWsnmpOpen関数で取得したソケットID */ GetResponsePDUの領域ポインタ */ PDU長 */ エラー通知構造体 */ -中略- if (!NWsnmpReceive(socket_id, &pdu, &len, &infoErr)) { /* エラー処理 */ } 4.59 NWsnmpSend()関数 機能説明 指定送信先ホスト名へPDU形式に変換されたSNMP操作要求を送信します。 - 196 - 呼び出し形式 int NWsnmpSend(NWSNMP_FD socket_id, char* pdu, int len, char* host,NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ socket_id: NWsnmpOpen()関数で獲得したソケットIDを指定します。 pdu: 送信するPDUデータを指定します。 len: PDU長を指定します。 host: 送信先のホスト名、またはホストのIPアドレスを指定します。 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_INVALIDSOCKET_ERR: 不当なソケットIDが設定されました。 NWSNMP_PARAMETER_ERR: 不当なパラメタが指定されました。 NWSNMP_HOSTENT_ERR: ホスト名の獲得に失敗しました。 NWSNMP_SENDTO_ERR: PDUの送信に失敗しました。 使用例 NWSNMP_FD char int char NWsnmpErrinfo socket_id; *pdu; len; *destaddr; infoErr; /* /* /* /* /* NWsnmpOpen関数で取得したソケットID */ NWsnmpEncode関数で生成したPDU */ PDU長 */ SNMPトラップ送信先 */ エラー通知構造体 */ -中略- if (!NWsnmpSend(socket_id, pdu, len, destaddr, &infoErr)) { - 197 - /* エラー処理 */ } 4.60 NWsnmpSerror()関数 機能説明 NWsnmpErrinfoからエラーメッセージを作成します。 呼び出し形式 char* NWsnmpSerror(NwsnmpErrinfo *infoErr) パラメタ 入力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 エラーメッセージの先頭アドレス: 正常終了。 NULL: 異常終了。 注意事項 ・ NWsnmpErrinfoの値が、ネットワーク管理APIライブラリで設定する範囲外の場合には、以下の文字列を出力しま す。 "Error Mssage Not Found" ・ 作成エラーメッセージの領域は、関数内で取得するため、NWsnmpFree()関数を使用して領域解放を行ってくださ い。 4.61 NWsnmpStartup()関数 機能説明 ネットワーク管理APIを使用するための初期化を行います。 ネットワーク管理APIを使用する場合、メインの先頭で本関数を呼び出す必要があります。 呼び出し形式 int NWsnmpStartup(NWsnmpErrinfo *infoErr) 復帰値 1: 正常終了。 0: 異常終了。 - 198 - 使用例 main() { NWsnmpErrinfo infoErr; /* エラー通知構造体 */ if (!NWsnmpStartup ( &infoErr )) { /* エラー処理 */ } -中略- if (!NWsnmpCleanup ( &infoErr)) { } /* エラー処理 */ exit( 0 ); } 4.62 NWsnmpTrapdClose()関数 機能説明 トラップ受信サービス、またはトラップデーモンに対して、NWsnmpTrapdOpen()関数で登録したTRAP配付登録を削除 します。 呼び出し形式 int NWsnmpTrapdClose(NWSNMP_FD socket_id, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ socket_id: NWsnmpTrapdOpen()関数で取得したソケットIDを指定します。 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_SEND_ERR: SNMPトラップ配付中止要求の送信に失敗しました。 NWSNMP_TIMEOUT_ERR: SNMPトラップ配付中止応答の待ち合わせでタイムアウトが発生しました。 NWSNMP_SELECT_ERR: SNMPトラップ配付中止応答の待ち合わせに失敗しました。 - 199 - 使用例 NWSNMP_FD NWsnmpErrinfo socket_id; infoErr; /* NWsnmpTrapdOpen関数で取得したソケットID */ /* エラー通知構造体 */ -中略- if (!NWsnmpTrapdClose(socket_id, &infoErr)) { /* エラー処理 */ } 4.63 NWsnmpTrapdOpen()関数 機能説明 トラップ受信サービス、またはトラップデーモンに対して、SNMPトラップの配付登録を行います。 呼び出し形式 NWSNMP_FD NWsnmpTrapdOpen(NWsnmpErrinfo *infoErr) パラメタ 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 SNMPトラップの分配を行うソケットID : 正常終了。 0xFFFFFFFF : 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_WSASTARTUP_ERR: ソケットの初期化に失敗しました。 NWSNMP_GETPORT_ERR: トラップ受信サービス、またはトラップデーモンへの接続ポートの獲得に失敗しました。 NWSNMP_SOCKET_ERR: ソケットの獲得に失敗しました。 NWSNMP_CONNECT_ERR: トラップ受信サービス、またはトラップデーモンとの接続に失敗しました。 NWSNMP_TIMEOUT_ERR: トラップ受信サービス、またはトラップデーモンとの接続でタイムアウトが発生しました。 NWSNMP_SELECT_ERR: トラップ受信サービス、またはトラップデーモンとの通信ソケットに対する同期型入出力の多重化に失敗しました。 - 200 - NWSNMP_LIST_ERR: トラップ受信サービス、またはトラップデーモンへの最大接続数が上限に達しています。 NWSNMP_RECV_ERR: トラップ受信サービス、またはトラップデーモンからの登録確認データの受信に失敗しました。 NWSNMP_SEND_ERR: トラップ受信サービス、またはトラップデーモンへの登録データの送信に失敗しました。 注意事項 ・ SNMPトラップを受信する場合は、受信前に呼び出す必要があります。 ・ 使用後は、NWsnmpTrapdClose()関数で解放してください。 ・ トラップ受信サービス、またはトラップデーモンは、分配登録を受け付けると、受信したSNMPトラップを配付しますの で、そのソケットを常に監視して、データ入力時にはすみやかにSNMPトラップデータを読み込んでください。 ・ トラップ受信サービス、またはトラップデーモンは、SNMPトラップの配付に失敗すると、そのソケットへの配付登録を 削除します。 使用例 NWSNMP_FD NWsnmpErrinfo socket_id; infoErr; /* SNMPトラップ受信を行うためのソケットID */ /* エラー通知構造体 */ -中略- socket_id = NWsnmpTrapdOpen(&infoErr); if (socket_id == 0xFFFFFFFF) { /* エラー処理 */ } 4.64 NWsnmpTrapdReceive()関数 機能説明 トラップ受信サービス、またはトラップデーモンから、SNMPトラップデータをPDU形式で受信します。 呼び出し形式 int NWsnmpTrapdReceive(NWSNMP_FD socket_id, char **pdu, int *len, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ socket_id: NWsnmpTrapdOpen()関数で獲得したソケットIDを指定します。 出力パラメタ pdu: 受信TRAP-PDUを指定します(領域は関数内で確保されます)。 len: 受信TRAP-PDU長を指定します。 infoErr: エラー情報設定構造体を指定します。 - 201 - 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_INVALIDSOCKET_ERR: 不当なソケットIDが指定されました。 NWSNMP_RECV_ERR: TRAP-PDUの受信に失敗しました。 NWSNMP_TRAPD_TERMINATE: 領域の獲得に失敗しました。 NWSNMP_MALLOC_ERR: トラップ受信サービス、またはトラップデーモンが停止しました。 注意事項 ・ TRAP-PDU領域は関数内で取得されます。 領域の返却は、NWsnmpFree()関数で行ってください。 ・ TRAP-PDUを受信するまで復帰しません。 使用例 NWSNMP_FD char int NWsnmpErrinfo *socket_id; *pdu; len; infoErr; /* /* /* /* NWsnmpTrapdOpen関数で取得したソケットID */ TRAP-PDUの格納ポインタ */ PDU長 */ エラー通知構造体 */ -中略- if (!NWsnmpTrapdReceive(socket_id, &pdu, &len, &infoErr)) { /* エラー処理 */ } 4.65 NWsnmpTrapSend()関数 機能説明 指定送信先ホストへPDU形式に変換されたTRAP-PDUを送信します。 呼び出し形式 int NWsnmpTrapSend(NWSNMP_FD socket_id, char* pdu, int len, char* host, NWsnmpErrinfo *infoErr) パラメタ 入力パラメタ - 202 - socket_id: NWsnmpOpen()関数で獲得したソケットIDを指定します。 pdu: 送信するPDUデータを指定します。 len: 送信するPDU長を指定します。 host: 送信先のホスト名またはホストのIPアドレスを指定します。 出力パラメタ infoErr: エラー情報設定構造体を指定します。 復帰値 1: 正常終了。 0: 異常終了。 備考 エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。 NWSNMP_INVALIDSOCKET_ERR: 不当なソケットIDが設定されました。 NWSNMP_PARAMETER_ERR: 不当なパラメタが指定されました。 NWSNMP_HOSTENT_ERR: ホスト名の獲得に失敗しました。 NWSNMP_SENDTO_ERR: PDUの送信に失敗しました。 使用例 NWSNMP_FD char int char NWsnmpErrinfo socket_id; *pdu; len; *destaddr; infoErr; /* /* /* /* /* NWsnmpOpen関数で取得したソケットID */ NWsnmpEncode関数で生成したPDU */ PDU長 */ SNMPトラップ送信先 */ エラー通知構造体 */ -中略- if (!NWsnmpTrapdSend(socket_id, pdu, len, destaddr, &infoErr)) { /* エラー処理 */ } 4.66 opfmt()関数 - 203 - 機能説明 opfmt()関数は、“ラベル:エラー種別:メッセージテキスト”の形式でメッセージを作成し、そのメッセージを指定したstream に出力するとともに、システム監視エージェントへメッセージを通知します。 ラベルの指定は、opsetlabel()関数によって行います。ラベルが指定されない場合、“エラー種別:メッセージテキスト”の 形式でメッセージが作成されます。 システム監視エージェント未起動時は、メッセージ一時保存ファイルに保存され、システム監視エージェント起動時に読 み込まれます。 呼び出し形式 #include <opfmt.h> int opfmt(FILE *stream, long flags, char *format, ... /*args*/); パラメタ stream: 出力先のファイルポインタを指定します。streamにNULLを指定した場合は、システム監視エージェントだけに通知さ れます。 flags: 作成するメッセージの形式、メッセージカタログへのアクセスの有無、およびエラー種別を指定します。 flagsは複数指定できますが、以下の各グループから1つずつしか指定できません。 メッセージ作成形式フラグ: どのようなメッセージを作成するか指定します。 MM_NOSTD: “ラベル:エラー種別:メッセージテキスト”形式ではなく、メッセージテキストだけがメッセージとして通知されま す。MM_NOSTDが指定された場合、エラー種別フラグは無視されます。 MM_STD: “ラベル:エラー種別:メッセージテキスト”形式でメッセージが作成されます。メッセージ作成形式フラグが指定 されない場合、省略値はMM_STDです。 カタログアクセスフラグ:【UNIX】 メッセージカタログからメッセージテキストの取り出しを行うか行わないかの指定をします。 MM_NOGET: メッセージカタログからメッセージテキストの取り出しを行いません。formatに指定された文字列が、そのままメッ セージテキストとして使用されます。 MM_GET: メッセージカタログからメッセージテキストの取り出しを行います。カタログアクセスフラグが指定されない場合、 省略値はMM_GETです。 エラー種別フラグ: 作成されるエラーメッセージのエラー種別(重要度)を指定します。エラー種別フラグが指定されない場合、省略値 はMM_ERRORです。指定される値により、エラー種別と重要度は以下のようになります。 - Windows版 指定するエラー種別フラグ エラー種別 重要度 MM_HALT HALT 最重要 MM_ERROR ERROR 重要 MM_WARNING WARNIN G 警告 - 204 - 指定するエラー種別フラグ エラー種別 重要度 MM_NOTICE INFO 通知 MM_INFO INFO 一般 - UNIX版 指定するエラー種別フラグ エラー種別 重要度 MM_HALT 停止 最重要 MM_ERROR エラー 重要 MM_WARNING 警告 警告 MM_NOTICE 情報 通知 MM_INFO 情報 一般 format: メッセージテキストを指定します。 【Windows】 メッセージテキストは、printf()関数と同じ形式で指定します。メッセージテキストが決定できない場合は、メッセージテ キスト文字列として、“Message not found!!\n”が使用されます。 args: formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、args の数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不 定です。 【UNIX】 メッセージカタログの指定、および初期値のメッセージテキストをシステムが提供しているprintf()関数と同じ形式で指 定します。システムが提供しているprintf()関数の詳細については、printf(3s)のマニュアルページを参照してください。 formatには、以下の形式のようにコロン(:)でつないだ1つの文字列で指定します。 - メッセージカタログを指定する場合 catalog:msgnum:deftext - 初期値のメッセージカタログを指定する場合 :msgnum:deftext catalog: メッセージカタログ名を指定します。catalogは、14バイト以内の文字列を指定してください。これらの文字列には、 NULL(\0)、スラッシュ(/)、およびコロン(:)は使用できません。 catalogは、opsetcat()関数で初期値を指定することができます。opsetcat()関数でメッセージカタログが指定され ている場合、catalogは省略することができます。ただし、msgnumの直前に付くコロン(:)は省略してはいけません。 opsetcat()関数の詳細については“opsetcat()関数”を参照してください。 msgnum: catalogで指定した、メッセージカタログの取り出したいメッセージテキスト番号を指定します。 deftext: catalogで指定した、カタログからメッセージテキストが取り出せない場合の初期値のメッセージテキストを指定しま す。 環境変数LC_MESSAGES、またはLANGに設定されたロケールに、catalogで指定したメッセージカタログが存在 しない場合、またはmsgnumが範囲外の場合、opfmt()関数は、Cロケールからテキストを取り出そうとします。これ に失敗すると、opfmt()関数は、deftextをメッセージテキストとして使用します。formatが正しい形式で指定されず、 - 205 - メッセージテキストが決定できない場合は、メッセージテキスト文字列として、“Message not found!!\n”が使用され ます。 args: formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、args の数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不 定です。 注意 “%”をメッセージテキストとして使用する場合は、2つ連続させて(“%%”)記述します。 参照 以下のシステム監視のAPIを参照してください。 ・ vopfmt()関数 ・ opsetlabel()関数 復帰値 0以上 正常終了。通知したメッセージのバイト数。 -1 異常終了。 API格納場所 “メッセージ作成のAPI”を参照してください。 注意事項 運用管理サーバでクラスタ待機系の監視を行っている場合、待機系のシステムからopfmt関数を使用してメッセージを出 力しても運用系システムでのメッセージ監視はできません。なお、待機系時に実行したopfmt関数の結果は、APIを使用 したアプリケーションを実行したシステムが運用系になったときにメッセージが通知されます。 UNIXの場合は、以下の点にも注意が必要です。 ・ 環境変数LC_MESSAGES、またはLANGに指定されたロケールを有効にするために、本関数の前にシステムが提 供しているsetlocale()関数を呼び出す必要があります。詳細については、setlocale(3C)のマニュアルページを参照 してください。 ・ opfmt()を実行する環境のLANGとシステムのコード系を同一のものにしてください。 ・ 使用できるメッセージカタログの形式は、システムが提供しているmkmsgsコマンドでフォーマットされたメッセージカ タログです。メッセージカタログの作成方法の詳細については、システムが提供しているgettxt(3C)、mkmsgs(1)の マニュアルページを参照してください。 ・ 各パラメタは、メッセージの長さ(以下に示す文字列の長さの合計)が2047バイト以内になるように指定してください。 これを超える場合、メッセージは先頭からの2047バイト分のみがSystemwalker Centric Managerに通知されます。 - ラベル (注1) - エラー種別 (注2) - メッセージ (注3) 注1) flagsにMM_NOSTDを指定した場合 0です。 - 206 - 上記以外の場合 opsetlabel()関数でラベルを指定した場合は指定したラベルの長さ+2です。未指定の場合は0です。 注2) flagsにMM_NOSTDを指定した場合 0です。 上記以外の場合 flagsにエラー種別フラグを指定した場合はエラー種別フラグに対応するエラー種別の長さ+2です。未指定の場 合は8(デフォルトのエラー種別"エラー"の長さ+2)です。 注3) flagsのカタログアクセスフラグにMM_NOGETを指定する場合 formatの長さです。 formatが%で始まる書式を含む場合、書式を引数で置換した文字列の長さです。 flagsのカタログアクセスフラグ未指定またはMM_GETを指定する場合 opsetcat()関数またはformat内のcatalogで指定したメッセージカタログの中の、msgnum(メッセージテキスト番号) で指定したメッセージの長さです。 メッセージが%で始まる書式を含む場合、書式を引数で置換した文字列の長さです。 opsetcat()関数またはformat内のcatalogで有効なメッセージカタログ名を指定していない場合、またはmsgnumに 範囲外のメッセージテキスト番号を指定した場合、format内のdeftextの長さです。 使用例 使用例を以下に示します。 opsetlabel("LABEL"); opfmt(stderr, MM_INFO, "test:23:test message 1 --%s\n",strerror(errno)); 実行結果/出力形式 [通知メッセージ] LABEL: INFO: test message 1 --No such file or directory 4.67 opsetcat()関数【UNIX版】 機能説明 opsetcat()関数は、opfmt()関数、vopfmt()関数で使用されるメッセージカタログの初期値を定義します。 呼び出し形式 cc [flag] file... -lopagt [library...] #include <opfmt.h> char *opsetcat(char * catalog); パラメタ catalog: 初期値に指定するメッセージカタログ名を指定します。 catalogは、14バイト以内の文字列を指定してください。 これらの文字列には、NULL(\0)、スラッシュ(/)、およびコロン(:)は使用できません。 - 207 - catalogにNULLを指定すると、opsetcat()関数は、カレントデフォルトカタログ名を指すポインタを返します。 catalogに、空の文字列を指すポインタを指定すると、デフォルトカタログ名は取り消されます。 復帰値 デフォルトカタログ名を示すポインタ: 正常終了。 NULL: 異常終了。 API格納場所 【UNIXの場合】 “メッセージ作成のAPI”を参照してください。 注意事項 使用できるメッセージカタログの形式は、システムが提供しているmkmsgsコマンドでフォーマットされたメッセージカタログ です。 メッセージカタログの作成方法の詳細については、システムが提供しているgettxt(3C)、mkmsgs(1)のマニュアルページ を参照してください。 使用例 opsetcat("FSUNopagt"); … opfmt(stderr, MM_INFO, ":2:default message\n"); 4.68 opsetlabel()関数 機能説明 opsetlabel()関数は、opfmt()関数、vopfmt()関数で通知されるメッセージでの、ラベルの初期値を定義します。 呼び出し形式 #include <opfmt.h> int opsetlabel(char *label); パラメタ label: 初期値に指定するラベル文字列を指定します。labelは、文字列を以下のバイト数で指定します。 - 256バイト以内 labelに、NULL、または空の文字列を指すポインタを指定すると、初期値のラベルは取り消されます。 参照 以下のシステム監視のAPIを参照してください。 ・ opfmt()関数 ・ vopfmt()関数 - 208 - 復帰値 0: 正常終了だけ。 API格納場所 “メッセージ作成のAPI”を参照してください。 使用例 opsetlabel("LABEL 7"); ・・ opfmt(stderr, MM_HALT |MM_NOGET, "default message\n"); [通知されるメッセージ] LABEL 7: HALT: default message 4.69 ORMMessage()関数【UNIX版】 機能説明 運用管理サーバにメッセージの通知のみを行います。ORMRequest()APIによる返答要求メッセージの前後に、関連メッ セージを通知する場合に使用します。 呼び出し形式 #include " ORMessage.h" int ORMMessage (char *apname, char *msg) パラメタ char *apname: 要求元名(任意の文字列)を示す文字列です。最終文字のNULL文字を含め、最大文字数は32バイトです。指定可 能な文字は半角英数字および"-" (ハイフン)、"_”(アンダースコア)のみです。なお、要求元名には、1バイト以上の 文字列を、必ず設定する必要があります。 char *msg: NULLで終わるメッセージ文字列です。最大文字数はNULL文字を含めて1024バイトです。なお、メッセージ文字列 には、1バイト以上の文字列を必ず設定する必要があります。 復帰値 PR_OK(0): 正常終了しました。 PR_ERR_PARAM(-1): パラメタエラーが発生しました。 PR_STOP(-3): Open ReplyMessageサービスがユーザ要求により停止しました。 PR_ERR_CONECT(-11): Open ReplyMessageサービスと接続できません PR_ERR_SEND(-12): Open ReplyMessageサービスへの送信はできませんでした。 - 209 - PR_ERR_RCV(-13): Open ReplyMessageサービスからの応答を受信できませんでした。 PR_ERR_ORMSTOP(-26): Open ReplyMessageサービスの緩和停止中のため受け付けできません。 PR_ERR_UEXPCT(-99): 予期せぬエラーが発生しました。 参照 以下のメッセージ返答要求・返答APIを参照してください。 ・ ORMRequest()関数【UNIX版】 API格納場所 “返答メッセージのAPI【UNIX版】”を参照してください。 実行に必要な権限/実行環境 ・ 環境: 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 注意事項 ・ メッセージのエラー種別は、情報となります。そのため、監視イベント一覧画面には、このAPIで発行されたメッセー ジは表示されません。メッセージ一覧画面に表示されます。以下にメッセージフォーマットとメッセージの形式を示し ます。 - メッセージフォーマット SWORM : INFO: 要求元 メッセージ - メッセージの形式 ラベル:SWORM 重要度:一般 エラー種別:情報 監視イベント種別:システム ・ メッセージ、および応答内容の文字コードはシステムに設定されているロケールの文字コードを使用します。 ・ COBOLからのCALL命令を用いたAPI呼び出しはCOBOL97仕様以降のCOBOLに対応しています。 使用例 C言語によるプログラム例 オペレータに『返答文字列にエラーが発生しました。』というメッセージをORMSampleというサーバプログラムから発行し ます。 //ORMSample.c(サーバプログラム) int main(int argc, char **argv){ ret = ORMMessage ( "ORMSample", /* 要求元名 */ "返答文字列にエラーが発生しました。" ); /* メッセージ */ } - 210 - COBOLによるプログラム例 APP1.cob(サーバプログラム)は、オペレータに『返答文字列にエラーが発生しました。』というメッセージをAPP1というサー バプログラムから発行します。 *APP1.cob(サーバプログラム) 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. APP1. 000030 ENVIRONMENT DIVISION. 000040 DATA DIVISION. 000050 WORKING-STORAGE SECTION. 000060 01 CALLINFO. 000070 03 SUB-PG PIC X(256). 000080 03 APNAME PIC X(32). 000090 03 MSG PIC X(1024). 000100 03 RETURNVALUE PIC S9(09) COMP-5 VALUE 0. 000110 PROCEDURE DIVISION. 000120*初期化部 000130 INITIALIZE CALLINFO. 000140 MOVE "ORMMessage" TO SUB-PG. 000150 MOVE LOW-VALUE TO SUB-PG(11:). 000160 MOVE "APP1" TO APNAME. 000170 MOVE LOW-VALUE TO APNAME(5:). 000180 MOVE "返答文字列にエラーが発生しました。" TO MSG. 000190 MOVE LOW-VALUE TO MSG(35:). 000200*API呼び出し 000210 CALL SUB-PG 000220 USING 000230 BY REFERENCE APNAME 000240 BY REFERENCE MSG 000250 RETURNING RETURNVALUE 000260 END-CALL. 000270 STOP RUN. *API名 *呼び出し元AP名 *表示メッセージ *API復帰値 *API名のセット *終端文字のセット *呼び出し元AP名のセット *終端文字のセット *メッセージのセット *終端文字のセット *API呼び出し 4.70 ORMRequest()関数【UNIX版】 機能説明 任意の文字列を返答結果とする返答要求メッセージを運用管理サーバに通知します。 呼び出し形式 #include "ORMessage.h" int ORMRequest (char *apname, char *msg, struct ORM_REP_DAT_TAG *rep_dat, int rep_len, int time_out) パラメタ char *apname: 要求元名(任意の文字列)を示す文字列。最終文字のNULL文字を含め、最大文字数は32バイトです。指定可能な 文字は半角英数字および"-" (ハイフン)、"_”(アンダースコア)のみです。なお、要求元名には、1バイト以上の文字 列を、必ず設定する必要があります。 char *msg: NULLで終わるメッセージ文字列。最大文字数はNULL文字を含めて1024バイトです。なお、返答要求メッセージ文 字列には、1バイト以上の文字列を必ず設定する必要があります。 - 211 - struct ORM_REP_DAT_TAG *rep_dat: 返答結果を受け取る構造体の参照アドレス。 本領域はサーバプログラムにて以下に記述する“ORM_REP_DAT_TAG”構造体型の変数領域を指定してください。 構造体定義は“ORMessage.h”に定義されています。 int rep_len: 返答文字列の入力最大バイト長を設定します。指定可能範囲は1~320(単位:バイト)です。 int time_out: タイムアウト時間を個別に変更したい場合にタイムアウト時間の指定を行います。指定可能範囲は1~1440(単位:分) または0です。0を指定すると通常のタイムアウト時間1440分として扱います。 構造体の説明 struct ORM_REP_DAT_TAG { int resno; int len; char str[321]; }; // 返答識別番号 // 返答バイト長 // 返答結果文字列格納領域 int resno: 返答識別番号を格納します。 int len: 返答結果の返答バイト長を格納します。 char str[321]: 返答結果は末尾にNULL文字を付加された文字列として指定された参照変数に格納されます。オペレータからの返 答で、返答文字列が省略された場合は、領域の先頭にNULLが設定されます。 復帰値 PR_OK(0): 正常終了しました。 PR_ERR_PARAM(-1): パラメタエラーが発生しました。 PR_TIMEOUT(-2): タイムアウトが発生しました。 PR_STOP(-3): Open ReplyMessageサービスがユーザ要求により停止しました。 PR_ERR_CONECT(-11): Open ReplyMessageサービスと接続できません PR_ERR_SEND(-12): Open ReplyMessageサービスへの返答要求は送信できませんでした。 PR_ERR_RCV(-13): Open ReplyMessageサービスからの返答を受信できませんでした。 PR_ERR_CONNECTOVER(-21): 返答要求実行可能の最大数を超過しました。 PR_ERR_ORM_STOP(-26): Open ReplyMessageサービスの緩和停止中に返答要求が発行されました。 - 212 - PR_ERR_LENGTHOVER(-31): 入力最大バイト長を超える返答入力が行われました。 PR_ERR_UEXPCT(-99): 予期せぬエラーが発生しました。 補足: 戻り値がエラー(-1以下)の場合、構造体rep_datの値は以下のようになります。 ・ PR_ERR_LENGTHOVER(-31) の場合 構造体rep_datのメンバstrには、パラメタrep_lenに指定された長さまでの返答結果が設定されます。 構造体rep_datのメンバlenには、GUIまたは返答コマンドにより返答されたバイト長(NULL除く)が設定されます。メン バstrに設定された文字列の長さではありません。 構造体rep_datのメンバresnoには、返答番号が設定されます。 ・ PR_TIMEOUT(-2)およびPR_STOP(-3)の場合 構造体rep_datのメンバstrには、領域の先頭にNULLが設定されます。 構造体rep_datのメンバlenには、0が設定されます。 構造体rep_datのメンバresnoには、返答番号が設定されます。 ・ 上記以外の場合 構造体rep_datのメンバstrには、領域の先頭にNULLが設定されます。 構造体rep_datのメンバlenには、0が設定されます。 構造体rep_datのメンバresnoには、0が設定されます。 参照 以下のメッセージ返答要求・返答APIを参照してください。 ・ ORMMessage()関数【UNIX版】 API格納場所 “返答メッセージのAPI【UNIX版】”を参照してください。 実行に必要な権限/実行環境 ・ 環境: 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。 注意事項 ・ 返答結果は、半角英数字で124文字以内になるようにプログラムを作成してください。日本語を使用する場合は、日 本語61文字以内になるようにプログラムを作成してください。 ・ メッセージのエラー種別は、エラーとなります。以下にメッセージフォーマットとメッセージの形式を示します。 - メッセージフォーマット 返答番号 要求元 メッセージ - メッセージの形式 ラベル:なし 重要度:重要 エラー種別:エラー 監視イベント種別:システム ・ メッセージ、および応答内容の文字コードはシステムに設定されているロケールの文字コードを使用します。 ・ COBOLからのCALL命令を用いたAPI呼び出しはCOBOL97仕様以降のCOBOLに対応しています。 - 213 - 使用例 C言語によるプログラム例 App1.c(サーバプログラム)は、オペレータに『ディレクトリを入力してください。』という返答要求メッセージをApp1というサー バプログラムから発行し、最大320バイトの返答内容を120分間待ちます。 返答メッセージはdirdat構造体のstrに保存されます。 返答メッセージの長さはdirdat構造体のlenに保存されます。 返答メッセージの返答番号はdirdat構造体のresnoに保存されます。 //App1.c(サーバプログラム) #include "ORMessage.h" #define DIRNAME_LENGTH 320 /* DIR文字列長 */ int main(int argc, char **argv){ struct ORM_REP_DAT_TAG dirdat; /* 返答結果構造体 */ /* /* /* /* /* */ */ */ */ */ ret = ORMRequest ( "App1", "ディレクトリを入力してください。", &dirdat, DIRNAME_LENGTH, 120 ); 要求元名 返答要求メッセージ 返答内容格納領域 入力最大バイト長 タイムアウト時間 } COBOLによるプログラム例 APP1.cob(サーバプログラム)は、返答要求メッセージをAPP1というサーバプログラムから発行し、最大320バイトの返答 内容を120分間待ちます。 返答メッセージはSTRに保存されます。 返答メッセージの長さはLENに保存されます。 返答メッセージの返答番号はRESNOに保存されます。 *APP1.cob(サーバプログラム) 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. APP1. 000030 ENVIRONMENT DIVISION. 000040 DATA DIVISION. 000050 WORKING-STORAGE SECTION. 000060 01 CALLINFO. 000070 03 SUB-PG PIC X(256). 000080 03 APNAME PIC X(32). 000090 03 MSG PIC X(1024). 000100 03 REP-DAT. 000110 05 RESNO PIC S9(09) COMP-5 VALUE 0. 000120 05 LEN PIC S9(09) COMP-5 VALUE 0. 000130 05 STR PIC X(321). 000140 03 REP-LEN PIC S9(09) COMP-5 VALUE 320. 000150 03 TIME-OUT PIC S9(09) COMP-5 VALUE 120. 000160 03 RETURNVALUE PIC S9(09) COMP-5 VALUE 0. 000170 PROCEDURE DIVISION. 000180*初期化部 000190 INITIALIZE CALLINFO. 000200 MOVE "ORMRequest" TO SUB-PG. 000210 MOVE LOW-VALUE TO SUB-PG(11:). 000220 MOVE "APP1" TO APNAME. 000230 MOVE LOW-VALUE TO APNAME(5:). 000240 MOVE "ディレクトリを入力してください。" TO MSG. 000250 MOVE LOW-VALUE TO MSG(33:). 000260*API呼び出し 000270 CALL SUB-PG - 214 - *API名 *呼び出し元AP名 *表示メッセージ *返答結果格納構造体 *返答番号 *返答バイト長 *返答内容 *入力最大バイト長 *タイムアウト *API復帰値 *API名のセット *終端文字のセット *呼び出し元AP名のセット *終端文字のセット *メッセージのセット *終端文字のセット *API呼び出し 000280 USING 000290 BY REFERENCE APNAME 000300 BY REFERENCE MSG 000310 BY REFERENCE REP-DAT 000320 BY VALUE REP-LEN 000330 BY VALUE TIME-OUT 000340 RETURNING RETURNVALUE 000350 END-CALL. 000360*結果表示 000370 DISPLAY RESNO. 000380 DISPLAY LEN. 000390 DISPLAY STR. 000400 DISPLAY RETURNVALUE. 000410 STOP RUN. *応答番号を表示 *応答長を表示 *応答内容を表示 *API復帰値を表示 4.71 vopfmt()関数 機能説明 vopfmt()関数は、“ラベル:エラー種別:メッセージテキスト”の形式でメッセージを作成し、そのメッセージを指定したstream に出力するとともに、システム監視エージェントへメッセージを通知します。 ラベルの指定は、opsetlabel()関数によって行います。ラベルが指定されない場合、“エラー種別:メッセージテキスト”の 形式でメッセージが作成されます。 システム監視エージェント未起動時は、メッセージ一時保存ファイルに保存され、システム監視エージェント起動時に読 み込まれます。 呼び出し形式 #include <stdarg.h> #include <opfmt.h> int vopfmt(FILE *stream, long flags, char *format, va_list ap); パラメタ stream: 出力先のファイルポインタを指定します。streamにNULLを指定した場合は、システム監視エージェントだけに通知さ れます。 flags: 作成するメッセージの形式、メッセージカタログへのアクセスの有無、およびエラー種別を指定します。 flagsは複数指定できますが、以下の各グループから1つずつしか指定できません。 メッセージ作成形式フラグ: どのようなメッセージを作成するか指定します。 MM_NOSTD: “ラベル:エラー種別:メッセージテキスト”形式ではなく、メッセージテキストだけがメッセージとして通知されま す。MM_NOSTDが指定された場合、エラー種別フラグは無視されます。 MM_STD: “ラベル:エラー種別:メッセージテキスト”形式でメッセージが作成されます。メッセージ作成形式フラグが指定 されない場合、省略値はMM_STDです。 カタログアクセスフラグ:【UNIX】 メッセージカタログからメッセージテキストの取り出しを行うか行わないかの指定をします。 - 215 - MM_NOGET: メッセージカタログからメッセージテキストの取り出しを行いません。formatに指定された文字列がそのままメッ セージテキストとして使用されます。 MM_GET: メッセージカタログからメッセージテキストの取り出しを行います。カタログアクセスフラグが指定されない場合、 省略値はMM_GETです。 エラー種別フラグ: 作成されるエラーメッセージのエラー種別(重要度)を指定します。エラー種別フラグが指定されていない場合、省 略値はMM_ERRORです。指定される値により、エラー種別と重要度は以下のようになります。 - Windows版 指定するエラー種別フラグ エラー種別 重要度 MM_HALT HALT 最重要 MM_ERROR ERROR 重要 MM_WARNING WARNIN G 警告 MM_NOTICE INFO 通知 MM_INFO INFO 一般 - UNIX版 指定するエラー種別フラグ エラー種別 重要度 MM_HALT 停止 最重要 MM_ERROR エラー 重要 MM_WARNING 警告 警告 MM_NOTICE 情報 通知 MM_INFO 情報 一般 format: メッセージテキストを指定します。 【Windows】 メッセージテキストは、printf()関数と同じ形式で指定します。メッセージテキストが決定できない場合は、メッセージテ キスト文字列として、“Message not found!!\n”が使用されます。 args: formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、args の数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不 定です。 ap: va_startで初期化された可変個数引数リストです。 【UNIX】 メッセージカタログの指定、および初期値のメッセージテキストをシステムが提供している、printf()関数と同じ形式で 指定します。システムが提供している、printf()関数の詳細については、printf(3s)のマニュアルページを参照してく ださい。 formatには、以下の形式のようにコロン(:)でつないだ1つの文字列で指定します。 - 216 - - メッセージカタログを指定する場合 catalog:msgnum:deftext - 初期値のメッセージカタログを指定する場合 :msgnum:deftext catalog: メッセージカタログ名を指定します。catalogは、14バイト以内の文字列を指定してください。これらの文字列には、 NULL(\0)、スラッシュ(/)、およびコロン(:)は使用できません。 catalogはopsetcat()関数で初期値を指定することができます。opsetcat()関数でメッセージカタログが指定されて いる場合、catalogは省略することができます。ただし、msgnumの直前につくコロン(:)は省略してはいけません。 opsetcat()関数の詳細については、“opsetcat()関数”を参照してください。 msgnum: catalogで指定したメッセージカタログの取り出したいメッセージテキスト番号を指定します。 deftext: catalogで指定したカタログから、メッセージテキストが取り出せない場合の初期値のメッセージテキストを指定しま す。 環境変数LC_MESSAGES、またはLANGに設定されたロケールに、catalogで指定したメッセージカタログが存在 しない場合、またはmsgnumが範囲外の場合、opfmt()関数は、Cロケールからテキストを取り出そうとします。これ に失敗すると、opfmt()関数は、deftextをメッセージテキストとして使用します。formatが正しい形式で指定されず、 メッセージテキストが決定できない場合は、メッセージテキスト文字列として、“Message not found!!\n”が使用され ます。 args: formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、args の数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不 定です。 ap: va_startで初期化された可変個数引数リストです。詳細については、システムが提供しているstdarg(5)のマニュア ルページを参照してください。 注意 “%”をメッセージテキストとして使用する場合は、2つ連続させて(“%%”)記述します。 参照 以下のシステム監視のAPIを参照してください。 ・ opfmt()関数 ・ opsetlabel()関数 復帰値 0以上: 正常終了。通知したメッセージのバイト数。 -1 異常終了。 - 217 - API格納場所 “メッセージ作成のAPI”を参照してください。 注意事項 運用管理サーバでクラスタ待機系の監視を行っている場合、待機系のシステムからvopfmt関数を使用してメッセージを 出力しても運用系システムでのメッセージ監視はできません。なお、待機系時に実行したvopfmt関数の結果は、APIを 使用したアプリケーションを実行したシステムが運用系になったときにメッセージが通知されます。 UNIXの場合は、以下の点にも注意が必要です。 ・ 環境変数LC_MESSAGES、またはLANGに指定されたロケールを有効にするために、本関数の前にシステムが提 供しているsetlocale()関数を呼び出す必要があります。詳細については、setlocale(3C)のマニュアルページを参照 してください。 ・ 使用できるメッセージカタログの形式は、システムが提供しているmkmsgsコマンドでフォーマットされたメッセージカ タログです。メッセージカタログの作成方法の詳細については、システムが提供しているgettxt(3C)、mkmsgs(1)の マニュアルページを参照してください。 ・ 各パラメタは、メッセージの長さ(以下に示す文字列の長さの合計)が2047バイト以内になるように指定してください。 これを超える場合、メッセージは先頭からの2047バイト分のみがSystemwalker Centric Managerに通知されます。 - ラベル (注1) - エラー種別 (注2) - メッセージ (注3) 注1) flagsにMM_NOSTDを指定した場合 0です。 上記以外の場合 opsetlabel()関数でラベルを指定した場合は指定したラベルの長さ+2です。未指定の場合は0です。 注2) flagsにMM_NOSTDを指定した場合 0です。 上記以外の場合 flagsにエラー種別フラグを指定した場合はエラー種別フラグに対応するエラー種別の長さ+2です。未指定の場 合は8(デフォルトのエラー種別"エラー"の長さ+2)です。 注3) flagsのカタログアクセスフラグにMM_NOGETを指定する場合 formatの長さです。 formatが%で始まる書式を含む場合、書式を引数で置換した文字列の長さです。 flagsのカタログアクセスフラグ未指定またはMM_GETを指定する場合 opsetcat()関数またはformat内のcatalogで指定したメッセージカタログの中の、msgnum(メッセージテキスト番号) で指定したメッセージの長さです。 メッセージが%で始まる書式を含む場合、書式を引数で置換した文字列の長さです。 opsetcat()関数またはformat内のcatalogで有効なメッセージカタログ名を指定していない場合、またはmsgnumに 範囲外のメッセージテキスト番号を指定した場合、format内のdeftextの長さです。 使用例 使用例を以下に示します。 - 218 - opsetlabel("LABEL"); vopfmt(stderr, MM_INFO, "test:23:test message 1 --%s\n",ap); 実行結果/出力形式 通知メッセージ LABEL: INFO: test message 1 --No such file or directory - 219 - 第5章 APIを利用したサンプルプログラム システム監視のAPIを使用したサンプルプログラムについて説明します。このサンプルプログラムは、動作確認済みサン プルプログラムのソースです。 サンプルプログラムを以下に説明します。 ・ 監視イベントのAPIを使用したサンプルプログラム ・ 監視メッセージのAPIを使用したサンプルプログラム ・ リモートコマンドのAPIを使用したサンプルプログラム 注意 【Windows版】 サンプルプログラムはVisual C++ 2005のワークスペースの形式で提供しています。サンプルプログラムのビルドでは、以 下のディレクトリ内のファイルを使用しています。 ・ Systemwalkerインストールディレクトリ\Mpwalker.dm\include ・ Systemwalkerインストールディレクトリ\Mpwalker.dm\lib サンプルプログラムのワークスペースでは、Systemwalker Centric Managerのインストール先を“C:\Systemwalker”として いますので、ビルド時は実際の環境に合わせる必要があります。Visual C++ 2005でサンプルプログラムのワークスペー スを開き、Systemwalker Centric Managerの実際のインストール先に合わせて修正してからビルドしてください。 “プロジェクト”メニューの“プロパティ”項目を選択して表示される“プロパティページ”の以下の箇所を修正します。 ・ [構成プロパティ]-[C/C++]-[全般]を選択すると表示される、[追加のインクルードディレクトリ] ・ [構成プロパティ]-[リンカ]-[全般]を選択すると表示される、[追加のライブラリディレクトリ] 【UNIX版】 サンプルプログラムはSUN WorkShopのMakefileの形式で提供しています。サンプルプログラムのコンパイルでは、以下 のディレクトリ内のファイルを使用しています。 ・ /opt/systemwalker/include ・ /opt/systemwalker/lib コンパイル時は実際の環境に合わせる必要があります。テキストエディタでMakefileを開き、Systemwalker Centric Manager の実際のインストール先に合わせて修正してからコンパイルしてください。 また、SUN WorkShopのCコンパイラへのパスとして以下が指定されているので、開発環境に合わせて同様に修正してく ださい。 ・ /opt/SUNWspro/bin/CC 5.1 監視イベントのAPIを使用したサンプルプログラム 監視イベントのAPIを使用したサンプルプログラムを以下に示します。 ・ 監視イベントログの読み出し要求のサンプルプログラム ・ イベントの取り出し要求のサンプルプログラム ・ イベントの対処要求のサンプルプログラム 格納ディレクトリ DVDの以下のディレクトリに格納しています。 なお、Windows版は、Visual C++ 2005のワークスペースの形で格納しています。 - 220 - 格納ディレクトリ サンプルプログラムの内容 Windows32版 MAIN\tool\sample\evt_log Windows64版 Server\tool\sample\evt_log Solaris版 Solaris/tool_unx/sample/evt_log Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/evt_log Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/evt_log 監視イベントログの読み出し要求 のサンプルプログラム Red Hat Enterprise Linux 7 Windows32版 MAIN\tool\sample\evt_rt Windows64版 Server\tool\sample\evt_rt Solaris版 Solaris/tool_unx/sample/evt_rt Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/evt_rt Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/evt_rt イベントの取り出し要求のサンプ ルプログラム Red Hat Enterprise Linux 7 Windows32版 MAIN\tool\sample\evt_stat Windows64版 Server\tool\sample\evt_stat Solaris版 Solaris/tool_unx/sample/evt_stat Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/evt_stat Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/evt_stat イベントの対処要求のサンプルプ ログラム Red Hat Enterprise Linux 7 実行権限/実行環境 【Windows版】 ・ Administrator権限/DmAdmin権限/DmOperation権限/DmReference権限が必要です。 ・ 運用管理サーバで実行可能です。 【UNIX版】 ・ システム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理サーバで実行可能です。 5.1.1 監視イベントログの読み出し要求のサンプルプログラム このサンプルプログラムは、監視イベントログをすべて読み出してコンソールに表示します。 サンプルプログラム evtlog_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーし、そこ でVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 - 221 - 3. サンプルプログラムの入っているディレクトリで“make”を実行します。 実行方法 【Windows版】 1. コンパイル後のevtlog_sample.exeを任意のディレクトリにコピーして、“evtlog_sample.exe”を入力して実行します。 任意ディレクトリ\evtlog_sample.exe 2. 実行結果がコンソールに出力され、すべて出力して終了します。 【UNIX版】 1. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 2. コンパイル後のevtlog_sampleを任意のディレクトリにコピーして、“./evtlog_sample”を入力して実行します。 % cd 任意ディレクトリ % ./evtlog_sample 3. 実行結果がコンソールに出力され、すべて出力して終了します。 使用するAPI ・ Mp_OpenEventLog(): 監視イベントログの読み出し開始要求 ・ Mp_ReadEventLog(): 監視イベントログの読み出し要求 ・ Mp_CloseEventLog(): 監視イベントログの読み出し終了要求 5.1.2 イベントの取り出し要求のサンプルプログラム このサンプルプログラムは、発生する監視イベントをリアルタイムに受信し、内容をコンソールに表示します。 サンプルプログラム evtrt_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーし、そこ でVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで“make”を実行します。 実行方法 【Windows版】 1. システム監視のAPIが使えるようにします。 手順については、“システム監視のAPIを利用する”を参照してください。 2. コンパイル後のevtrt_sample.exeを任意のディレクトリにコピーして、“evtrt_sample.exe”を入力して実行します。 任意ディレクトリ\evtrt_sample.exe 3. evtrt_sample.exeは監視イベントの発生待ちとなります。 - 222 - 4. 監視イベントが発生すると、その内容をコンソールに出力して再び監視イベントの発生待ちとなります。 5. 終了させるときは、コンソールからEnterキーを入力します。 【UNIX版】 1. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 2. システム監視のAPIが使えるようにします。 手順については、“システム監視のAPIを利用する”を参照してください。 3. コンパイル後のevtrt_sampleを任意のディレクトリにコピーして、“./evtrt_sample”を入力して実行します。 % cd 任意ディレクトリ % ./evtrt_sample 4. evtrt_sampleは監視イベントの発生待ちとなります。 5. 監視イベントが発生すると、その内容をコンソールに出力して再び監視イベントの発生待ちとなります。 6. 終了させるときは、コンソールからEnterキーを入力します。 使用するAPI ・ Mp_OpenEvent(): イベントの監視開始要求 ・ Mp_ReadEvent(): イベントのリード要求 ・ Mp_GetEventMap(): イベントの取り出し要求【Windows】 ・ Mp_CloseEvent(): イベントの監視終了要求 5.1.3 イベントの対処要求のサンプルプログラム このサンプルプログラムは、監視イベント番号1~10の監視イベントログのステータスを“対処済”に設定します。 サンプルプログラム evtstat_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーし、そこ でVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで“make”を実行します。 実行方法 【Windows版】 1. コンパイル後のevtstat_sample.exeを任意のディレクトリにコピーして、“evtstat_sample.exe”を入力して実行します。 任意ディレクトリ\evtstat_sample.exe 2. evtstat_sampleは監視イベント番号1~10の監視イベントログのステータスをすべて“対処済”に設定して終了しま す。 【UNIX版】 - 223 - 1. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 2. コンパイル後のevtstat_sampleを任意のディレクトリにコピーして、“./evtstat_sample”を入力して実行します。 % cd 任意ディレクトリ % ./evtstat_sample 3. evtstat_sampleは監視イベント番号1~10の監視イベントログのステータスをすべて“対処済”に設定して終了しま す。 使用するAPI ・ Mp_OpenEventStat(): イベントの状態変更開始要求 ・ Mp_ChangeEventStat(): イベントの対処要求 ・ Mp_CloseEventStat(): イベントの状態変更終了要求 注意事項 サンプルプログラムでは、監視イベント番号1~10の監視イベントのステータスを変更します。変更対象の監視イベントを 変更したい場合はサンプルソースを修正して作成し直してください。 5.2 監視メッセージのAPIを使用したサンプルプログラム 監視メッセージのAPIを使用したサンプルプログラムを以下に示します。 ・ メッセージログの読み出し要求のサンプルプログラム ・ メッセージの取り出し要求のサンプルプログラム 格納ディレクトリ DVDの以下のディレクトリに格納しています。 なお、Windows版は、Visual C++ 2005のワークスペースの形で格納しています。 格納ディレクトリ サンプルプログラムの内容 Windows32版 MAIN\tool\sample\msg_log Windows64版 Server\tool\sample\msg_log Solaris版 Solaris/tool_unx/sample/msg_log Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/msg_log Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/msg_log メッセージログの読み出し 要求のサンプルプログラ ム Red Hat Enterprise Linux 7 Windows32版 MAIN\tool\sample\msg_rt Windows64版 Server\tool\sample\msg_rt Solaris版 Solaris/tool_unx/sample/msg_rt Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/msg_rt Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/msg_rt メッセージの取り出し要求 のサンプルプログラム Red Hat Enterprise Linux 7 実行権限/実行環境 ・ 実行形式のプログラムは、運用管理サーバのものを部門管理サーバ/業務サーバで実行することはできません。 また、部門管理サーバ/業務サーバのものを運用管理サーバで実行することはできません。 【Windows版】 - 224 - ・ 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 【UNIX版】 ・ 運用管理サーバ/部門管理サーバ/業務サーバではシステム管理者(スーパーユーザ)権限が必要です。 ・ 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 5.2.1 メッセージログの読み出し要求のサンプルプログラム このサンプルプログラムは、監視メッセージログをすべてコンソールに出力します。 サンプルプログラム msglog_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムをSystemwalker Centric Managerのインストールされている環境の任意のディレクトリに コピーし、そこでVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで、コンパイルしたプログラムの実行予定環境が運用管理サーバの場 合は“Makefile.mgr”、それ以外の場合は“Makefile.agt”を“Makefile”にリネームしてください。 4. サンプルプログラムの入っているディレクトリで“make”を実行します。 実行方法 【Windows版】 1. コンパイル後のmsglog_sample.exeを任意のディレクトリにコピーして、“msglog_sample.exe”を入力して実行しま す。 任意ディレクトリ\msglog_sample.exe 2. 監視メッセージログがすべてコンソールに出力され終了します。 【UNIX版】 1. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 2. コンパイル後のmsglog_sampleを任意のディレクトリにコピーして、“msglog_sample”を入力して実行します。 % cd 任意ディレクトリ % ./msglog_sample 3. 監視メッセージログがすべてコンソールに出力され終了します。 使用するAPI ・ Mp_OpenMsgLog(): メッセージログの読み出し開始要求 ・ Mp_ReadMsgLog(): メッセージログの読み出し要求 ・ Mp_CloseMsgLog(): メッセージログの読み出し終了要求 - 225 - 5.2.2 メッセージの取り出し要求のサンプルプログラム このサンプルプログラムは、発生する監視メッセージをリアルタイムに受信してその内容をコンソールに出力します。 サンプルプログラム msgrt_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムをSystemwalker Centric Managerのインストールされている環境の任意のディレクトリに コピーし、そこでVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで、コンパイルしたプログラムの実行予定環境が運用管理サーバの場 合は“Makefile.mgr”、それ以外の場合は“Makefile.agt”を“Makefile”にリネームしてください。 4. サンプルプログラムの入っているディレクトリで“make”を実行します。 実行方法 【Windows版】 1. システム監視のAPIが使えるようにします。(ただし、この操作は運用管理サーバで実行する場合に必要です。) 手順については、“システム監視のAPIを利用する”を参照してください。 2. コンパイル後のmsgrt_sample.exeを任意のディレクトリにコピーして、“msgrt_sample.exe”を入力して実行します。 任意ディレクトリ\msgrt_sample.exe 3. msgrt_sample.exeは監視メッセージの発生待ちとなります。 4. 監視メッセージが発生すると、その内容をコンソールに出力して再び監視メッセージの発生待ちとなります。 5. 終了させるときは、コンソールからEnterキーを入力します。 【UNIX版】 1. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 2. システム監視のAPIが使えるようにします。(ただし、この操作は運用管理サーバで実行する場合に必要です。) 手順については、“システム監視のAPIを利用する”を参照してください。 3. コンパイル後のmsgrt_sampleを任意のディレクトリにコピーして、“./msgrt_sample”を入力して実行します。 % cd 任意ディレクトリ % ./msgrt_sample 4. msgrt_sampleは監視メッセージの発生待ちとなります。 5. 監視メッセージが発生すると、その内容をコンソールに出力して再び監視メッセージの発生待ちとなります。 6. 終了させるときは、コンソールからEnterキーを入力します。 使用するAPI ・ Mp_OpenMsg(): メッセージの通知開始要求 ・ Mp_ReadMsg(): メッセージのリード要求 ・ Mp_GetMsgMap(): メッセージの取出し要求【Windows版】 - 226 - ・ Mp_CloseMsg(): メッセージの通知終了要求 5.3 リモートコマンドのAPIを使用したサンプルプログラム リモートコマンドのAPIを使用したサンプルプログラムを以下に示します。 ・ リモートコマンドログの読み出し要求のサンプルプログラム ・ リモートコマンドの応答リード要求のサンプルプログラム 格納ディレクトリ DVDの以下のディレクトリに格納しています。 なお、Windows版は、Visual C++ 2005のワークスペースの形で格納しています。 格納ディレクトリ サンプルプログラムの内容 Windows32版 MAIN\tool\sample\rmt_log Windows64版 Server\tool\sample\rmt_log Solaris版 Solaris/tool_unx/sample/rmt_log Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/rmt_log Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/rmt_log リモートコマンドログの読み 出し要求のサンプルプログ ラム Red Hat Enterprise Linux 7 Windows32版 MAIN\tool\sample\rmt_rt Windows64版 Server\tool\sample\rmt_rt Solaris版 Solaris/tool_unx/sample/rmt_rt Red Hat Enterprise Linux 5 Linux/RHEL5/tool_unx/sample/rmt_rt Red Hat Enterprise Linux 6 Linux/RHEL6/tool_unx/sample/rmt_rt リモートコマンドの応答リー ド要求のサンプルプログラ ム Red Hat Enterprise Linux 7 実行権限/実行環境 ・ 運用管理サーバ/部門管理サーバ/業務サーバで実行可能です。実行形式のプログラムも各サーバ間で同一です。 ・ リモートコマンドログの読み出し要求のサンプルプログラム 【Windows版】 - 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限/ DmReference権限が必要です。 - 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 【UNIX版】 - 運用管理サーバ/部門管理サーバ/業務サーバでは、システム管理者(スーパーユーザ)権限が必要です。 - 運用管理クライアント/クライアントでは、一般ユーザ権限で実行可能です。 ・ リモートコマンドの応答リード要求のサンプルプログラム 【Windows版】 - 運用管理サーバ/部門管理サーバ/業務サーバでは、Administrator権限/DmAdmin権限/DmOperation権限が必 要です。 - 運用管理クライアント/クライアントでは、Administrator権限が必要です。 【UNIX版】 - 227 - - 運用管理サーバ/部門管理サーバ/業務サーバでは、システム管理者(スーパーユーザ)権限が必要です。 - 運用管理クライアント/クライアントでは、Administrator権限が必要です。 5.3.1 リモートコマンドログの読み出し要求のサンプルプログラム このサンプルプログラムは、被監視システムのノード“host1”のリモートコマンドログをすべて読み出してコンソールに出力 します。 サンプルプログラム rmtlog_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムをSystemwalker Centric Managerのインストールされている環境の任意のディレクトリに コピーし、そこでVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで“make”を実行します。 本サンプルプログラムは、リモートコマンドを実行する先のノード名が“host1”に固定されています。そのためそのまま作 成しても実行できません。ソースプログラムを修正して実行環境に実在する監視対象ノードのノード名に変更してから作 成してください。 実行方法 【Windows版】 1. コンパイル後のrmtlog_sample.exeを任意のディレクトリにコピーして、“rmtlog_sample.exe”を入力して実行します。 任意ディレクトリ\rmtlog_sample.exe 2. リモートコマンドログがすべてコンソールに出力され終了します。 【UNIX版】 1. コンパイル後のrmtlog_sampleを任意のディレクトリにコピーして、“./rmtlog_sample”を入力して実行します。 % cd 任意ディレクトリ % ./rmtlog_sample 2. リモートコマンドログがすべてコンソールに出力され終了します。 使用するAPI ・ Mp_OpenRemoteCmdLog(): リモートコマンドログの読み出し開始要求 ・ Mp_ReadRemoteCmdLog(): リモートコマンドログの読み出し要求 ・ Mp_CloseRemoteCmdLog(): リモートコマンドログの読み出し終了要求 注意事項 起動する前に、ソースプログラム中で使用しているノード名(“host1”)を実在する監視対象のノード名に修正して作成し直 してください。 - 228 - 5.3.2 リモートコマンドの応答リード要求のサンプルプログラム このサンプルプログラムは、被監視システムのノード“host1”に対して“dir”コマンド、または“ls”コマンドをリモートコマンド で実行し、その結果をコンソールに出力します。 サンプルプログラム rmtrt_sample.c 作成方法 【Windows版】 1. DVDのサンプルプログラムをSystemwalker Centric Managerのインストールされている環境の任意のディレクトリに コピーし、そこでVisual C++ 2005で開いてビルドします。 【UNIX版】 1. DVDのサンプルプログラムを運用管理サーバのインストールされている環境の任意のディレクトリにコピーします。 2. 環境変数LD_LIBRARY_PATHに“/opt/systemwalker/lib”を設定します。 3. サンプルプログラムの入っているディレクトリで“make”を実行します。 本サンプルプログラムは、リモートコマンドを実行する先のノード名が“host1”に固定されています。そのためそのまま作 成しても実行できません。ソースプログラムを修正して実行環境に実在する監視対象ノードのノード名に変更してから作 成してください。 実行方法 【Windows版】 1. コンパイル後のrmtlog_sample.exeを任意のディレクトリにコピーして、“rmtlog_sample.exe”を入力して実行します。 任意ディレクトリ\rmtrt_sample.exe 2. リモートコマンドで実行した“dir”コマンドの結果がコンソールに出力されて終了します。 【UNIX版】 1. コンパイル後のrmtlog_sampleを任意のディレクトリにコピーして、“./rmtlog_sample”を入力して実行します。 % cd 任意ディレクトリ % ./rmtrt_sample 2. リモートコマンドで実行した“ls”コマンドの結果がコンソールに出力されて終了します。 使用するAPI ・ Mp_OpenRemoteCmd(): リモートコマンドの開始要求 ・ Mp_ExecRemoteCmd(): リモートコマンドのコマンド実行要求 ・ Mp_RespRemoteCmd(): リモートコマンドの実行結果取り出し要求 ・ Mp_GetRemoteCmdMap():リモートコマンドの実行結果取り出し【Windows版】 ・ Mp_CloseRemoteCmd(): リモートコマンドの終了要求 注意事項 起動する前に、ソースプログラム中で使用しているノード名(“host1”)を実在する監視対象のノード名に修正して作成し直 してください。 - 229 - 第3部 スクリプト 第6章 スクリプトの文法..............................................................................................................231 第7章 サンプルスクリプトのカスタマイズ.....................................................................................269 第8章 スクリプトの導入と削除....................................................................................................318 - 230 - 第6章 スクリプトの文法 Systemwalkerスクリプトの形式および作成編集に使用するコマンド、制御文について説明します。 ・ Systemwalkerスクリプトの形式 ・ Systemwalkerスクリプトの文法 ・ Systemwalkerスクリプトで使用するコマンド・制御文 6.1 Systemwalkerスクリプトの形式 Systemwalkerスクリプトの形式について説明します。 ・ メッセージ監視アクション型スクリプトの形式 ・ 単体起動型スクリプトの形式 ・ ライブラリ型スクリプトの形式 ファイル名 拡張子が“swt”となっているファイルを、Systemwalkerスクリプトとして扱います。 ~.swt 6.1.1 メッセージ監視アクション型スクリプトの形式 プロシジャ名 先頭3文字は“Usr”です。 例) UsrTextChange1 形式 #ACTION #ACTION 登録形態がメッセージ監視アクション型であることを示すキーワードです。 注意事項 スクリプトを新規に作成することはできません。 メッセージ監視アクション型スクリプトは、サンプルスクリプトをコピーし、本書に記載された範囲内で編集作成することだ けできます。ユーザが独自の機能を新規に作成することはできません。サンプルスクリプトの詳細については“サンプル スクリプトのカスタマイズ”を参照してください。 6.1.2 単体起動型スクリプトの形式 形式 #EXEC 【主処理】 #EXEC 登録形態が単体起動型であることを示すキーワードです。 - 231 - 【主処理】 任意の処理の記述です。 入力引数/戻り値 起動引数 スクリプトの起動時に引数として、スクリプト内部で処理する情報を与えることができます。スクリプトファイル名とともに指 定した起動引数は、以下の予約変数を使用することで、スクリプト内で扱うことができます。 予約変数 説明 argc 引数の個数が格納されます。 argv 引数の内容が格納されます。 引数の参照 引数の参照は、作業用変数に引数を分解して取り出した上で行います。 引数取り出しコマンドの書式は以下のとおりです。 set varname [lindex $argv n] コマンド 説明 set 変数に値を格納するコマンド varname 値を格納する変数名。任意の名前を指定。 lindex 起動引数を取り出すコマンド argv 起動引数が格納された変数 ($を先頭に付けることで変数の中身を表す) n (取り出す引数の位置-1)の数値を指定。 例) 第1引数~第3引数を変数prm1, prm2, prm3にそれぞれ取り出します。 set prm1 [lindex $argv 0] set prm2 [lindex $argv 1] set prm3 [lindex $argv 2] 注意事項 stpswctclコマンド(スクリプト停止コマンド)により停止される場合やシャットダウン時には、スクリプトのプロセスは強制的に 終了されます。そのため、これらの契機で終了のための処理を実行させることはできません。 6.1.3 ライブラリ型スクリプトの形式 プロシジャ名 先頭3文字は“Usr”です。 例) UsrTextChange1 形式 #LIB proc ProcName {args} { - 232 - 【主処理】 } #LIB 登録形態がライブラリ型であることを示すキーワードです。 proc文 ユーザコマンドとして呼び出されるプロシジャです。 ProcName “Usr”で始まる一意のプロシジャ名です。 args プロシジャへの入力引数となる変数名です。引数がない場合は、“{}”と記述します。引数が複数ある場合は、変 数名を空白で区切って並べます。プロシジャの呼び出しには、ここで定義した個数の引数を必ず指定します。 例) 引数で指定された3つの文字列を1つにつなげるプロシジャとその呼び出しスクリプト プロシジャ定義(ライブラリ型スクリプト) proc UsrTestScript {prm1 prm2 prm3} { return "$prm1 $prm2 $prm3" } 【主処理】 任意の処理の記述です。 入力引数/戻り値 任意 注意事項 ライブラリ型のスクリプトはメッセージ監視アクション型や単体起動型のスクリプトから呼び出される位置づけになるため、 ユーザスクリプトを作成する場合は以下のことに注意してください。 ・ サンプルスクリプトをカスタマイズする場合、exit文は記述しないでください。 ・ スクリプトを新規作成する場合、プロシジャ内でexit文を記述するときは、メッセージ監視アクション型スクリプトからの 呼び出しでexit文が実行されないようにします。また、単体起動型スクリプトから呼び出しの場合は、exit文の前には エラーメッセージを出すなどをし、プロシジャ内でのプロセスの終了がわかるようにします。 ・ プロシジャ内でファイル(トレースファイルを含む)のオープンを行う場合、対応するクローズ処理は確実に行ってくだ さい。クローズもれがある場合、ファイルアクセス用の資源を圧迫するおそれがあります。 6.2 Systemwalkerスクリプトの文法 Systemwalkerスクリプトの文法について説明します。 変数 変数名は、アルファベットで始まる任意の長さの英数字が使用できます。大文字と小文字は区別され、また“_”(アンダー バー)を含むことができます。 ポイント 環境変数 環境変数は、予約変数“env”にあらかじめ格納されています。 - 233 - スクリプト内では、“env”の直後に個々の環境変数名を“()”(小括弧)で指定した変数名として扱い、環境変数の参照/更 新は、env(環境変数名)に対して行います。 予約変数envを使用する場合は、参照/更新より前に以下を記述してください。 global env 例) 環境変数“PATH”の参照/更新に使用する変数名 env(PATH) 構文 構成 Systemwalkerスクリプトは、コマンド文の集まりで構成されています。スクリプトの記述内容は、本章の文法、およびコマン ドの説明の範囲内で任意です。コマンド文の記述形式は、以下のとおりです。 コマンド オプション引数 スクリプトファイル内は、以下のコマンド文の集まりになっています。 コマンド文 … … … … コマンドの区切り スクリプト行は、“;”(セミコロン)か改行が、コマンドの区切りとなります。 例) 変数abc,defにそれぞれ値を格納する場合 set abc ABC set def DEF または、 set abc ABC ; set def DEF “$”(ダラー記号)による変数置換 変数置換は、“$”(ダラー記号)を使用します。 変数置換とは、変数に格納した値を参照することです。変数に格納した値が未設定の場合に、変数置換を行うとスクリプ トエラーとなり、異常終了します。 例) 変数abcに格納した値を別の変数defに格納する場合 set abc ABC set def $abc “[]”(大括弧)によるコマンド置換 スクリプトのコマンドには、復帰値を返すものがあります。 コマンド置換とは、呼び出し元でのコマンド呼び出しを行った場合の復帰値の参照にあたります。コマンド置換は、“[]” (大括弧)を使用します。 - 234 - 例) 算術演算(3+2)の結果を変数abcに格納する場合 set abc [ expr 3 + 2 ] コマンド内のワードの区切り コマンド内のワードの区切りは、スペース、またはタブを使用します。 ワードの区切りとは、コマンド名と第1引数、第2引数…間の区切りのことです。 ワード内の変数置換/コマンド置換 ワード内に“$”(ダラー記号)が含まれる場合、変数置換が行われ、変数の内容に置き換えられます。 ワード内に“[]”(大括弧)が含まれる場合は、コマンド置換が行われ、コマンド実行結果の復帰値に置き換えられます。 コマンド置換は、再帰的に行われますが、変数置換は一度しか行われません。 例1) ワード内にある変数abcが変数置換される場合 set abc "123" set str xyz$abc この場合、変数strには文字列 "xyz123" が入ります。 ただし、以下の記述では変数置換は正しく行われません。 set abc "123" set str $abcxyz この場合、abcxyz が変数と解釈されるため、未定義変数の参照により、エラーとなります。 例2) 再帰的にコマンド置換を行い、計算結果を格納する場合 set abc [ expr [expr 1 + 1] + 2 ] ただし、exprコマンドは、入れ子の計算式も解釈可能なため、算術演算だけの場合は、以下のように記述します。 set abc [ expr (1 + 1) + 2 ] “"”(ダブルクォーテーション)によるワードの指定 ワードの最初の文字が“"”(ダブルクォーテーション)の場合は、次のダブルクォーテーションまでが1つのワードとして扱 われます。 ワードの最初の文字がダブルクォーテーションで、それに対応する終了ダブルクォーテーションがない場合は、文法エ ラーとなります。 また、開始と終了のダブルクォーテーション自体は、ワードの内容としては解釈されません。 例1) 文字列123を変数abcに格納する場合 set abc "123" 直前に“\”(円記号)がある場合、ダブルクォーテーションは、ワード囲み記号として解釈されず、通常の文字として扱わ れます。 円記号置換については、““\”(円記号)によるエスケープシーケンス(円記号置換)”を参照してください。 例2) 文字列123"を変数abcへ格納する場合 set abc "123\"" - 235 - ワード指定のダブルクォーテーションの中に含まれる“;”(セミコロン)、“]”(閉じ括弧)、スペース(改行も含む)は、普通 の文字として扱われますが、コマンド置換、変数置換は処理されます。 例3) 空白、変数置換を含む文字列を格納する場合 set abc "123" set str "abc $abc def" 変数strへ格納される文字列は abc 123 def となります。 “{ }”(中括弧)によるワード指定 ワードの最初の文字が“{”(開き中括弧)の場合は、対応する“}”(閉じ中括弧)までがワードになります。 ワードの最初の文字が開き、中括弧でそれに対応する閉じ中括弧がない場合は、文法エラーとなります。 また、開始と終了の中括弧自体はワードの内容としては解釈されません。 例1) 文字列1{2}3を変数abcへ格納する場合 set abc {1{2}3} 直前に“\”(円記号)がある場合、中括弧は、ワード囲み記号として解釈されません。ただし、中括弧によるワード囲み内 では、“\{”、“\}”を通常文字の“{”、“}”に置き換えることはありません。 詳細については、“ワード囲み記号と円記号置換”を参照してください。 例2) 中括弧を含む文字列を格納する場合 set abc {123\}} 変数abcへは文字列 123\}が格納されます。 ワード指定の中括弧囲みの中に含まれる“;”(セミコロン)、“]”(閉じ括弧)、スペース(改行も含む)は、普通の文字として 扱われ、コマンド置換、変数置換は処理されません。 例3) 空白を含む文字列を格納する場合 set abc "123" set str {abc $abc def} 変数strへ格納される文字列は abc $abc def となります。 “\”(円記号)によるエスケープシーケンス(円記号置換) ワードに“\”(円記号)が含まれている場合は、その直後の文字との組み合わせをエスケープシーケンスとして解釈され、 円記号置換が行われます。 円記号置換の種類を以下に示します。 なお、円記号の直後に以下以外の文字を指定することはできません。 シーケンス 置換内容 \a ベル \b バックスペース \f 改ページ \n 改行 \r キャリッジ/リターン \t タブ - 236 - シーケンス 置換内容 \v 垂直タブ \<改行> 空白文字(継続行) \" ワード囲み記号として解釈されない単独ダブルクォーテーション \{ ワード囲み記号として解釈されない単独中括弧開き記号 \} ワード囲み記号として解釈されない単独中括弧閉じ記号 \\ 単独円記号“\” ワード囲み記号と円記号置換 ダブルクォーテーションで囲まれたワードに対しては、すべての円記号置換が行われますが、中括弧で囲まれたワード に対しては、“\<改行>”を除き、円記号置換は行われません。 例1) 中括弧内で円記号置換されない場合 set abc "C:\\tmp" set def {C:\tmp} 変数abc,defともに文字列 C:\tmp が格納されます。 例2) 中括弧内でも円記号置換される場合 set abc "123\ 456" set def {123\ 456} 変数abc,defともに文字列 123 456 が格納されます。 中括弧によるワード囲み内では、“\{”、“\}”は円記号置換されません。 また、“\\”も円記号置換されませんが、後の“\”は“\<改行>”、“\{”、“\}”でのエスケープ文字としての意味を失いま す。 例3) “\”がエスケープ文字としての意味を失う場合 set abc {123\\} 変数abcには文字列 123\\ が格納されます。 注意 以下の文字列を、中括弧で囲んだワードとして記述することはできません。 ・ 末尾に円記号がある文字列 C:\tmp\ ・ 対応のとれていない中括弧が存在する文字列 123} ・ 改行の直前に円記号がある文字列 C:\tmp\ D:\tmp\ - 237 - 条件式における文字列の扱い ifやwhileなどの判定文で指定する条件式は、通常は数値式として解釈されます。このため、条件式を文字列式として解 釈させたい場合は文字列を「"」(ダブルクォーテーション)で囲む必要があります。真偽値の意味を持つ特別な文字列 (yes,no,true,false)を指定する場合でも同様です。 例1) 変数aの内容が文字列xyzであるかどうか判定する場合 if {$a == "xyz"} { puts ok } 例2) 真である間処理を繰り返す場合 set i 0 while {"true"} { incr i if {$i > 5} { break } } 文字列操作コマンド 文字列をダブルクォーテーションで囲んでも、文字列全体が数値として解釈可能な場合は、数値式として判定されま す。厳密な文字列比較を行うためには、文字列操作用のstring(文字列を操作する)コマンドを使用して判定を行うこ とを推奨します。 例) 変数aの内容が文字列 01 であるかどうか判定する場合 if {[string compare $a 01] == 0} { puts ok } 上記の例で、判定文を以下のようにすると、変数aの内容が1や001の場合も真となります。 if {$a == "01"} コメント行 “#”で始まる行、およびコマンドの最初が“#”の場合は、改行までをコメントと解釈します。 例) # 変数を初期化する set abc 0 コメントを記述する場合、以下の点に注意してください。 ・ コメント行内には“{”、“}”(中括弧)を使用しないでください。 ・ コメント行、およびコメント行の直前の行で、継続行(\<改行>)は使用しないでください。 ・ ifやwhileなどの判定文で指定する条件式内には、コメントを記述しないでください。 注意事項 Systemwalkerスクリプトで、JIS X 0213:2004で新規に追加された文字を使用することはできません。 6.3 Systemwalkerスクリプトで使用するコマンド・制御文 本節では、Systemwalkerスクリプトで使用する以下のコマンドと制御文について説明します。 - 238 - ・ after(一定時間処理を休止する) ・ break(ループを中止する) ・ catch(スクリプト行を実行し処理例外をトラップする) ・ cd(作業ディレクトリを変更する) ・ close(オープンされたファイルをクローズする) ・ continue(ループを次の繰り返しまでスキップする) ・ exec(サブプロセスを起動する) ・ exit(スクリプトを終了する) ・ expr(算術演算をする) ・ flush(バッファリングされた出力をフラッシュする) ・ gets(ファイルから1行読む) ・ if~else(条件分岐をする) ・ incr(変数に値を加算する) ・ open(ファイルをオープンする) ・ puts(ファイルに書き込む) ・ regexp(文字列と正規表現のマッチング検査と一致部分の切り出しをする) ・ regsub(正規表現のパターンマッチングに基づいて置換する) ・ set(変数に値を格納する) ・ string(文字列を操作する) ・ sw_TcCloseTrace(トレースファイルをクローズする) ・ sw_TcOpenTrace(トレースファイルをオープンする) ・ sw_TcWriteTrace(トレース情報の出力をする) ・ while(ループする) 注意 省略可能オプションの記述形式について “[ ]”がSystemwalkerスクリプト上、特別な意味を持つため、本節では省略可能オプションを示すのに“【 】”を使用してい ます。 6.3.1 after(一定時間処理を休止する) 機能説明 一定時間処理を休止します。 記述形式 after msec オプション msec 休止時間をミリ秒(1/1000秒)単位で指定します。 - 239 - 復帰値 なし 使用例 1秒間隔で10回ループする set i 0 while {$i < 10} { incr i after 1000 } 実行結果/出力形式 なし 6.3.2 break(ループを中止する) 機能説明 ループ処理を中止します。 記述形式 break オプション なし 復帰値 なし 使用例 5回ループする。 set i 0 while {"true"} { incr i if {$i > 5} { break } } 実行結果/出力形式 なし 6.3.3 catch(スクリプト行を実行し処理例外をトラップする) 機能説明 スクリプト行を実行して処理例外をトラップします。 スクリプト実行時の処理例外とは、スクリプトの処理がそこで打ち切られ、プロセス自体が強制終了されるエラーです。こ のようなエラーが発生する例として、実行中のスクリプトに文法エラーや値未設定の変数に対する変数置換のほかに、 - 240 - ファイルオープン時のエラー(openコマンド)や、実行プロセスの終了コードが0以外(execコマンド)など、実行時の条件に よって発生するものがあります。 catchコマンドはこのような処理例外の発生時に、独自のリカバリ処理を行い、スクリプトのプロセスが終了するのを防ぐた めに使用します。 記述形式 catch {script} 【varname】 オプション {script} 実行するスクリプトコマンド部分です。改行またはセミコロンで区切ることにより複数のコマンドが記述できます。 varname 処理例外が発生した場合にその原因を示すエラーテキストを格納する変数名です。省略時は、エラーテキストは格 納されません。 復帰値 0: 処理例外は発生しませんでした。 0以外: 処理例外が発生しました。 この場合、グローバル変数errorCodeに、詳細情報として以下の値が格納されます。 - スクリプトコマンドexecで実行したコマンドの終了コードが“0”以外で終了した場合 CHILDSTATUS pid exitcode pid 【Windows版】 ここに入る数字は意味を持ちません。 【UNIX版】 実行したコマンドのプロセスID exitcode 実行したコマンドの終了コード - スクリプトコマンドexecで実行したコマンドがシグナルにより強制終了された場合 CHILDKILLED pid sigName msg pid 【Windows版】 ここに入る数字は意味を持ちません。 【UNIX版】 実行したコマンドのプロセスID sigName 実行したコマンドに送られたシグナル名 - 241 - msg 詳細メッセージ - スクリプトコマンドexecで実行したコマンドがシグナルにより一時停止された場合 CHILDSUSP pid sigName msg pid 【Windows版】 ここに入る数字は意味を持ちません。 【UNIX版】 実行したコマンドのプロセスID sigName プロセスに送られたシグナル名 msg 詳細メッセージ - スクリプトコマンドexprで算術エラーが発生した場合 ARITH errName msg errName エラー内容 msg 詳細メッセージ - システムコールでエラーが起きた場合 POSIX errName msg errName エラー内容 msg 詳細メッセージ - エラーとともに返されるメッセージ以外の情報がない場合 NONE 使用例 ファイルを読み込み用にオープンし、失敗した場合は標準入力からの読み込みをする。 if {[catch { set file [open data.txt r] }]} { set file "stdin" } gets $file buf if {$file != "stdin"} { close $file } - 242 - 実行結果/出力形式 なし 6.3.4 cd(作業ディレクトリを変更する) 機能説明 作業ディレクトリを変更します。 記述形式 cd dirname オプション dirname 変更先ディレクトリ名を指定します。Windows上のディレクトリ名は、ディレクトリの区切りを“\”(円記号)のほかに“/”(ス ラッシュ)で記述することが可能です。円記号を使用する場合は、エスケープ文字に扱われないようディレクトリ名全体 を“{ }”(中括弧)で囲む必要があります。 復帰値 なし 注意事項 存在しないディレクトリ名を指定した場合、スクリプトは処理例外の発生を検知して強制終了します。 使用例 【Windows版】 カレントディレクトリをc:\tmpに移動します。 cd {c:\tmp} 【UNIX版】 カレントディレクトリを/tmpに移動します。 cd /tmp 実行結果/出力形式 なし 6.3.5 close(オープンされたファイルをクローズする) 機能説明 オープンされたファイルをクローズします。 記述形式 close channelID オプション channelID openコマンドの復帰値として取得したチャンネルIDを指定します。 - 243 - 復帰値 なし 参照 open(ファイルをオープンする) 注意事項 openコマンドでオープンしたファイルは、最終的に必ずcloseコマンドでクローズする必要があります。 使用例 変数fcに格納されているチャンネルIDをクローズします。 close $fc 実行結果/出力形式 なし 6.3.6 continue(ループを次の繰り返しまでスキップする) 機能説明 ループ内の以降の処理をスキップして、ループ文の条件判定へ処理をとばします。 記述形式 continue オプション なし 復帰値 なし 使用例 5回ループするうち、最後の3回だけカウント値を表示します。 set i 0 while {$i < 5} { incr i if {$i < 3} { continue } puts $i } 実行結果/出力形式 3 4 5 6.3.7 exec(サブプロセスを起動する) - 244 - 機能説明 サブプロセスを起動し、プログラムのコマンドを実行します。 記述形式 【Windows版】 execコマンドは、cmd /cと併せて使用します。 exec cmd /c cmdname 【args …】 【UNIX版】 exec cmdname 【args …】 オプション cmdname 起動するコマンドファイル名を指定します。Windows上のファイル名の場合は、ディレクトリの区切りを“\”(円記号)の ほかに“/”(スラッシュ)で記述することが可能です。円記号を使用する場合は、エスケープ文字に扱われないようファ イル名全体を“{ }”(中括弧)で囲む必要があります。 args … 起動するコマンドに渡す引数を指定します。 最後のargsが“&”の場合、コマンドはバックグラウンドで実行されます。コマンドは通常、フォアグラウンドで実行され、 execコマンドはcmdnameのプロセス終了を待ちますが、バックグラウンドで実行した場合は、終了を待たずに復帰しま す。 また、argsにはフロー制御記号を指定することが可能です。 Windowsの場合、ファイルをパス指定で与えるときは、ディレクトリの区切りに“\”(円記号)を使用してファイル名全体 を“{ }”(中括弧)で囲む必要があります。 フロー制御 argsに以下のフロー制御記号を記述することで、起動コマンドの標準入出力への操作や複数コマンドを起動しての情報 のやりとりが可能となります。 記号・書式 | < filename 意味 例 パイプライン中の個々のコマンドを区切ります。前のコマンド の標準出力を後のコマンドの標準入力へつなげます。同様 にして3つ以上のコマンドをつないでいくことが可能です。 “|”の代わりに“|&”を使用すると標準出力のほかに標準エ ラー出力も後のコマンドの標準入力につながれます。 【Windows版】 cmdnameの標準入力として、filenameで指定したファイルの 内容が読み込まれます。(注1) 【Windows版】 exec cmd /c dir |cmd /c sort 【UNIX版】 exec ls -l | grep root exec cmd /c sort < data.txt 【UNIX版】 exec sort < data.txt << value cmdnameの標準入力として、valueで指定した値(文字列)が 読み込まれます。(注1) 【Windows版】 exec cmd /c sort << $data 【UNIX版】 exec sort << $data > filename cmdnameの標準出力がfilenameで指定したファイルに上書 きで書き込まれます。(注1) - 245 - 【Windows版】 exec cmd /c dir > data 記号・書式 >& filename 意味 例 “>”の代わりに“>>”を使用すると上書きでなく追加で書き込 まれます。 【UNIX版】 cmdnameの標準出力と標準エラー出力がfilenameで指定し たファイルに上書きで書き込まれます。(注1) “>&”の代わりに“>>&”を使用すると上書きでなく追加で書 き込まれます。 【Windows版】 exec ls > data exec cmd /c dir data >& out 【UNIX版】 exec rm -f data >& out 2> filename cmdnameの標準エラー出力がfilenameで指定したファイル に上書きで書き込まれます。(注2) “2>”の代わりに“2>>”を使用すると上書きでなく追加で書き 込まれます。 【Windows版】 exec cmd /c dir data 2> out 【UNIX版】 exec rm -f data 2> out 注1) cmdnameの部分が“|”により複数のコマンドからなる場合、読み込みは先頭のコマンドが、書き込みは末尾のコマンド がその対象となります。 注2) cmdnameの部分が“|”により複数のコマンドからなる場合、すべてのコマンドの標準エラー出力がfilenameで指定した ファイルに格納されます。 復帰値 コマンドがフォアグラウンドで実行されている場合: cmdnameコマンドの標準出力が返されます。このとき、出力テキストの末尾にある改行コードは削除されます。 フロー制御により複数のコマンドが実行される場合は、末尾のコマンドがその対象となります。 また、フロー制御により標準出力がリダイレクトされている場合は、空文字列を返します。 コマンドがバックグラウンドで実行されている場合: 起動コマンドのプロセスIDが返されます。 フロー制御により複数のコマンドが実行される場合は、全プロセスIDが空白で区切って返されます。 アプリケーションが出力する標準出力を、execコマンドの復帰値として獲得することはできません。 その他入出力情報 ・ 以下の条件の場合、スクリプトは処理例外の発生を検知し強制終了されます。必要に応じてcatchコマンドで処理例 外のトラップを行ってください。 - コマンドがフォアグラウンドで実行されている、かつ、 - コマンドの標準エラー出力がリダイレクトされていない状態でコマンドが標準エラー出力へのメッセージを出力す る、または、 - コマンドの終了コードが“0”以外である。 例) catchによる処理例外のトラップをしない場合 【Windows版】 #アプリケーションを起動します。標準出力を変数"outmsg"に格納します。 set outmsg [exec cmd /c {c:\usr\bin\appl001.exe}] #アプリケーションが標準出力へ出力したデータをジョブの標準出力へ出力します。 puts stdout $outmsg - 246 - #アプリケーションの実行まで正常に完了した場合は、終了コード"0"で終了します。 exit 0 【UNIX版】 #アプリケーションを起動します。標準出力を変数“outmsg”に格納します。 set outmsg [exec /usr/bin/appl001] #アプリケーションが標準出力へ出力したデータをジョブの標準出力へ出力します。 puts stdout $outmsg #アプリケーションの実行まで正常に完了した場合は、終了コード“0”で終了します。 exit 0 catchによる処理例外設定がないため、execで起動したコマンドが、“0”以外の終了コードで終了したり、異常終了し たりした場合に以下の問題が発生します。 - ジョブの終了コードは“1”となり、実行コマンドの終了コードが採用されない。 - 実行コマンドが標準エラー出力に出力したエラーメッセージ等を獲得することができない。 これらを回避するために、コマンドを起動する際にはcatchコマンドによる処理例外のトラップをすることを推奨します。 ・ 処理例外をcatchコマンドでトラップした場合、以下の情報を参照することができます。 - 標準出力/標準エラー出力情報(errorInfo) - 終了コード(errorCode) ・ 標準出力/標準エラー出力情報(errorInfo)について コマンドの標準出力/標準エラー出力がリダイレクトされていない場合、グローバル変数errorInfoの先頭にその出力 文字列が格納されます。errorInfoには、exec文自身の実行エラーを示す文字列も格納されます。 例) 【Windows版】 以下の仕様のアプリケーション(c:\usr\bin\appl001.exe)がエラー終了した場合 - 指定された日付のデータを標準出力に書き込む。 - 日付の指定が不当な場合は以下のメッセージを標準エラー出力に出力する。 “日付の指定に誤りがあります。yyyymmdd で指定してください。” if {[catch { exec cmd /c {c:\usr\bin\appl001.exe} 010520 }]} { puts "エラー情報 START" puts $errorInfo puts "エラー情報 END" } 上記を実行すると、標準出力には以下のように表示されます。 エラー情報START 日付の指定に誤りがあります。yyyymmddで指定してください。←appl001コマンドの出力 while executing ← exec文自身の実行エラーを "exec cmd /c {c:\usr\bin\appl001.exe} 010520" ← 示す文字列 エラー情報END 【UNIX版】 存在しないファイル(/tmp/data)を指定し、lsコマンドを実行する場合 if {[catch { exec ls /tmp/data }]} { puts "エラー情報 START" puts $errorInfo - 247 - puts "エラー情報 END" } 上記を実行すると、標準出力には以下のように表示されます。 エラー情報 START /tmp/data: ファイルもディレクトリもありません。 ← lsコマンドの出力 while executing ← exec文自身の実行エラーを "exec ls /tmp/data" ← 示す文字列 エラー情報 END ・ 終了コード(errorCode)について コマンドの終了コードが“0”以外の場合は、グローバル変数errorCodeに以下の書式で終了コードが格納されていま す。また、その他の詳細情報も格納されます。 errorCodeの書式については、“catch(スクリプト行を実行し処理例外 をトラップする)”の復帰値を参照してください。 CHILDSTATUS pid exitcode pid 【Windows版】 ここに入る数字は意味を持ちません。 【UNIX版】 プロセスID exitcode プロセスの終了コード ・ 実行コマンドの入出力について 実行コマンドのリダイレクトされていない入出力は以下のとおりに扱われます。 入出力 フォアグラウンド実行 バックグラウンド実行 標準入力 スクリプトプロセス自身の標準入力から読み込まれる。 標準出力 通常は、execコマンドの戻り値となる。 処理例外をcatchでトラップした場合には、 errorInfoに格納される。 スクリプトプロセス自身の標準出力に書き 込まれる。 標準エラー出 力 execコマンドの処理例外として扱われ、catchで トラップした場合にはerrorInfoに格納される。 スクリプトプロセス自身の標準エラー出力 に書き込まれる。 参照 catch(スクリプト行を実行し処理例外をトラップする) 注意事項 ・ 子孫プロセスが常駐するコマンドやシェルの起動について 以下の条件をすべて満たした場合、直接起動したコマンドが終了しても復帰しません。 - フォアグラウンドでコマンドを起動している。 - 起動したコマンドがさらに子プロセスを起動している。 - 標準出力と標準エラー出力をリダイレクトしていない。 したがって、デーモン起動シェルなど常駐するプロセス起動を行う場合は、以下のようにバックグラウンドで起動する か、標準出力と標準エラー出力をファイル等にリダイレクトするようにしてください。 - 248 - - バックグラウンド起動 exec rdbstart & - 標準出力と標準エラー出力をファイルにリダイレクト exec rdbstart >& /tmp/log.txt - 標準出力と標準エラー出力を無視 exec rdbstart >& /dev/null ・ Windowsのコマンドでパラメタの解釈が特殊なコマンドについて【Windows版】 Windowsのプログラムには、コマンドのオプションのダブルクォーテーションなどを特別な文字として解釈する一般的 なコマンドと、そういった解釈をしない特殊なコマンドがあります。そのような特殊なコマンドには、スクリプト自身もダ ブルクォーテーションの解釈を行っているため、パラメタを正しく渡せない場合があります。 一般的なコマンドのパラメタ解釈例 コマンドラインの記述 コマンド内での解釈 "abc" abc \"abc\" "abc" 特殊なコマンドは、コマンドラインの記述をそのまま解釈します。 特別な文字を解釈しないコマンドを実行させる場合は、コマンドを実行するバッチファイルを作成し、そのバッチファ イルをexecで実行するように記述してください。 ・ swctclshの終了について【Windows版】 execから起動したコマンドや、そのコマンドからさらに起動されたプロセスが動作中の間は、swctclshは終了せずに起 動中のままになります。 ・ フロー制御記号から始まる引数について フロー制御記号(< > 2>)から始まる文字列は、引数に指定した場合フロー制御記号として解釈されるため、文字列 として渡すことはできません。以下のどちらかの方法で指定してください。 - 文字列の先頭に半角空白を付加して引数に指定する 文字列として解釈させるために、先頭に半角空白を付加した文字列に変えて引数に指定します。 文字列が変数(msgtxt)に格納されている場合、以下のように記述することで、先頭に半角空白を付加することが できます。 if {[regexp {^<|^>|^2>} $msgtxt] == 1} { set msgtxt " $msgtxt" } - シェルスクリプトまたはバッチファイルを利用する 目的のコマンドを起動するシェルスクリプト(UNIX版)またはバッチファイル(Windows版)をスクリプト内で作成し、 それをexecコマンドで起動させるようにします。ただし、引数文字列内にダブルクォーテーション(")が含まれてい ると、シェルスクリプトやバッチファイル内での文字列解釈が正しく行われなくなるため、引数文字列中に含まれ るダブルクォーテーションをシングルクォーテーション(')にあらかじめ置き換えます。 例) コマンド(usercmd)の引数に、任意の文字列が格納されている変数(msgtxt)を指定して起動させます。 【UNIX版】 “/tmp/usercmd_tmp.sh”は、一時的に作成するシェルスクリプトで、実行後に削除します。 if {[regexp {^<|^>|^2>} $msgtxt all] == 1} { regsub {"} $msgtxt {'} msgtxt - 249 - set fd [open /tmp/usercmd_tmp.sh w] puts $fd "usercmd \"$msgtxt\"" close $fd exec sh /tmp/usercmd_tmp.sh exec /usr/bin/rm -f /tmp/usercmd_tmp.sh } else { exec usercmd $msgtxt } 【Windows版】 “c:\temp\usercmd_tmp.bat”は、一時的に作成するバッチファイルで、実行後に削除します。 if {[regexp {^<|^>|^2>} $msgtxt all] == 1} { regsub {"} $msgtxt {'} msgtxt set fd [open {c:\temp\usercmd_tmp.bat} w] puts $fd "usercmd \"$msgtxt\"" close $fd exec {c:\temp\usercmd_tmp.bat} exec cmd /c del {c:\temp\usercmd_tmp.bat} } else { exec usercmd $msgtxt } 使用例 【Windows版】 dirコマンドを実行し、コマンドの標準出力/標準エラー出力をすべてスクリプトの標準出力へ出力させます。 if {[catch { set outmsg [exec cmd /c dir {c:\tmp\data}] # dirの標準出力(exec戻り値)をスクリプトの標準出力へ puts stdout $outmsg }]} { # 処理例外発生 # outmsgには初期値として$errorInfoを格納しておきます。 set outmsg $errorInfo # dirの出力情報(errorInfoの末尾2行を除いたもの)をスクリプトの標準出力へ regexp {(.*)\n.*\n.*} $errorInfo all outmsg puts stdout $outmsg } 【UNIX版】 lsコマンドを実行し、コマンドの標準出力/標準エラー出力をすべてスクリプトの標準出力へ出力させます。 if {[catch { set outmsg [exec ls -l /tmp/data] # lsの標準出力(exec戻り値)をスクリプトの標準出力へ puts stdout $outmsg }]} { # 処理例外発生 # outmsgには初期値として$errorInfoを格納しておきます。 set outmsg $errorInfo # lsの出力情報(errorInfoの末尾2行を除いたもの)をスクリプトの標準出力へ regexp {(.*)\n.*\n.*} $errorInfo all outmsg puts stdout $outmsg } - 250 - 実行結果/出力形式 標準出力には、以下のように表示されます。 【Windows版】 ・ ファイルc:\tmp\dataが存在する場合 ドライブ C のボリューム ラベルはありません。 ボリューム シリアル番号は 2420-12F3 です c:\tmp のディレクトリ 00/12/01 11:37a 972 data 1 個のファイル 972 バイト 463,110,144 バイトの空き領域 ・ ディレクトリ(ファイル)c:\tmp\dataが存在しない場合 ドライブ C のボリューム ラベルはありません。 ボリューム シリアル番号は 2420-12F3 です c:\tmp のディレクトリ ファイルが見つかりません 【UNIX版】 ・ ファイル/tmp/dataが存在する場合 -rw-rw-r-- 1 root other 0 9月 25日 15:05 /tmp/data ・ ファイル(ディレクトリ)/tmp/dataが存在しない場合 /tmp/data: ファイルもディレクトリもありません。 6.3.8 exit(スクリプトを終了する) 機能説明 スクリプトのプロセスを終了します。 記述形式 exit 【returncode】 オプション returncode プログラムの終了コード。0~128を指定します。省略時は、0になります。 復帰値 なし 使用例 変数rcの内容が0以外の場合、その値を終了コードにして異常終了します。 if {$rc != 0} { exit $rc } - 251 - 実行結果/出力形式 なし 6.3.9 expr(算術演算をする) 機能説明 算術計算をします。 記述形式 expr arg 【arg arg …】 オプション arg 式を指定します。 使用可能な演算子(優先度の高い順) 演算子 説明 -+~! 単項マイナス、単項プラス、補数、論理否定 */% 乗算、除算、剰余 +- 加算、減算 式中に“()”(小括弧)で囲まれた部分がある場合は、その部分の優先度が上がり、先に演算されます。 復帰値 演算結果を返します。 使用例 3×(10-(4-2))の結果を表示します。 set result [expr 3*(10-(4-2))] puts $result 実行結果/出力形式 24 6.3.10 flush(バッファリングされた出力をフラッシュする) 機能説明 バッファリングされた出力をフラッシュします。 フラッシュとは、書き込みバッファ内に残っているデータを排出させる操作です。例えば、パイプにより標準出力がほかの コマンドとつながっている場合など、出力したデータをすぐに相手側に受け取らせるには、フラッシュ操作が必要になりま す。 記述形式 flush channelID - 252 - オプション channelID openコマンドの復帰値として取得したチャンネルIDを指定します。また、“stdout”,“stderr”を指定することにより、標準 出力、標準エラー出力へのフラッシュを行います。 復帰値 なし 使用例 標準出力へデータを書き込み、フラッシュします。 puts stdout $Data flush stdout 実行結果/出力形式 なし 6.3.11 gets(ファイルから1行読む) 機能説明 ファイルまたは標準入力から1行読み込みます。 記述形式 gets channelID 【varname】 オプション channelID openコマンドの復帰値として取得したチャンネルIDを指定します。また、“stdin”を指定することにより、標準入力から の読み込みを行います。 varname 読み込んだ行の内容を格納する変数名を指定します。省略時は、読み込んだ行の内容は復帰値として返されます。 復帰値 varnameを指定した場合 読み込んだ文字列の文字数を返します。1文字も読み込まずファイルの末尾に達した場合は、-1を返します。 varnameを省略した場合 読み込んだ文字列を返します。 注意事項 読み込みされる“1行”とは、ファイル内の現在の読み込み位置(open直後は先頭、以後読み込みを行うごとに読み込ん だ分だけ移動)から改行またはファイルの末尾までのことを指します。なお、varnameで指定した変数には、改行コードは 格納されません。 使用例 標準入力から1行(改行まで)のデータを読み込み、変数bufに格納します。 gets stdin buf - 253 - 実行結果/出力形式 なし 6.3.12 if~else(条件分岐をする) 機能説明 スクリプトを条件実行します。 記述形式 if {expr1} 【then】 {body1} 【elseif {expr2} 【then】 {body2}】 【elseif …】 【else {bodyN}】 オプション expr 条件式を記述します。数値は、0が偽でそれ以外が真です。文字では、true,yesが真でfalse,noが偽になります。条件 式内にはコメントを記述しないでください。 条件式で使用できる条件演算子 条件演算子 説明 ! 否定 < , > , <= , >= , == , != 比較 && , || 論理積、論理和 body 条件が真の場合に実行されるスクリプトコマンド部分です。改行またはセミコロンで区切ることにより複数のコマンドが 記述できます。 復帰値 なし 注意事項 各キーワード(if,then,elseif,else)と“{”(中括弧)の間、および“then”を省略した場合の“}”と“{”の間は、必ず空白または TAB文字が必要です。 “}”と“{”の間など、body以外のところで改行する場合は、行の最後に"\"(円記号)を付けて継続行となるようにしてくださ い。 例) ・ body以外のところで改行している誤り例 if { $cnt == 1 } { puts "start" } ・ 正しい例 "}"と"{"の間で改行しない。 if { $cnt == 1 } { puts "start" } - 254 - または、改行した場合、"\"(円記号)を付けて継続行とする。 if { $cnt == 1 } \ { puts "start" } 使用例 変数aの値が、0より大きいか、0以下であるかを表示します。 if {$a > 0} { puts "a > 0" } else { puts "a <= 0" } 実行結果/出力形式 aの値に応じて、以下のどちらかが出力されます。 a > 0 または、 a <= 0 6.3.13 incr(変数に値を加算する) 機能説明 変数に値を加算します。 記述形式 incr varname 【increment】 オプション varname 加算対象の変数名を指定します。この変数には10進数の整数が格納されていなければなりません。また、加算結果 もこの変数へ格納されます。 increment 加算する値(10進数の整数)を指定します。省略時は、1が加算されます。 復帰値 加算された結果の値 (=incrコマンド呼び出し前の$varname + increment) 注意事項 varnameで指定した変数の設定値、およびincrementの指定値が10進数の整数でない場合、スクリプトは処理例外の発 生を検知して、強制終了されます。本コマンド使用時は、必要に応じてcatchコマンドで処理例外のトラップを行ってくだ さい。 使用例 5回ループするうち、最後の3回だけカウント値を表示します。 - 255 - set i 0 while {$i < 5} { incr i if {$i < 3} { continue } puts $i } 実行結果/出力形式 3 4 5 6.3.14 open(ファイルをオープンする) 機能説明 ファイルをオープンします。 記述形式 open filename 【access】 オプション filename オープンするファイル名を指定します。Windows上のファイル名の場合は、ディレクトリの区切りを“\”(円記号)のほか に“/”(スラッシュ)で記述することが可能です。円記号を使用する場合は、エスケープ文字に扱われないようファイル 名全体を“{}”(中括弧)で囲む必要があります。また、ファイル名にスペースまたはタブが含まれる場合は、「"」(ダブ ルクォーテーション)で囲む必要があります。 access アクセスモードの指定をします。省略時は、読み込み専用(r)です。指定内容とその意味は以下のとおりです。 アクセスモードの種類 コード 説明 r 読み込み専用モードでオープンします(省略時)。ファイルは存在している必要があります。 r+ 読み書きモードでオープンします。ファイルは存在している必要があります。 w 書き込み専用モードでオープンします。ファイルが存在しているときは上書きします。なければ 新規作成します。 w+ 読み書きモードでオープンします。ファイルが存在しているときは上書きします。なければ新規 作成します。 a 書き込み専用モードでオープンします。ファイルは存在している必要があります。書き込みデー タは、ファイルの最後に追加されます。 a+ 読み書きモードでオープンします。ファイルが存在していないときは、新規に作成します。書き 込みデータはファイルの最後に追加されます。 復帰値 チャンネルID オープンしたファイルへのアクセス(closeを含む)には、このチャンネルIDを指定するため、復帰値は必ずコマンド置 換により変数に格納する必要があります。 - 256 - 参照 close(オープンされたファイルをクローズする) 注意事項 アクセス権のないファイルを指定した場合などファイルオープンに失敗した場合、スクリプトは処理例外の発生を検知し て強制終了されます。本コマンド使用時は、必要に応じてcatchコマンドで処理例外のトラップを行ってください。 使用例 【Windows版】 ファイルc:\tmp\dataを書き込みモードでオープンし、そのチャンネルIDを変数fcに格納します。 set fc [open {c:\tmp\data} w] 【UNIX版】 ファイル/tmp/dataを書き込みモードでオープンし、そのチャンネルIDを変数fcに格納します。 set fc [open /tmp/data w] 実行結果/出力形式 なし 6.3.15 puts(ファイルに書き込む) 機能説明 ファイルまたは標準出力・標準エラー出力へ書き込みます。 記述形式 puts 【channelID】 string オプション channelID openコマンドの復帰値として取得したチャンネルIDを指定します。また、“stdout”,“stderr”を指定することにより、標準 出力、標準エラー出力への書き込みを行います。省略時は、標準出力への書き込みをします。 string 書き込むテキストデータを指定します。 復帰値 なし 注意事項 書き込み時には、必ず末尾に改行コードが付加されます。 使用例 【Windows版】 ログファイルと標準エラー出力へエラーメッセージを出力します。 set errlog [open {c:\var\tmp\log.txt} a] puts $errlog $ErrMsg - 257 - puts stderr $ErrMsg close $errlog 【UNIX版】 ログファイルと標準エラー出力へエラーメッセージを出力します。 set errlog [open /var/tmp/log.txt a] puts $errlog $ErrMsg puts stderr $ErrMsg close $errlog 実行結果/出力形式 なし 6.3.16 regexp(文字列と正規表現のマッチング検査と一致部分の切り出しを する) 機能説明 文字列と正規表現のマッチング検査と、一致部分の切り出しをします。 記述形式 regexp exp string 【matchvar】 【submatchvar1 submatchvar2 ....】 オプション exp 正規表現を指定します。 string 検査対象となる文字列を指定します。 matchvar 一致した場合に、string中の正規表現に一致している部分を切り出して格納する変数の名前を指定します。省略時 は、一致した部分の格納が行われません。 submatchvar 一致した場合に、string中で正規表現内の“()”(小括弧)で囲まれた部分に一致している部分を切り出して格納する 変数の名前を指定します。省略時は、一致した部分の格納が行われません。 ポイント 正規表現とは、文字列の構造を記号で表したもので、本コマンドはstringで指定した文字列中に、正規表現expで表した 構造に一致する部分があるか検査するものです。 一致した場合は、expで表した構造に一致した部分を、stringから切り出し、matchvarの変数に格納します。 また、正規表現中には、任意の箇所に任意の個数だけ、文字列の切り出し箇所を指定可能で、その指定がある場合は、 前から順にsubmatchvarの変数に格納されます。 正規表現の書き方については、“正規表現”を参照してください。 復帰値 0: 一致しませんでした。 - 258 - 1: 一致しました。 使用例 ・ 指定文字の前後を切り出す 文字列中に“,”(カンマ)があるか検査し、ある場合は一致部分すべてをallに、カンマの前の部分と後の部分をそれ ぞれ変数sub1、sub2に切り出します。(カンマの前後は空文字でも可) regexp {(.*),(.*)} $text all sub1 sub2 ・ 切り出し部分を指定する 以下のメッセージから、“< >”で囲まれた部分を切り出して、変数Var0に格納します。 ネットワークで"LinkUp"が発生しました。<DBサーバに異常が発生しました。> regexp {<([^>]*)} $EventText All Var0 変数Var0には“.DBサーバに異常が発生しました。”が格納されます。 ・ 特殊文字は、“\”円記号でエスケープする 以下のメッセージから“JobName=”以降から空白までの部分を変数Var0に、RC=以降の“[ ]”(大括弧)で囲まれた部 分を変数Var1に、“device=”以降の“( )”(小括弧)で囲まれた部分を変数Var2に、それぞれ切り出して格納します。 JOBNET Error. JobName=SCRJB_1 RC=[0022] xxx- device=(DX038) regexp {JobName=([^ ]*) RC=\[([^\]]*)\] .*device=\(([^\)]*)\)} $EventText All Var0 Var1 Var2 それぞれ変数Var0には“SCRJB_1”、変数Var1には“0022”、変数Var2には“DX038”が格納されます。 実行結果/出力形式 なし 6.3.17 regsub(正規表現のパターンマッチングに基づいて置換する) 機能説明 正規表現のパターンマッチングに基づいて置換を行います。 記述形式 regsub 【-all】 exp string subspec varname オプション -all 正規表現に一致した箇所すべてを置換する場合に指定します。省略時は、最初に一致した箇所だけ置換します。 exp 置換箇所を特定する正規表現を指定します。 string 置換対象となる文字列を指定します。 subspec 置き換え文字列を指定します。置き換え文字列は、必ず“{}”(中括弧)で囲んでください。また、置き換え文字列中 に“\”または“&”を入れる場合は、それぞれ“\\”、“\&”と表記してください。 - 259 - varname 置換の結果、できた文字列を格納する変数の名前を指定します。 ポイント 正規表現とは、文字列の構造を、記号を使用して表したもので、本コマンドはstringで指定した文字列中から正規表現 expで表した構造と一致する部分をsubspecで指定した文字列に置き換えてvarnameで指定した変数に格納します。 正規表現の書き方については、“正規表現”を参照してください。 復帰値 0: 一致しませんでした。 1: 一致しました。 使用例 文字列の間の空白をすべてカンマに置換します。 set text "a b c d" regsub -all " " $text {,} result puts $result 実行結果/出力形式 a,b,c,d 6.3.18 set(変数に値を格納する) 機能説明 変数に値を格納します。 記述形式 set varname 【value】 オプション varname 値を格納する変数名を指定します。 value 格納する値です。数値または文字列を指定します。省略時は、varnameで指定した変数の値は変更されません。 復帰値 処理後にvarname変数に格納されている値(valueを指定した場合は、valueと同じ値、valueが省略された場合は、varname 変数にあらかじめ格納されていた値) 注意事項 valueを省略した場合、復帰値としてvarname変数に格納されていた値が返されます。このため、varnameで指定する変数 が未設定(新規)であるとエラーになります。 - 260 - 使用例 変数rcに数値を変数msgにテキストを格納します。 set rc 1 set msg "File open error" 6.3.19 string(文字列を操作する) 機能説明 文字列に対して、比較、取り出し、変換、切断などの操作を行います。 記述形式 string option arg 【arg ....】 オプション option 操作内容を指定する、オプションキーワードを指定します。指定可能なオプションの指定方法と説明を以下に示しま す。 arg 操作に必要な引数を指定します。 表6.1 オプションごとの説明 オプション string compare string1 string2 説明 文字列を比較します。 string1が辞書順でstring2より小さいか等しいか大きいかにより、それぞ れ-1、0、1を返します。 string first string1 string2 string2の中にstring1が出現するかを調べます。 見つかればstring2の中の最初にstring1が出現した場所(先頭文字のイ ンデックス(注))を返します。見つからなければ-1を返します。 string index string charIndex stringの中のcharIndexで示される場所(インデックス(注))の文字を返しま す。 string last string1 string2 string2の中にstring1が出現するかを調べます。 見つかればstring2の中で最後にstring1が出現した場所(先頭文字のイ ンデックス(注))を返します。見つからなければ-1を返します。 string length string stringの文字列の長さを返します。 string match pattern string stringにpatternが一致するか調べ、一致する文字列があれば1を、なけれ ば0を返します。 patternには、UNIXのCシェルでファイル名指定などに用いる特殊文字も 使用できます。 pattern中で特殊文字として扱われるものと、その意味を以下に説明しま す。 *: 任意の文字の並び(空文字列を含む)と解釈されます。 例) パターン ab* は、abで始まる任意の文字列に一致します。 - 261 - オプション 説明 ?: 任意の1文字と解釈されます。 例) パターン ab? は、abで始まる3文字の文字列に一致します。 []: 大括弧内に指定された任意の1文字と解釈されます。また、大括弧内 にa-zに指定された場合は、a ~ z までの任意の文字として解釈され ます。 例) パターン ab[0-9] は、abで始まり、後ろが数字である3文字の文字列 に一致します。 \: パターン記述上の特殊文字(*?[]\)の直前に記述することにより、そ の文字の特殊な意味を消し、単なる1文字として扱わせます。 例) パターン ab\* は、文字列 ab* に一致します。 pattern中に特殊文字が含まれていない場合は、patternと完全に同一 である場合に一致となります。 string range string i j 文字列のiからjで示される場所(インデックス(注))の文字列を返します。 string tolower string stringを小文字に変換した文字列を返します。 string totitle string stringの先頭を大文字、残りを小文字に変換した文字列を返します。 string toupper string stringを大文字に変換した文字列を返します。 string trim string 【chars】 stringの最初か最後に、charsで指定された文字セットに含まれる文字が あれば、その文字を削除した文字列を返します。 chars省略時は、空白文字が削除されます。 string trimleft string 【chars】 stringの最初に、charsで指定された文字セットに含まれる文字があれば、 その文字を削除した文字列を返します。chars省略時は、空白文字が削 除されます。 string trimright string 【chars】 stringの最後に、charsで指定された文字セットに含まれる文字があれば、 その文字を削除した文字列を返します。chars省略時は、空白文字が削 除されます。 string wordend string index stringの中で、インデックス(注)で示される文字を含んだ単語の、次の文 字の位置を返します。 string wordstart string index stringの中で、インデックス(注)で示される文字を含んだ単語の、先頭の 文字の位置を返します。 注) インデックスとは、先頭文字を0とした場合の文字列中の位置(n文字目)を表します。 日本語文字(2バイト文字)も1文字として数えられます。 ポイント 文字列判定にstringコマンドを使用する場合、stringコマンドだけで複雑な条件は指定できないので論理式を利用します。 例えば、変数EventTextに“AAA”または“BBB”という文字列が格納されていた場合、標準出力に表示します。 - 262 - if {[string first "AAA" $EventText] > 0 || [string first "BBB" $EventText] > 0} { puts $EventText } 復帰値 “オプションごとの説明”を参照してください。 使用例 変数bufに格納されている文字列の先頭3文字を抜き出し、変数topに格納します。 set top [string range $buf 0 2] 実行結果/出力形式 なし 6.3.20 sw_TcCloseTrace(トレースファイルをクローズする) 機能説明 トレースファイルをクローズし、トレースの採取を終了します。 記述形式 sw_TcCloseTrace thandle オプション thandle sw_TcOpenTraceで取得したハンドルを指定します。 復帰値 TCOK: 正常終了 TCERR: 異常終了 参照 sw_TcOpenTrace(トレースファイルをオープンする) 実行環境による差異 OSやエディションによる差異はなし。 使用例 変数hwndにsw_TcOpenTraceの復帰値が格納されている場合、hwndが示すトレースファイルをクローズする。 sw_TcCloseTrace $hwnd 実行結果/出力形式 なし - 263 - 6.3.21 sw_TcOpenTrace(トレースファイルをオープンする) 機能説明 トレースファイルをオープンし、トレース採取のための初期処理を行います。スクリプトの実行トレース採取を開始する場 合は、本コマンドが最初に呼び出されなければなりません。 記述形式 sw_TcOpenTrace 【-size fsize】【-level tlevel】【-mode group|other】 filename オプション -size fsize fsizeにトレースファイル1ファイルあたりの最大サイズを1~100000[KB]で指定します。省略値は、50KBです。 トレース採取は、2つのファイルが作成されサイクリックに採取されるため、ファイルサイズの最大値の見積もりはここで 指定するサイズの2倍になります。 -level tlevel tlevelにトレースレベルを0~2で指定します。省略値は、1です。以下にレベルごとの採取内容と推奨例を示します。 0: それ以降のsw_TcWriteTraceコマンドは無効となりトレースは採取されません。 1: それ以降のsw_TcWriteTraceでトレースレベル1のものだけが採取されます。 例) 実運用時にも採取する情報の出力に使用 - 起動時や処理結果など動作ログとして残す情報の出力 - 異常を検知した場合の詳細情報など、エラーログとして残す情報の出力 2: それ以降のsw_TcWriteTraceでトレースレベル1と2のものが採取されます。 例) 動作確認テスト時やデバッグ時に採取する情報の出力に使用 - 処理分岐点や外部プログラム起動の前後など、スクリプトのルートチェックとして残す情報の出力 - 読み込みファイルの内容やループ処理内での変数値など、スクリプト内情報として残す情報の出力 -mode group|other 作成するトレースファイルの書き込みモードを指定します。省略時は、所有者だけに書き込み許可属性を設定しま す。本オプションは、Windows上では無視されます。 group 所有者およびグループに書き込み許可属性を設定します。 other 所有者、グループおよびその他に書き込み許可属性を設定します。 filename トレースファイル名を指定します。パス指定なしでファイル名だけ指定した場合は初期設定のトレース格納ディレクトリ へ採取され、パス指定をした場合はそのパスに従って採取されます。 Windows上のファイル名の場合は、ディレクトリの区切りを“\”(円記号)のほかに“/”(スラッシュ)で記述することが可能 です。円記号を使用する場合は、エスケープ文字に扱われないようファイル名全体を“{}”(中括弧)で囲む必要があ ります。 - 264 - トレースは、初期設定で以下のディレクトリに格納されます。 【Windows版】 Systemwalkerインストールディレクトリ\MpWalker.DM\mpfwtcc\trc 【UNIX版】 /var/opt/FJSVfwtcc/trc トレースは、2つのファイルが作成されそれらに対してサイクリックに採取していきます。そのため、実際のファイル名 は、ここで指定するファイル名の後ろに“#1.txt”または“#2.txt”が付加された名前となります。 例) 【Windows版】 {c:\tmp\trc}と指定した場合、c:\tmp配下にtrc#1.txtとtrc#2.txtが作成されます。 【UNIX版】 “/tmp/trc”と指定した場合、/tmp配下にtrc#1.txtとtrc#2.txtが作成されます。 復帰値 正の値: 正常終了。トレースコマンドで使用するハンドル -9: メモリ不足 -15: コード変換エラー -17: ファイルオープンエラー 参照 sw_TcCloseTrace(トレースファイルをクローズする) 実行環境による差異 OSやエディションによる差異はなし。 使用例 【Windows版】 ファイルc:\var\tmp\usrtrcをトレースファイルに指定してトレースをオープンし、ハンドルを変数hwndに格納します。 set hwnd [sw_TcOpenTrace {c:\var\tmp\usrtrc}] 【UNIX版】 ファイル/var/tmp/usrtrcをトレースファイルに指定してトレースをオープンし、ハンドルを変数hwndに格納します。 set hwnd [sw_TcOpenTrace /var/tmp/usrtrc] 実行結果/出力形式 なし - 265 - 6.3.22 sw_TcWriteTrace(トレース情報の出力をする) 機能説明 トレースファイルにトレース情報を出力します。 記述形式 sw_TcWriteTrace 【-level tlevel】 thandle text オプション -level tlevel tlevelにトレースレベル1または2を指定します。省略値は、1です。 thandle sw_TcOpenTraceで取得したハンドルを指定します。空文字列“”を指定した場合は、トレースの採取はされません。 text トレースファイルに出力する任意の文字列を900バイト以内で指定します。900バイトを超える文字列は、900バイトで 切り捨てられます。 復帰値 TCOK: 正常終了 TCERR_WRITE: ファイル書き込みエラー TCERR_CODECONV: コード変換エラー 参照 sw_TcOpenTrace(トレースファイルをオープンする) 実行環境による差異 OSやエディションによる差異はなし。 使用例 変数hwndにsw_TcOpenTraceの復帰値が格納されている場合、文字列“File open error”をhwndが示すトレースファイル に書きます。 sw_TcWriteTrace $hwnd "File open error" 実行結果/出力形式 トレースファイルの出力形式を以下に示します。 Mon Apr 4 10:37:00 2005 18879 File open error 各項目について、以下に説明します。 第1項目 : 時刻 出力時の時刻が“曜日 月 日 時:分:秒 年”の形式で出力されます。 - 266 - 第2項目 : プロセスID SystemwalkerスクリプトのプロセスIDが出力されます。 第3項目 : 文字列 sw_TcWriteTrace で指定した文字列が出力されます。 6.3.23 while(ループする) 機能説明 条件が成立する間、処理を繰り返します。 記述形式 while {test} {body} オプション test ループ(body)を繰り返す条件式を指定します。数値は、0が偽でそれ以外が真です。文字では、true,yesが真でfalse,no が偽になります。条件式内にはコメントを記述しないでください。 条件式で使用できる条件演算子 条件演算子 説明 ! 否定 < , > , <= , >= , == , != 比較 && , || 論理積、論理和 body 条件が真の間実行されるスクリプトコマンド部分です。改行またはセミコロンで区切ることにより複数のコマンドが記述 できます。 復帰値 なし 注意事項 ・ “while”と“{ }”(中括弧)の間、および条件式の“}”(閉じ中括弧)と実行部分の“{”(開き中括弧)の間は、必ず空白ま たはTAB文字が必要です。 “}”と“{”の間など、body以外のところで改行する場合は、行の最後に“\”(円記号)を付けて継続行となるようにしてく ださい。 ・ while文の条件判定の論理に誤りがあるとスクリプトは無限ループをする場合があります。それを回避するために、以 下のような仕組みで、ある回数より多くループすることがないよう対処をすることをお勧めします。 - while文の中にほかでは使用しないカウンタ用の変数を設け、その値をwhile文の処理の早い段階で毎回チェッ クさせる。 使用例 5回ループします。 set i 0 while {$i < 5} { incr i } - 267 - 実行結果/出力形式 なし - 268 - 第7章 サンプルスクリプトのカスタマイズ サンプルスクリプトのカスタマイズ方法について説明します。 ・ 編集可能部分 ・ メッセージ監視アクション型スクリプトのカスタマイズ ・ 単体起動型スクリプトのカスタマイズ 7.1 編集可能部分 各サンプルスクリプトで、ユーザが編集可能な部分は以下の3種類です。 ・ プロシジャ名 ・ 動作定義パート ・ 可変情報操作処理 サンプルスクリプト中の、編集可能箇所の開始と終了部分には、以下のコメントが付加されています。 [開始] # User customize area start----------------------------------------- [終了] # User customize area end------------------------------------------- また、開始部分にはその部分の編集内容および、関連する変数の意味がコメントとして書かれています。 実際に編集するときには、各サンプルスクリプトに記載されているコメントに従い、必要な変数に値を設定してください。 プロシジャ名 メッセージ監視アクション型、およびライブラリ型のサンプルをもとに、スクリプトを作成する場合、そのプロシジャ名を作成 規約に従って任意に変更することができます。 例) プロシジャ名を“UsrTextChange”に設定する #プロシジャ名設定 set ProcName UsrTextChange 動作定義パート 動作の静的なパラメタに相当する情報(コリレーションの回数、間隔、変換テキストなど)をスクリプト内の1箇所に集中的 に記述し、その箇所を定義パートとします。 動作定義パートは、単独定義型と複数定義型の2種類があり、サンプルスクリプトではその特性に応じて使い分けていま す。 ・ 単独定義型 スクリプトの動作パターンを記述する形式。 動作のパラメタとなる情報を手続き部で使用する変数に直接設定します。 例) コリレーション動作定義 # コリレーションカウント数(イベント数)設定 set CorNum 10 # コリレーションタイムアウト値(ミリ秒)設定 set Timer 3600000 - 269 - 単独定義型の場合、動作パターンの種類の数だけスクリプトを作成し、どの動作パターンを使用するかは、呼び出し 元で判断、切り分けをします。 ・ 複数定義型 複数のデータをテーブル化して定義する形式。 定義は、識別キーとそれに対応する値の2つ一組で行い、これを必要なデータの個数分定義します。 例) テキスト変換情報定義 # イベントテキスト変換設定 set msg ""001"" set OutTextFormat($msg) {%s: %sが正常起動しました} set msg ""002"" set OutTextFormat($msg) {%s: %sが正常終了しました} set msg ""003"" set OutTextFormat($msg) {%s: %sが異常終了しました} 複数定義型により、異なる複数の動作パターンを1つのスクリプトで持ち、どの動作パターンを使用するかは、この定 義を利用するスクリプトの可変情報操作処理内で識別キーを決定することで切り分けられます。 可変情報操作処理 動作の動的なパラメタに相当する情報(コリレーションのキー情報、定義キーなど)の切り出し、編集処理を可変情報操 作処理とします。 可変情報操作処理では、下記のコマンドを除き、Systemwalkerスクリプトの任意のコマンド・制御文が使用できます。 ・ return コマンド ・ exit コマンド 各コマンド・制御文の詳細については、“Systemwalkerスクリプトで使用するコマンド・制御文”を参照してください。 注意事項 運用管理サーバがUTF-8環境でポリシー配付先がUTF-8以外の場合、スクリプトの記述で以下の文字を入力すると配付 した先の文字コードに正しく変換されずに配付される場合があります。以下の文字を使用しないでください。 ・ 機種依存文字 ・ 以下の文字 ―~∥¢£¬ など 7.2 メッセージ監視アクション型スクリプトのカスタマイズ メッセージ監視アクション型のサンプルスクリプトのカスタマイズについて説明します。 ・ イベント固定テキスト変換 ・ イベント切り分けテキスト変換 ・ 先頭通知コリレーション ・ 末尾通知コリレーション ・ イベント詳細フィルタリング ・ 切り替え型イベント詳細フィルタリング ・ 関係イベント自動対処 ・ 発生イベントしきい値監視 ・ イベントファイル出力 - 270 - 7.2.1 イベント固定テキスト変換 機能説明 イベントテキストの変換をします。その際、メッセージテキスト中の任意の文字列を変換先文字列中に埋め込むことがで きます。 自動運用支援のフィルタリングで変換元テキストの特定を行い、その処理スクリプトとしてスクリプトごとに、常に同一の変 換を行います。変換先のパターンの数だけ、スクリプトを作成する必要があります。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample \scFixedTextChange.swt Solaris /etc/opt/FJSVssc/sample/scFixedTextChange.swt Linux /etc/opt/FJSVssc/sample/scFixedTextChange.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 変換先イベントテキスト 動作定義パート[単独定義型]の規約に従い編集します。 通知するイベントテキストを定義します。テキスト中に可変情報を埋め込むことができます。 可変部分切り出し 可変情報操作処理の規約に従い編集します。 変換先イベントテキストに可変文字列を埋め込む場合、その可変文字列を元のイベントテキストから抽出する処理を記述 します。 利用可能なイベント情報の項目は以下のとおりです。 ・ ノード名 ・ イベント発生日時 ・ イベントテキスト 注意事項 ・ 可変部分切り出し処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ 可変部分切り出し処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェントサー ビス機能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとするため、 冗長な処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作テスト” で行えます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安としては、 0.5秒以内になるようにしてください。 使用例 発生したイベントのテキストから、アプリケーション名(“AplName=”に続く文字列)と終了コード(“RetCode=”に続く数値) を可変文字列として切り出し、変換先イベントテキストに埋め込んだイベントを通知します。 以下のイベントを変換対象とします。 [変更前] - 271 - "Application abnormal end AplName=Jb01 UserInf=abc RetCode=014 DtlCode=00091" [変更後] "アプリケーションJb01が異常終了しました(終了コード014) " 編集内容 プロシジャ名 set ProcName UsrFixedTextChange 変換先イベントテキスト set SendText {アプリケーション%sが異常終了しました(終了コード%s)} 可変部分切り出し regexp {AplName=([^ ]*).* RetCode=([^ ]*)} $EventText All Var0 Var1 7.2.2 イベント切り分けテキスト変換 機能説明 メッセージテキスト中に含まれる識別キーごとに変換テキストを定義し、メッセージテキストを識別キーに対応したテキスト に変換します。 以下の2つのスクリプトとして提供します。 ・ イベント切り分けテキスト変換:メッセージ監視アクション型 ・ イベント切り分けテキスト変換(テーブル定義):ライブラリ型 メッセージ監視アクション型のスクリプトは、ライブラリ型のテキスト変換を利用するイベント変換スクリプトです。 ライブラリ型のスクリプトは、入力されたイベント識別キーに対し、変換先テキストを返却するプロシジャです。 イベント識別キーと、それに対するテキストのテーブル定義を持ちます。 また、このスクリプトでは、そのイベントに設定されている重要度をテキスト中に埋め込むこともできます。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample \scMultiTextChange.swt Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample \scMultiTextChangeTable.swt Solaris /etc/opt/FJSVssc/sample/scMultiTextChange.swt /etc/opt/FJSVssc/sample/scMultiTextChangeTable.swt Linux /etc/opt/FJSVssc/sample/scMultiTextChange.swt /etc/opt/FJSVssc/sample/scMultiTextChangeTable.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 イベント切り分けテキスト変換(scMultiTextChange.swt) プロシジャ名 - 272 - プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 使用するイベント切り分けテキスト変換(テーブル定義)のプロシジャ名 動作定義パート[単独定義型]の規約に従い編集します。 イベント識別キーと可変部分切り出し 可変情報操作処理の規約に従い編集します。 イベント識別キー、および通知イベントテキストに、可変文字列を埋め込みます。可変文字列は、もとのイベントテキスト から抽出することができます。 利用可能なイベント情報の項目は以下のとおりです。 ・ ノード名 ・ イベント発生日時 ・ イベントテキスト ・ 重要度 イベント切り分けテキスト変換(テーブル定義)(scMultiTextChangeTable.swt) プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 変換テーブル 動作定義パート[複数定義型]の規約に従い編集します。 イベント識別キーごとに通知するイベントテキストを定義します。 テーブル未定義出力メッセージ 動作定義パート[単独定義型]の規約に従い編集します。 識別キーがテーブル定義に存在しない場合に通知するイベントテキストを定義します。%sは元のイベントテキストに置き 換わります。 注意事項 ・ 可変部分切り出し処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ 可変部分切り出し処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェントサー ビス機能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとするため、 冗長な処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作テスト” で行えます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安としては、 0.5秒以内になるようにしてください。 ・ イベント切り分けテキスト変換の呼び出し側、およびテーブル定義サンプルスクリプトは両方とも本VL以降を使用し てください。 使用例 "001"、"002"、"003"をイベント識別キーとする変換テーブルを定義します。発生したイベントのテキストからアプリケーショ ン名(“AplName=”に続く文字列)と識別キーに使用するメッセージID("1個目と2個目のコロンの間の数値)を切り出し、重 要度とアプリケーション名を変換先のイベントテキストに埋め込んだイベントを通知します。 以下のイベントを変換対象とします。 [変更前] "INFO: 001: AplName=Jb01" "INFO: 002: normal ended AplName=Jb01" "ERROR: 003: abnormal ended AplName=Jb01" "ERROR: 004: unknown error AplName=Jb01" - 273 - [変更後] "情報: Jb01が正常起動しました" "情報: Jb01が正常終了しました" "エラー: Jb01が異常終了しました" イベント識別キーが、"001"、"002"、"003"以外だった場合、テーブル未定義出力メッセージを通知します。 "未定義の識別キーです。ERROR:004: unknown error AplName=Jb01" 編集内容 イベント切り分けテキスト変換(テーブル定義) [プロシジャ名] set TableProcName UsrMultiTextChangeTable [変換テーブル] set set set set set set msg ""001"" OutTextFormat($msg) {%s: %sが正常起動しました} msg ""002"" OutTextFormat($msg) {%s: %sが正常終了しました} msg ""003"" OutTextFormat($msg) {%s: %sが異常終了しました} [テーブル未定義出力メッセージ] set NoMatchOutText {未定義の識別キーです。%s} イベント切り分けテキスト変換 [プロシジャ名] set ProcName UsrMultiTextChange [使用するイベント切り分けテキスト変換(テーブル定義)のプロシジャ名] set TableProcName UsrMultiTextChangeTable [イベント識別キー、可変部分切り出し] regexp {: (.*): } $EventText All Key regexp {AplName=([^ ]*)} $EventText All Var1 set Var0 $Severity 7.2.3 先頭通知コリレーション 機能説明 発生した複数のイベントに対し、一定数ごとに通知をして、不要なイベントを破棄します。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scTopSendCor.swt Solaris /etc/opt/FJSVssc/sample/scTopSendCor.swt Linux /etc/opt/FJSVssc/sample/scTopSendCor.swt HP-UX 提供なし AIX 提供なし - 274 - 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 タイマ値 動作定義パート[単独定義型]の規約に従い編集します。 イベント発生数のカウントを継続する時間を定義します。カウント数が“まとめ個数”に達する前にここで指定した時間が 経過すると、カウンタをリセットします。タイマ値の経過時間の起点は、1つ目のイベントの発生時、または1つ前のイベン ト発生時のどちらかを選択できます。 まとめ個数 動作定義パート[単独定義型]の規約に従い編集します。 イベントの通知をひとまとめにする個数を定義します。また、1回目のイベントだけを通知し、その後のイベントを破棄し続 ける定義も可能です。 発行イベントテキスト 動作定義パート[単独定義型]の規約に従い編集します。 イベント発生数が“まとめ個数”で定義した個数を超えたときに発行するイベントのテキストを定義します。テキスト中には コリレーションキーとカウント中のイベントの総数を埋め込むことができます。 本スクリプトは、元のイベントをすべて破棄して、通知するイベントを新規に発行します。ただし、テキストにマイナス記号 だけを定義した場合、イベントを発行させるのではなく元のイベントをそのまま通知します。 コリレーションキーの設定 可変情報操作処理の規約に従い編集します。 イベント発生数のカウントはここで作成したキー単位に行います。1つのスクリプトで複数の動作(ノードごとにコリレーショ ンをするなど) を実現させたい場合は、以下のイベント情報がキーに利用できます。 ・ ノード名 ・ イベントテキスト 注意事項 ・ コリレーションの結果として通知されるイベントの発生元システムは、コリレーションスクリプトを動作させているシステ ムの名前になります。ただし、発行イベントテキストとしてマイナス記号“"-"”のみの指定を行った場合は、通知を行う タイミングで受信した元のイベントがそのまま使用されるため、発生元システムも元イベントのままになります。 ・ コリレーションキーの設定処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ コリレーションキーの設定処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェン トサービス機能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとする ため、冗長な処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作 テスト”で行えます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安とし ては、0.5秒以内になるようしてください。 ・ 発行イベントテキストにマイナス記号以外を指定した場合は、発行イベントテキストで定義したイベントが、そのスクリ プトの呼び出しをしている[イベント監視の条件定義]に再度該当しないように条件定義をしてください。発行したイベ ントが自身の条件定義に該当すると発行したイベントが正しく通知されません。 ・ SystemwalkerのバージョンレベルがV10.0L10または10.0以前より移行したユーザスクリプトの場合、発行イベントテ キストにマイナス記号“-”をつける設定はできません。 クラスタ運用をしている場合 ・ クラスタ運用しているサーバ上で、先頭通知コリレーションを動作させた場合、切り替えの前後で、それまでに発生し た処理対象イベントの数などの情報は引き継がれず、コリレーション処理全体がすべてリセットされます。 使用例 - 275 - 例1 1分以内に発生した特定のイベント(アプリケーション名がテキスト中に“AplName=xxxx”の形式で入っている)で同一ノー ド、同一アプリケーションからのものは10個を1つにまとめて通知します。 編集内容 [プロシジャ名] set ProcName UsrTopSendCor [タイマ値] set Timer 60000 [まとめ個数] set CorNum 10 [発行イベントテキスト] set OutText {Application error occurred} [コリレーションキーの設定] set apl "" set rc [regexp {AplName=([^ ]*)} $EventText All apl] set Key "$NodeName-$apl" 例2 ある業務アプリケーションは複数サーバと通信をしながら処理をしており、通信を行うプロセスは処理内容ごとに複数実 装されています。各プロセスは、必要に応じてそれぞれで通信処理を行っているため通信先サーバでエラーが発生する とエラー発生サーバとの通信に失敗したことを通知する以下のイベントがプロセスごとに複数通知されます。 プロセス(xxxx)で通信エラーが発生しました。nodename=yyyy xxxx: 通信エラーを検知したプロセス名 yyyy:エラーの発生した通信先システムのノード名 そこでこのイベントについては、単発で発生した場合は通知を行うが、同一通信先に対するものが30秒間隔以内に複数 通知された場合は、プロセス名が異なっていても破棄するようにします。 編集内容 [プロシジャ名] set ProcName UsrAplEventSup [タイマ値] set Timer 3000- [まとめ個数] set CorNum "-" [発行イベントテキスト] set OutText {-} [コリレーションキーの設定] regexp {nodeName=([^ ]*)} $EventText All TargetNode set Key "UsrAplEventSup:$TargetNode" - 276 - 補足説明 通信先ごとに上記の処理をするために、コリレーションキーにはメッセージテキストから通信先のノード名を切り出し、そ れを埋め込んでいます。 7.2.4 末尾通知コリレーション 機能説明 時間内に一定の条件を満たすイベントがすべて発生するかチェックします。その際に、処理対象のイベントは動作契機 となる1つ目のイベントも含めて、すべて監視画面に通知されないようになります。 条件を満たすイベントがすべて発生またはタイムアウトした場合に、それらを通知する末尾通知イベントを発生させます。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scLastSendCor.swt Solaris /etc/opt/FJSVssc/sample/scLastSendCor.swt Linux /etc/opt/FJSVssc/sample/scLastSendCor.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 タイマ値 動作定義パート[単独定義型]の規約に従い編集します。 条件チェックを継続する時間を定義します。1つ目のイベントが発生し、条件を満たすイベントがすべて発生する前にここ で指定した時間が経過すると、タイムアウトと判断します。 条件判定項目 動作定義パート[単独定義型]の規約に従い編集します。 条件判定で使用する情報の項目を以下の中から選択します。 ・ ノード名 ・ イベント発生時刻 ・ イベントテキスト 条件チェックは、処理対象イベントの条件判定項目の中に“キーワードリスト”に定義したキーワードが含まれているか チェックします。 必要キーワードリスト 動作定義パート[単独定義型]の規約に従い編集します。 条件判定に使用するキーワードのリストを定義します。処理対象となった各イベントの“条件判定項目”に対してここで定 義したキーワードが含まれているかチェックします。ここで定義されたキーワードを含むイベントがすべて発生した時点で 条件を満たしたと判断します。なお、イベントの発生順序は関係しません。 警告イベントテキスト 動作定義パート[単独定義型]の規約に従い編集します。 1つ目のイベント受け付け時に、処理の開始を通知するイベントを発行したい場合、発行させるイベントのテキストを定義 します。 条件一致時発行イベントテキスト - 277 - 動作定義パート[単独定義型]の規約に従い編集します。 条件を満たしたと判断したときに、通知するイベントを発行したい場合、発行させるイベントのテキストを定義します。 タイムアウト時発行イベントテキスト 動作定義パート[単独定義型]の規約に従い編集します。 条件が満たされる前にタイムアウトと判断したときに、通知するイベントを発行したい場合、発行させるイベントのテキスト を定義します。 コリレーションキーの設定 可変情報操作処理の規約に従い編集します。 イベント発生数のカウントはここで作成したキー単位に行います。1つのスクリプトで複数の動作(ノードごとにコリレーショ ンをするなど)を実現させたい場合は、以下のイベント情報がキーに利用できます。 ・ ノード名 ・ イベントテキスト 注意事項 ・ コリレーションの結果として通知されるイベントの発生元システムは、発行イベントテキストとしてマイナス記号“"-"”の みの指定を行った場合も含め常にコリレーションスクリプトを動作させているシステムの名前になります。 ・ コリレーションキーの設定処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ コリレーションキーの設定処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェン トサービス機能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとする ため、冗長な処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作 テスト”で行えます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安とし ては、0.5秒以内になるようしてください。 ・ SystemwalkerのバージョンレベルがV10.0L10または10.0以前より移行したユーザスクリプトの場合、条件一致時発行 イベントテキストにマイナス記号“-”およびプラス記号“+”を、タイムアウト時発行イベントテキストに“ +”記号つける設 定はできません。 クラスタ運用をしている場合 ・ クラスタ運用しているサーバ上で、末尾通知コリレーションを動作させた場合、切り替えの前後で、それまでに発生し た処理対象イベントの数などの情報は引き継がれず、コリレーション処理全体がすべてリセットされます。 使用例 例1 1分以内に発生した、同一アプリケーションからの特定のイベント(アプリケーション名がテキスト中に“AplName=xxxx”の 形式で入っている)で、node1、node2、node3の3ノードからの通知があるかをチェックします。 編集内容 [プロシジャ名] set ProcName UsrLastSendCor [タイマ値] set Timer 60000 [条件判定項目] set CompParam 0 [必要キーワードリスト] lappend CompList {node1} {node2} {node3} - 278 - [警告イベントテキスト] set FirstText {Event CorrelationNo1 started} [条件一致時の発行イベントテキスト] set OutText1 {Event CorrelationNo1 normal ended} [タイムアウト時発行イベントテキスト] set OutText2 {Event CorrelationNo1 abnormal ended} [コリレーションキーの設定] set apl "" set rc [regexp {AplName=([^ ]*)} $EventText All apl] set Key $apl 例2 ある業務アプリケーションは複数サーバと通信をしながら処理をしており、通信を行うプロセスは処理内容ごとに複数実 装されています。各プロセスは10分に1回必ずそれぞれで通信処理を行っているが、通信先サーバは常に稼働している とは限らず、非稼働中の場合それを通知する以下のイベントがプロセスごとに複数通知されます。 プロセス(xxxx)は通信の接続処理に失敗しました。nodename=yyyy xxxx: 接続不可を検知したプロセス名。proc1,proc2,proc3,proc4のどれか。 yyyy:通信先システムのノード名 そこでこのイベントについては、最初のものが発生した後、同一通信先に対するものが10分以内に全プロセスから通知 されれば相手先が非稼働中と判断して全イベントをひとまとめにする簡略通知を行い、10分以内に全プロセスからエラー が発生しなければ、アプリケーション側(エラー通知したプロセス)の問題の可能性があるため、それらを個々のイベント として通知します。 編集内容 [プロシジャ名] set ProcName UsrAplEventConcat [タイマ値] set Timer 600000 [条件判定項] set CompParam 2 [必要キーワードリスト] lappend CompList {proc1} {proc2} {proc3} {proc4} [警告イベントテキスト] set FirstText {Target system has the possibility not to run (%s).} [条件一致時発行イベントテキスト] set OutText1 {+} [タイムアウト時発行イベントテキスト] set OutText2 {-} [コリレーションキーの設定] - 279 - regexp {nodename=([^ ]*)} $EventText All TargetNode set Key "AplEventConcat:$TargetNode" 補足説明 通信先ごとにこの処理を行うために、コリレーションキーにはメッセージテキストから通信先のノード名を切り出し、それを 埋め込んでいます。また、最初の警告イベントにこのキーを埋め込むことで接続に失敗した通信先を識別可能にしてい ます。 7.2.5 イベント詳細フィルタリング 機能説明 単一の通知イベントに対して諸情報を解析し、その結果に応じてイベント情報の書き換えを行えるようにします。 参照だけできる情報と書き換えもできる情報があります。イベント情報の項目は以下のとおりです。 ・ 参照だけ可能な情報 - ノード名 - IPアドレス - イベント発生日時 - オブジェクト名 ・ 参照と更新が可能な情報 - イベントテキスト - ログ格納の設定 - 上位システム送信の設定 - 文字色 - 背景色 - 重要度 - 監視イベント種別 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scEventDtlFilter.swt Solaris /etc/opt/FJSVssc/sample/scEventDtlFilter.swt Linux /etc/opt/FJSVssc/sample/scEventDtlFilter.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 イベント情報編集処理 可変情報操作処理の規約に従い編集します。 編集可能な項目は以下のとおりです。また、イベントテキストには、ノード名やIPアドレスなどのイベント情報を埋め込む こともできます。 ・ イベントテキスト - 280 - ・ ログ格納の設定 ・ 上位システム送信の設定 ・ 文字色 ・ 背景色 ・ 重要度 ・ 監視イベント種別 注意事項 ・ スクリプトの処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ スクリプトの処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェントサービス機 能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとするため、冗長な 処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作テスト”で行え ます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安としては、0.5秒以 内になるようにしてください。 ・ 上位システム送信設定や文字色等のイベント情報が、[Systemwalkerコンソール]の[イベント定義/アクション定義]ダ イアログボックスの[メッセージ監視(詳細)]で変更されている場合でも、イベント詳細フィルタリングの変更が優先され ます。 ・ 監視イベント種別を参照・編集するスクリプトをSystemwalkerのバージョンレベルがV11.0L10または11.0以前で動作 させた場合、監視イベント種別の参照は""(空文字列)になります。また、編集した内容は、無視されます。 ・ [監視イベント種別]を編集する場合、[監視イベント種別]は、必ず[監視イベント種別設定]ウィンドウで登録されてい る[監視イベント種別]を設定してください。登録されていない[監視イベント種別]に変更した場合、イベントメッセージ は[Systemwalkerコンソール[監視]]ウィンドウの[監視イベント一覧]に表示されません。 使用例 夜間業務のイベント(発生時刻が0時~4時台)は、[メッセージ一覧]での表示色を以下のとおりにします。 文字:黒 背景:淡灰色 編集内容 [プロシジャ名] set ProcName UsrAplEventSup [イベント情報の編集処理] # 日時なしメッセージは処理対象外 if {$Time_H !="-"} { if {$Time_H < 5} { set TextColor 0 set BackColor 14 } } 7.2.6 切り替え型イベント詳細フィルタリング 機能説明 イベント詳細フィルタリング相当の処理を“アクティブパターン”と“デフォルトパターン”の2種類持ち、トリガとなるイベント の発生によってどちらを使用するかを動的に切り替えてイベント情報の書き換えをします。 参照だけできる情報と書き換えもできる情報があります。イベント情報の項目は以下のとおりです。 - 281 - ・ 参照だけ可能な情報 - ノード名 - IPアドレス - イベント発生日時 - オブジェクト名 ・ 参照と更新が可能な情報 - イベントテキスト - ログ格納の設定 - 上位システム送信の設定 - 文字色 - 背景色 - 重要度 - 監視イベント種別 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample \scSwtchingEventDtlFilter.swt Solaris /etc/opt/FJSVssc/sample/scSwtchingEventDtlFilter.swt Linux /etc/opt/FJSVssc/sample/scSwtchingEventDtlFilter.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 タイマ値 動作定義パート[単独定義型]の規約に従い編集します。 アクティブパターンの使用が設定された後、デフォルトパターンに自動的に戻るまでの時間を設定します。 イベント判定処理 可変情報操作処理の規約に従い編集します。 処理対象イベントが以下のいずれであるかを判定し、結果を所定の変数(Result)に格納します。 判定には、イベント情報編集処理で参照可能な情報がすべて使用できます。 ・ アクティブパターン使用のトリガイベント ・ デフォルトパターン使用のトリガイベント ・ 単独では処理方法を判断できないイベント イベント情報編集処理 可変情報操作処理の規約に従い編集します。 以下の2種類があります。 - 282 - ・ アクティブパターン イベント判定処理で“アクティブパターンのトリガ”と判断されたイベント、およびその後続の“単独では処理方法を判 断できない”と判断されたイベントで行うイベント編集処理を記述します。 ・ デフォルトパターン イベント判定処理で“デフォルトパターンのトリガ”と判断されたイベント、およびその後続の“単独では処理方法を判 断できない”と判断されたイベントで行うイベント編集処理を記述します。 編集可能な項目は以下のとおりです。また、イベントテキストには、ノード名やIPアドレスなどのイベント情報を埋め込む こともできます。 ・ イベントテキスト ・ ログ格納の設定 ・ 上位システム送信の設定 ・ 文字色 ・ 背景色 ・ 重要度 ・ 監視イベント種別 注意事項 ・ スクリプトの処理内でreturnコマンドおよびexitコマンドは記述しないでください。 ・ スクリプトの処理時間は、そのままSystemwalkerのイベント通知性能に影響を与えます。インテリジェントサービス機 能はイベントの滞留を防ぐために、平均の処理時間が3秒を超えるスクリプトはタイムアウトエラーとするため、冗長な 処理は極力行わないでください。なお、処理時間の計測は“メッセージ監視アクション型スクリプト動作テスト”で行え ます。運用時にはシステム負荷などより処理が遅くなることがあるため、テスト時の処理時間の目安としては、0.5秒以 内になるようにしてください。 ・ 監視イベント種別を参照・編集するスクリプトをSystemwalkerのバージョンレベルがV11.0L10または11.0以前で動作 させた場合、監視イベント種別の参照は""(空文字列)になります。また、編集した内容は、無視されます。 ・ [監視イベント種別]を編集する場合、[監視イベント種別]は、必ず[監視イベント種別設定]ウィンドウで登録されてい る[監視イベント種別]を設定してください。登録されていない[監視イベント種別]に変更した場合、イベントメッセージ は[Systemwalkerコンソール[監視]]ウィンドウの[監視イベント一覧]に表示されません。 使用例 ある業務アプリケーションはエラーや情報の通知を複数のイベントに分けて行うが、イベントの主な内容は最初に通知さ れたイベントに記述され、2つ目以降のイベントにはその付帯情報のみが記述されます(下記)。そのため、2つ目以降の イベントは、通知の必要・不要が1つ目のイベントに依存してしまっています。 通知対象にすべきイベント(異常時に通知されるイベント群) APL01: ERROR: 処理で異常が発生しました。詳細は後続メッセージを参照してください。 APL01: 処理名:xxx ノード名:yyy APL01: 関連業務:zzz1,zzz2,zzz3,zzz4,zzz5,zzz6 通知対象外にすべきイベント(正常時に通知されるイベント群) APL01: INFO: 処理要求が通知されました。詳細は後続メッセージを参照してください。 APL01: 処理名:xxx ノード名:yyy APL01: 関連業務:zzz1,zzz2,zzz3,zzz4,zzz5,zzz6 - 283 - そこでこのイベントについては、テキスト中に“ERROR”があるイベント、およびその後続のイベントは通知対象とし、テキ スト中に“INFO”があるイベント、およびその後続のイベントは通知対象外とします。ただし、テキスト中に“INFO”があるイ ベント受信後1分以上経過して後続イベントが通知された場合は、ほかの異常が考えられるため、念のために後続イベン トも通知対象とします。 編集内容 [プロシジャ名] set ProcName UsrMultiLinEventFilter [タイマ値] set Timer 60000 [イベント判定処理] set rc [string first "ERROR: " $EventText] if {$rc != -1} { set Result DEFAULT } else { set rc [string first "INFO: " $EventText] if {$rc != -1} { set Result ACTIVE } else { set Result UNKNOWN } } [アクティブパターンイベント情報編集処理] set Log OFF set Send OFF [デフォルトパターンイベント情報編集処理] set Log ON set Send ON 補足説明 この例ではタイムアウト後の動作が“通知する”であるため、通知を行う処理("ERROR: "のあるイベント、およびその後続 イベントの処理)がデフォルトパターン、通知を行わない処理("INFO: "のあるイベント、およびその後続イベントの処理) がアクティブパターンとなっています。 7.2.7 関係イベント自動対処 機能説明 イベントの自動対処をします。 障害発生時に通知されるイベント(異常メッセージ用)とその障害が復旧したときに通知されるイベント(復旧メッセージ用) を定義することにより、障害の復旧メッセージを受信したときに異常メッセージと復旧メッセージの両方を自動的に対処済 にします。 以下の2つのスクリプトを一組として使用します。 ・ 関係イベント自動対処(異常メッセージ用):メッセージ監視アクション型 障害発生時に通知されるイベントのアクションとして定義するスクリプト(プロシジャ)。 ・ 関係イベント自動対処(復旧メッセージ用):メッセージ監視アクション型 障害復旧時に通知されるイベントのアクションとして定義するスクリプト(プロシジャ)。 - 284 - サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample \scAutoResolvedTarget.swt Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scAutoResolved.swt Solaris /etc/opt/FJSVssc/sample/scAutoResolvedTarget.swt /etc/opt/FJSVssc/sample/scAutoResolved.swt Linux /etc/opt/FJSVssc/sample/scAutoResolvedTarget.swt /etc/opt/FJSVssc/sample/scAutoResolved.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 関係イベント自動対処(異常メッセージ用)(scAutoResolvedTarget.swt) プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 有効期間 動作定義パート[単独定義型]の規約に従い編集します。 異常メッセージ用のイベントが、復旧メッセージ用のイベントの発生を待つ期間を定義します。有効期間を過ぎても対応 する復旧メッセージが発生しなかった異常メッセージについては、Systemwalker再起動時に自動的に対処済にします。 復旧キーの設定 可変情報操作処理の規約に従い編集します。 以下のイベント情報がキーに利用できます。 ・ イベントテキスト 復旧キーは、異常メッセージ用と復旧メッセージ用で対応を取るため同一の文字列を設定します。 ほかの登録済みの復旧キーと重複しない任意の固定文字列を指定します。 発生元が同一ホストで異常-復旧の組み合わせが複数ある場合は、イベントの異常-復旧の組み合わせごとにスクリプ トを分けて異なる文字列を設定します。 関係イベント自動対処(復旧メッセージ用)(scAutoResolved.swt) プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 復旧メッセージ自動対処 動作定義パート[単独定義型]の規約に従い編集します。 復旧メッセージ自身を自動対処するか否かを選択します。 復旧キーの設定 可変情報操作処理の規約に従い編集します。 以下のイベント情報がキーに利用できます。 ・ イベントテキスト 復旧キーは、異常メッセージ用と復旧メッセージ用で対応を取るため同一の文字列を設定します。 ほかの登録済みの復旧キーと重複しない任意の固定文字列を指定します。 発生元が同一ホストで異常-復旧の組み合わせが複数ある場合は、イベントの異常-復旧の組み合わせごとにスクリプ トを分けて異なる文字列を設定します。 - 285 - 注意事項 ・ 以下のような自動で対処済になるイベントに対しては、自動対処させることはできません。 - GSからの返答メッセージ - 高輝度イベント その他、自動で対処済になるイベントの詳細については、“Systemwalker Centric Manager 使用手引書 監視機能 編”の“障害に対処する”の説明を参照してください。 ・ 上位ノードと下位ノードの両方でイベントの自動対処を行う設定をした場合、下位ノード側の設定で自動対処済にな ります。 ・ Systemwalkerのバージョンレベルは、V12.0L10または12.0以降で動作します。V11.0L10または11.0以前では動作し ません。 ・ 関係イベント自動対処の未対処の異なる異常メッセージは、スクリプト実行しているノードごとに最大1000です。この 数を超える場合、古い異常メッセージから自動的に対処済になります。 ・ 異常メッセージと復旧メッセージの発生元は同じホスト名である必要があります。 異常メッセージと復旧メッセージの発生元が異なる場合や、異常メッセージ通知後、復旧メッセージが通知される前 にホスト名の変更を行った場合は自動対処されません。 ・ 同一のホストから同一の異常メッセージ(または同一の復旧キーを指定された異常メッセージ)が複数発生した場合、 それらは1つの復旧メッセージで一括して対処済になります。 使用例 例1 ある業務アプリケーションで動作に異常が起きた場合、また、その後異常状態から回復した場合にそれぞれ下記のよう な異常メッセージと復旧メッセージが通知されるシステムがあります。 "DBアプリケーションで異常が発生しました。AplName=DBApl_1" "DBアプリケーションが復旧しました。AplName=DBApl_1" このように異常と復旧の通知メッセージが同一ホストから通知された場合、復旧メッセージを契機に異常メッセージと復旧 メッセージの両方を対処済にします。 編集内容 関係イベント自動対処(異常メッセージ用) [プロシジャ名] set ProcName UsrDBAplTrouble [有効期間(日)] set TimeLimit 30 [復旧キーの定義] set Key {DBApl_1} 関係イベント自動対処(復旧メッセージ用) [プロシジャ名] set ProcName UsrDBAplRecovery [復旧メッセージ自動対処] set Resolve ON [復旧キーの定義] - 286 - set Key {DBApl_1} イベント監視の条件定義 異常メッセージ用 メッセージテキストの特定:アプリケーションで異常が発生しました。 プロシジャ名 :UsrDBAplTrouble 復旧メッセージ用 メッセージテキストの特定:アプリケーションが復旧しました。 プロシジャ名 :UsrDBAplRecovery 例2 以下のように同じような形式で通知される複数の異常-復旧メッセージに対して、それぞれ対応するスクリプトを作成す るのではなく、一組の異常-復旧メッセージ用スクリプトで自動対処します。 "DBアプリケーションで異常が発生しました。AplName=DBApl_1" "DBアプリケーションが復旧しました。AplName=DBApl_1" "顧客管理アプリケーションで異常が発生しました。AplName=CsDBSV_1" "顧客管理アプリケーションが復旧しました。AplName=CsDBSV_1" 復旧キーは、対応するイベントテキストの組ごとに復旧キーが定義されるようにイベントテキストからAplName=以降の文 字列(DBApl_1とCsDBSV_1)を切り出す設定をします。 編集内容 関係イベント自動対処(異常メッセージ用) [プロシジャ名] set ProcName UsrMultiAplTrouble [有効期間(日)] set TimeLimit 30 [復旧キーの定義] regexp {AplName=([^ ]*)} $EventText All Key 関係イベント自動対処(復旧メッセージ用) [プロシジャ名] set ProcName UsrMultiAplRecovery [復旧メッセージ自動対処] set Resolve ON [復旧キーの定義] regexp {AplName=([^ ]*)} $EventText All Key イベント監視の条件定義 異常メッセージ用 メッセージテキストの特定:アプリケーションで異常が発生しました。 プロシジャ名 :UsrMultiAplTrouble 復旧メッセージ用 - 287 - メッセージテキストの特定:アプリケーションが復旧しました。 プロシジャ名 :UsrMultiAplRecovery 7.2.8 発生イベントしきい値監視 機能説明 イベントを発生頻度で監視します。 通知イベントの発生頻度が単位時間と発生イベント数で監視しているしきい値に達しない間は、イベント通知を行いませ ん。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scEventThreshold.swt Solaris /etc/opt/FJSVssc/sample/scEventThreshold.swt Linux /etc/opt/FJSVssc/sample/scEventThreshold.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 単位時間 動作定義パート[単独定義型]の規約に従い編集します。 対象イベントの発生数のカウントを継続する時間を定義します。 発生イベント数 動作定義パート[単独定義型]の規約に従い編集します。 イベントの発生頻度のしきい値となる単位時間内で発生するイベント数を定義します。 しきい値超え通知イベントテキスト 動作定義パート[単独定義型]の規約に従い編集します。 イベントの発生頻度がしきい値に達したときに発行するイベントのテキストを定義します。イベントのテキストには、しきい 値超えの状態が継続している時間とその間に発生したイベント総数を埋め込むことができます。 使用例 異常通知メッセージの中には、ネットワークの通信量のように一時的な負荷による通知メッセージは無視して、それがあ る程度継続して発生するようなときにだけ通知させたい場合があります。 下記の通知イベントが15分間に5回に満たない場合は、何も通知を行いません。 " ネットワークの送信伝送路使用率が、70 % を超えました。ノード=10.90.xxx.xxx)" 編集内容 [プロシジャ名] set ProcName UsrNetBusy [単位時間(分)の定義] set Timer 15 - 288 - [発生イベント数] set EventCount 5 [しきい値超えイベントテキスト] set OutText {ネットワークの伝送経路使用率超えが規定の回数を超えています。継続時間(発生イベント総数):%s} %sは、しきい値超えの継続時間とその間の発生イベント総数に置き換わります。(hh:mm:ss (nnnnn)) 7.2.9 イベントファイル出力 機能説明 処理対象イベントの情報をファイルに出力します。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scEventLoging.swt Solaris /etc/opt/FJSVssc/sample/scEventLoging.swt Linux /etc/opt/FJSVssc/sample/scEventLoging.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 プロシジャ名 プロシジャ名の規約に従い編集します。 必ずプロシジャ名の先頭文字は“Usr”にします。 出力ファイル名 動作定義パート[単独定義型]の規約に従い編集します。 対象イベントの情報を出力するファイル名を定義します。 出力ファイルサイズ 動作定義パート[単独定義型]の規約に従い編集します。 対象イベントの情報を出力するファイルを切り替えるサイズを定義します。値は50~1000(KB)の範囲で指定します。出力 ファイルのサイズがこの値以上になると、その内容を“出力ファイル名.0”に残して、出力ファイルの内容をクリアします。 出力テキスト 可変情報操作処理の規約に従い編集します。 以下のイベント情報が参照できます。 ・ イベント発生日時(格納形式:YYYY/MM/DD hh:mm:ss) ・ ノード名 ・ IPアドレス ・ 監視イベント種別 ・ 重要度 ・ イベントテキスト 注意事項 ・ ほかのメッセージ監視アクション型スクリプトとの同時利用はできません。つまりほかのアクション型スクリプトを経由し たイベントをこのスクリプトでファイル出力させることはできません。 - 289 - ・ SystemwalkerのバージョンレベルがV11.0L10または11.0以前で動作させた場合、監視イベント種別(変数 Category) の参照は常に""(空文字列)になります。 ・ 出力ファイルは、運用中に直接エディタ等で開かないでください。内容を参照する場合は、ファイルをコピーし、コ ピー先のファイルを開くようにしてください。運用中に出力ファイルを直接開いた場合、その間イベントはファイルに 出力されずに破棄される場合があります。 ・ 複数のイベントファイル出力スクリプトで、同一の出力ファイル名を指定しないでください。 使用例 特定のアプリケーション(ラベルが"DBAPL")から出力されるイベントのみをファイルに出力させるようにします。出力ファ イルには、イベント発生時刻、重要度、ノード名、イベントテキスト情報を格納するようにします。 編集内容 [プロシジャ名] set ProcName UsrDBAPL [出力ファイル名の定義] set LogFile {DBAPLEvent.log} [出力ファイルサイズ] set FileSize 500 [出力テキスト] set OutText "$Timestamp $SeverityText $NodeName $EventText" イベント監視の条件定義 ラベルの特定:DBAPL プロシジャ名:UsrDBAPL 出力例 出力ログファイル(DBAPLEvent.log)の内容例 2004/03/21 2004/03/21 2004/03/21 2004/03/21 ・・・ 08:00:45 08:15:42 08:20:53 09:30:28 一般 警告 一般 重要 dbnode1.xxx.com dbnode1.xxx.com dbnode1.xxx.com dbnode1.xxx.com DBAPL: DBAPL: DBAPL: DBAPL: DBサービスが開始しました。 登録されていないコマンド(xyz)が呼び出されました。 XXXサービスが開始しました。 XXXサービスは停止状態に入りました。 7.3 単体起動型スクリプトのカスタマイズ 単体起動型のサンプルスクリプトのカスタマイズについて説明します。 ・ 必要イベント未発生調査 ・ 大規模同報リモートコマンド ・ メッセージ監視アクション型スクリプト動作テスト ・ 稼働状態の監視 ・ MIBしきい値監視 ・ サービス稼働監視 ・ Systemwalkerセルフチェック ・ Webサービス稼働監視 - 290 - ・ IPv6インタフェースの稼働監視 ・ ライブラリ型スクリプト動作テスト ・ 自動返答 7.3.1 必要イベント未発生調査 機能説明 現時刻から一定時間さかのぼってSystemwalkerのメッセージログ内を検索し、正常時に出力されるべきイベントが存在し ない場合にイベントを新規発行します。 また、その動作を一定間隔で繰り返すことができます。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scMsgSearch.swt Solaris /etc/opt/FJSVssc/sample/scMsgSearch.swt Linux /etc/opt/FJSVssc/sample/scMsgSearch.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 さかのぼり時間 メッセージログの検索において、現在時刻からさかのぼる時間を定義します。 検索は、ここで指定した時間だけ過去の時刻から現在時刻までの範囲で行います。 必要イベントテキスト 正常に出力しているべきイベントのテキストを定義します。 このテキストをメッセージログから検索します。 必要イベントノード名 メッセージログの検索において、メッセージの発生元ノードを限定する場合、対象とするノード名をリストで定義します。複 数のノードを定義した場合、ノードごとにメッセージログ内から“必要イベントテキスト”を検索します。ノード名は、[ノード プロパティ]画面の[インタフェース]タブの[ホスト名]に設定されている名前を使用します。ノードを特定しない定義もでき ます。この場合、どのノードからも“必要イベントテキスト”に定義した内容が出力されていないと、“発行イベントテキスト” を通知します。 発行イベントテキスト “必要イベントテキスト”が“さかのぼり時間”から現在時刻までの間のメッセージログ中に存在しなかった場合に、発行す るイベントテキストを定義します。エラー種別、ラベル等を含んだ書式で定義することができます。 “必要イベントノード名”を定義していた場合、通知するイベントテキストには、未発生のノード名を埋め込むことができま す。また、未発生の通知イベントは、ノードごとに発行します。 繰り返し回数 1回の起動でメッセージログの検索を繰り返す回数を定義します。 - 291 - 繰り返し間隔 メッセージログの検索を繰り返す間隔を定義します。 初回調査開始までの待ち時間 起動後、必要イベント未発生調査の処理開始までの待ち時間を設定します。 注意事項 ・ アプリケーションが出力するログファイルを検索対象に含める場合は、該当ログファイルをあらかじめ監視ログファイ ルに設定しておいてください。 クラスタ運用をしている場合 ・ クラスタ運用している運用管理サーバ上で、必要イベント未発生調査スクリプトを使用する場合、スクリプトを常に運 用系で動作させる必要があります。常に運用系で動作させるには、スクリプトの自動起動機能を使用してください。 ・ クラスタ運用している部門管理サーバ/業務サーバ上で、下位システムから通知されるイベントの未発生を調査する 場合、以下の注意が必要です。 - 切り替え、切戻し時は、実際には通知されているイベントに対して、未発生を通知する場合があります。これはク ラスタ運用している部門管理サーバ/業務サーバでは、切り替え、切戻し時に、システム監視のログファイル自体 が切り替わり、その直前までに下位システムから送信されたイベントが格納されていない状態になるためです。 使用例 過去1時間以内に、“nodeA”、“nodeB”、“nodeC”の3つのノードで、イベント“001: started AplName=Jb01”が発生してい なかった場合、異常通知イベントとして“Program not started AplName=Jb01 (Node=xxxxx)”を通知する処理を、6時間間 隔で3回行います。また、初回未発生調査までの待ち時間は、1分とします。 編集内容 [さかのぼり時間] set GoUpTime 60 [必要イベントテキスト] set TargetText {001: started AplName=Jb01} [必要イベントノード名] set TargetNode {nodeA nodeB nodeC} [発行イベントテキスト] set OutText {Program not started AplName=Jb01 (Node=%s)} [繰り返し回数] set ChkNum 3 [繰り返し間隔] set Interval 360 [初回調査開始までの待ち時間] set BeginWaitTime 1 実行結果例 “NodeB”と“NodeC”から必要イベントが発生していない場合、以下の2つのイベントを発行します。 - 292 - “Program not started AplName=Jb01 (Node=nodeB) ” “Program not started AplName=Jb01 (Node=nodeC) ” 7.3.2 大規模同報リモートコマンド 機能説明 引数で指定されたコマンドを、システム監視を行っている複数システムに対して実行し、その応答結果をレポートします。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scGlobalRmtCmd.swt Solaris /etc/opt/FJSVssc/sample/scGlobalRmtCmd.swt Linux /etc/opt/FJSVssc/sample/scGlobalRmtCmd.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 発行対象システムの指定 コマンドの発行対象となるノード名のリストを定義します。 ノード名は、[ノードプロパティ]画面の[インタフェース]タブの[ホスト名]に設定されている名前を使用します。パラメタで発 行対象システムのノード名(-h targetnodes)を指定した場合、この設定は無効になります。 レポート対象(または対象外)応答の指定 応答文字列の中から出力対象とする文字列を定義します。 結果レポート出力先指定 コマンドの実行結果の出力先を定義します。 ファイルまたは標準出力に出力させることができます。 出力時のシステムごとのソート指定 コマンドの実行結果の出力を、システムごとにソートするか否かを定義します。 異常終了数カウント有無 コマンドが異常終了した数のカウントをするか否かを定義します。 リモートコマンド同時発行数 大量のシステムに対するコマンド発行において、一度にコマンドを発行するシステム数を定義します。 発行リトライ回数 コマンドの発行に失敗した場合に、コマンドの発行をリトライする回数を定義します。 発行リトライ間隔 コマンドの発行に失敗した場合に、コマンドの発行をリトライする間隔を定義します。 - 293 - 注意事項 ・ リモートコマンドの同時実行可能数は、大規模同報リモートコマンド、Systemwalkerコンソールのリモートコマンド、ア クション定義のリモートコマンドなども含めて、Systemwalker Centric Manager全体で30個までです。 ・ リモートコマンドの発行先ノードは、システム監視を行っている被監視ノードです。したがって、運用管理クライアント から運用管理サーバに対して、リモートコマンドを発行することはできません。 ・ 実行するコマンドのオプションにダブルコーテーション(")や円記号(\)を記述する場合は、コマンドラインで解釈され ないようにその前に円記号(\)を付加してください。または、-nosplitオプションを指定してください。 ・ 本スクリプトにはタイムアウトの設定はなく、発行するコマンドの実行結果が出力し終わるまで動作し続けます。 ・ 本スクリプトでは、Systemwalkerのリモートコマンド機能を利用してコマンドの発行を行います。リモートコマンド機能 についての詳細および注意事項については“Systemwalker Centric Manager 使用手引書 監視機能編”の“リモート からコマンドを発行する”の説明を参照してください。 起動時の引数 記述形式 swctclsh execname|scriptfile [-nosplit] [-h targetnodes] command [option …] オプション execname|scriptfile 実行する単体起動スクリプトを指定します。 登録済みスクリプトの実行名、または、フルパスのスクリプトファイル名を指定します。 -nosplit 実行するコマンドのオプション(option)で使用しているダブルコーテーション(")や円記号(\)をコマンドラインに解釈さ せない場合に指定します。 例) UNIX環境上でWindows環境のノードへ、dir "C:\Program Files" のコマンドとオプションを発行する場合 -nosplit を指定しない場合: swctclsh scGlobalRmtCmd.swt dir \"C:\\Program Files\" -nosplit を指定する場合: swctclsh scGlobalRmtCmd.swt -nosplit dir "C:\Program Files" -h targetnodes 発行対象システムのノード名のリストを指定します。 ノード名は、空白を挟んで複数指定できます。指定できる数に制限はありません。複数指定する場合は、リスト全体を ダブルコーテーションで囲ってください。 例) -h "node1 node2 node3" command システム監視を行っているシステムに対して実行するコマンドを記述します。 option 実行するコマンドのオプションを記述します。 使用例 システムnode1、node2、node3へ同時にコマンド投入し、応答文字列中に“successful”、または“completion”があるものを 発行システムごとにソートして標準出力へレポートします。コマンド発行に失敗した場合、15秒後に1回リトライします。 - 294 - 編集内容 [発行対象システムの指定] set TargetNodes {node1 node2 node3} [レポート対象応答の指定] set RepKeyWords {successful completion} set NotRepKeyWords "" [結果レポート出力先指定] set OutPut stdout [出力時のソート指定] set Sort on [異常終了数カウント有無指定] set AbEndCount off [リモートコマンド同時発行数] set MaxRcmdNum 3 [リトライ回数] set RetNum 1 [リトライ間隔] set RetInterval 15 7.3.3 メッセージ監視アクション型スクリプト動作テスト 機能説明 メッセージ監視アクション型スクリプトを単体で実行し、動作に問題がないかを確認します。また、以下の項目について自 動的にチェックを行います。 ・ ファイルのオープン/クローズの整合性 ・ exitコマンドの実行の有無 ・ プロシジャの処理時間異常 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scActionProcChk.swt Solaris /etc/opt/FJSVssc/sample/scActionProcChk.swt Linux /etc/opt/FJSVssc/sample/scActionProcChk.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 - 295 - 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 テスト対象プロシジャ名 動作定義パート[単独定義型]の規約に従い編集します。 テスト用イベント情報 動作定義パート[単独定義型]の規約に従い編集します。 テスト対象スクリプトへ渡すイベント情報を任意に設定します。設定項目は以下のとおりです。 ・ ノード名 ・ IPアドレス ・ イベント発生日時 ・ オブジェクト名 ・ イベントテキスト ・ ログ格納 ・ 上位システム送信 ・ 文字色 ・ 背景色 ・ 重要度 ・ 監視イベント種別 1つのテストスクリプト内に定義できるイベント情報は、1イベント分だけなのでコリレーションなどで複数の種類のイベント について連続的プロシジャに処理させる場合は、イベントの種類ごとに複数のテストスクリプトを作成し、それらを連続的 に実行させます。 注意事項 ・ 本スクリプトによる“ファイルのオープン/クローズの整合性”および“exitコマンドの実行の有無”のチェックは、テスト実 行時に実際に呼び出されたコマンドに基づいて行われるため、if文などの分岐によりテスト時に通らなかったルート はチェックされていません。したがってテストを行う際には、テスト対象スクリプトの全ルートについてひととおり実行さ れるように、テスト用イベント情報の内容を変更し、実行を繰り返してください。 ・ 本スクリプトを実行するには、Systemwalker Centric Managerのサービスが起動中である必要があります。 使用例 夜間業務のイベント(発生時刻が0時~4時台)は、[メッセージ一覧]での表示色を変更する設定をしたイベント詳細フィル タリングスクリプトの動作確認をします。 プロシジャ名:UsrEventColorSet 編集内容 [テスト対象プロシジャ名] set TestProcName UsrEventColorSet [テスト用イベント情報] set set set set set NodeName IpAddr Time_H Time_M Time_S "Node1" "192.168.0.2" 4 59 59 - 296 - set set set set set set set EventText Log Send TrTicket TextColor BackColor Severity "Test Event Massage1" "ON" "ON" "OFF" 3 255 "Level_2" テスト結果 正常時には以下の情報が標準出力に出力されます。 イベント情報の編集結果 メッセージ監視アクション型スクリプトで編集可能な項目について、テスト用イベント情報の設定と同じ形式で出力されま す。 処理時間 テスト対象プロシジャの開始から終了まで処理時間がミリ秒単位で表示されます。 また、テスト対象スクリプトの処理で問題を検知したり文法エラーがあった場合は、その内容が標準エラー出力に出力さ れます。 出力例 使用例の場合(テスト対象:イベント詳細フィルタリング) EventText Log Send TrTicket TextColor BackColor Severity :Test Event Massage1 :ON :ON :OFF :0 :14 :Level_2 Processing time is 70 (milliseconds). 使用例の「テスト用イベント情報」の設定で、テスト対象をイベント固定テキスト変換にした場合 EventText Log Send TrTicket TextColor BackColor Severity :イベントテキスト Test Event Message1 を本テキストに置き換えました :ON :ON :OFF :3 :255 :Level_2 Processing time is 60 (milliseconds). テスト対象の処理にトレース(ファイル名:usrlog)のクローズ洩れがあった場合 Non-closed trace file was found. The filename is usrlog テスト対象の処理でexit文が実行された場合 The exit command was executed 7.3.4 稼働状態の監視 機能説明 被監視ノード、またはネットワーク機器に対し、一定間隔でPINGを行い、監視対象がダウンしていた場合、運用管理サー バ、または部門管理サーバへトラップを通知します。 - 297 - なお、監視対象がダウンしている間は、監視対象を復旧するまでトラップを通知しますので、監視間隔ごとにイベント一 覧にメッセージが出力されます。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmphost.swt Solaris /etc/opt/FJSVssc/sample/snmphost.swt Linux /etc/opt/FJSVssc/sample/snmphost.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 PINGタイムアウト PINGリトライ回数 通知ホスト 被監視ホスト Trap通知コミュニティ名 ポーリング間隔 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 動作定義パート[単独定義型]の規約に従い編集します。 注意事項 ・ 本スクリプトによる監視は、運用管理サーバ、部門管理サーバ、および業務サーバにて可能です。 ・ 本スクリプトでは、IPv6インタフェースの監視はできません。 クラスタ運用をしている場合 ・ 監視元ホストがクラスタの場合、運用系で監視を行う場合は二重監視の設定をOFFにしてください。 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールの導入によりICMP応答を抑止している被監視ノードでは、本機能による監視が行えま せん。監視対象とする場合、ICMPに応答するように設定してください。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“ネットワーク監視で表示されるメッセージ”を参照してください。 使用例 ホストhost1、host2にPINGを実行し、エラーがあった場合、通知ホストManagerHostName1、 ManagerHostName2に LinkDownを通知します。 - 298 - 編集内容 [PINGタイムアウト(秒)、PINGリトライ回数] set Timeout 2 set Retry 1 [通知ホスト] lappend Manager {ManagerHostName1} {ManagerHostName2} [被監視ホスト] lappend HostList {host1} {host2} [Trap通知コミュニティ名] set Community public [ポーリング間隔(分)] set Interval 10 [二重監視] set g(Dual) ON [二重化] set g(DuplicateAutoAction) OFF 7.3.5 MIBしきい値監視 機能説明 被監視ノード、またはネットワーク機器に対し、一定間隔でMIB取得を行い、しきい値を超えた場合、運用管理サーバ、 または部門管理サーバへトラップを通知します。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmpmib.swt Solaris /etc/opt/FJSVssc/sample/snmpmib.swt Linux /etc/opt/FJSVssc/sample/snmpmib.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 - 299 - 取得MIB種別 ホストの設定 動作定義パート[単独定義型]の規約に従い編集します。 設定項目は以下のとおりです。 ・ MIB取得するホスト名 ・ MIB種別 ・ しきい値 ・ 条件 ・ コミュニティ名 MIBリトライ回数 タイムアウト 通知ホスト ポーリング間隔 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 動作定義パート[単独定義型]の規約に従い編集します。 本スクリプトによる監視にて指定できるMIBの型 ・ INTEGER型 ・ COUNTER型 ・ GAUGE型 ・ TIMETICKS型 注意事項 ・ 本スクリプトによる監視は、運用管理サーバ、部門管理サーバ、および業務サーバにて可能です。 ・ 本スクリプトでは、SNMPv1以外のプロトコルでMIBは取得できません。 クラスタ運用をしている場合 ・ 監視元ホストがクラスタの場合、運用系で監視を行う場合は二重監視の設定をOFFにしてください。 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールを導入している被監視ノードでは、MIB情報が正しく取得できない場合があります。ネッ トワーク監視のSNMP要求(161/udp)に対し、応答を通知できるように、SNMP要求を許可するように設定してくださ い。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“ネットワーク監視で表示されるメッセージ”を参照してください。 使用例 ホ ス ト host1 、 host2 か ら MIB を 取 得 し 、 し き い 値 が 条 件 を 超 え て い た 場 合 、 通 知 ホ ス ト ManagerHostName1、 ManagerHostName2へトラップを通知します。 ホスト Host1 取得するMIB SysUpTime.0 しきい値 1000 条件 UP(しきい値以上のとき) - 300 - ホスト Host2 取得するMIB ifInOctets.0 しきい値 1000 条件 DOWN(しきい値以下のとき) 編集内容 [MIB取得するホスト名、MIB種別、しきい値、条件、コミュニティ名(省略可:省略値 public)] lappend HostMibKind1 {host1} {sysUpTime.0} {1000} {UP} {public} lappend HostMibKind2 {host2} {ifInOctets.0} {1000} {DOWN} [MIBリトライ回数、タイムアウト(秒)] set Retry set Timeout 1 3 [通知ホスト] lappend Manager {ManagerHostName1} {ManagerHostName2} [ポーリング間隔(分)] set Interval 10 [二重監視] set g(Dual) ON [二重化] set g(DuplicateAutoAction) OFF 7.3.6 サービス稼働監視 機能説明 監視対象ノードで動作するサービス(HTTP/SMTPなど)に対し、一定間隔で稼働状況の監視を行い、指定時間内に応答 がない、またはエラーが発生した場合、運用管理サーバ、または部門管理サーバへイベントを通知します。 サービス稼働監視では、以下のサービスをサポートしています。 ・ HTTP ・ HTTPS ・ DOMAIN ・ SMTP ・ FTP ・ NNTP ・ TELNET ・ ICMP ・ POP3 サンプルスクリプトファイル - 301 - 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmsmt.swt Solaris /etc/opt/FJSVssc/sample/snmsmt.swt Linux /etc/opt/FJSVssc/sample/snmsmt.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 監視間隔 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 動作定義パート[単独定義型]の規約に従い編集します。 監視対象サービス 動作定義パート[単独定義型]の規約に従い編集します。 設定項目は以下のとおりです。 ・ 監視対象ホスト名 ・ 監視対象サービス名 ・ サービスのポート番号 ・ レスポンス時間 ・ リトライ回数 ・ チューニングパラメタ ・ イベント対処フラグ 二重化 動作定義パート[単独定義型]の規約に従い編集します。 注意事項 ・ 本スクリプトによる監視は、運用管理サーバ、部門管理サーバ、および業務サーバにて可能であり、バージョンレベ ルはV10.0L10または10.0以降で動作します。V5.0L30または5.2/5.2.1で動作させた場合、以下のエラーメッセージが 表示されます。 MpNsagtMain: ERROR: 2002: サービス稼動監視に必要なMpSmtcltoolコマンドが見つかりません。(監視元:%1) ・ プロキシサーバを経由し、HTTP、またはHTTPS通信でサービス監視を行うことはできません。 ・ HP-UX、AIXでは、HTTPSサービスの監視を行うことはできません。 ・ サービス稼働監視で指定する監視対象ホスト名は、[監視マップ]上の被監視対象ホストの[ノードプロパティ]で記載 されているホスト名と同じにしてください。異なる場合、新ノードフォルダにノードが追加されます。 - 302 - ・ HTTPSサービス監視を行う場合は、証明書環境のセットアップが必要です。詳細については、“Systemwalker Centric Manager 使用手引書 監視機能編”-“ノードの稼働状態を監視する”の“HTTPS監視について”を参照してください。 ・ 監視対象ホストに上位サーバを指定することはできません。 ・ 本スクリプトを使用して監視を行うノードに対し、監視の抑止が行われた場合、監視を再開するときには、監視を行っ ているサーバでmpnmmonrst(ネットワーク管理スクリプトによる監視リセットコマンド)を起動する必要があります。 mpnmmonrst(ネットワーク管理スクリプトによる監視リセットコマンド)の詳細については、“Systemwalker Centric Manager リファレンスマニュアル”を参照してください。 ・ チューニングパラメタには“,”および“"”を使用することはできません。 ・ サービス名にHTTPSを指定した場合、チューニングパラメタにURLを指定することはできません。 ・ HTTP/HTTPSプロトコルにおいて、バーチャルホストに対する監視はできません。 リトライ回数について リトライ回数は監視対象サービスへの接続に失敗した場合の、再接続試行回数を表します。 そのため、接続という概念のないサービスを監視する場合はこのパラメタは無視されます。 また、受信データの読み取りに失敗した場合の再試行(リードリトライ)は行いません。 ・ リトライ回数が有効なプロトコル HTTP HTTPS SMTP FTP NNTP TELNET POP3 DOMAIN (注) ・ リトライ回数が無効なプロトコル ICMP 注) DOMAINサービスの稼働監視は、まずUDP/IPにて稼働監視を行い、次にTCP/IPにて稼働監視を行います。 UDP/IPには接続という概念はありませんのでUDP/IPでの稼働監視時にはリトライ 回数は無効となります。 TCP/IPでの稼働監視時にのみ、リトライ回数が有効となります。 クラスタ運用をしている場合 ・ 監視元ホストがクラスタの場合、運用系で監視を行う場合は二重監視の設定をOFFにしてください。 HTTPサービスの監視を行う場合 HTTPサービスの監視では、チューニングパラメタにより以下の処理を行います。 ・ URL指定でない場合(0を指定): ルートページに対してHTTP要求を行います ・ URL指定の場合: 指定されたURLのページに対しHTTP要求を行います。 この要求の結果として返されるHTTPステータスコードにより、下表のとおり判定を行います。 ステータスコード 200~299 要求成功を意味する 300~399 転送を意味する 100~199 インフォメーション 400~499 クライアントエラー 判定 稼働 停止 - 303 - ステータスコード 判定 サーバエラー 500~599 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールを導入している被監視ノードでは、指定したポートが許可されていない場合、監視が正 常に行えません。監視するポートを許可するように設定してください。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“MpNsagtMainで始まるメッセージ”を参照してください。 使用例 監視対象ホストに対し、ポート番号80で動作するHTTPサービスの稼働状態をチェックし、異常発生時、運用管理サーバ へイベント通知を行います。 編集内容 [監視間隔(分)] set ObservationInterval {60} [二重監視] set g(Dual) ON [監視対象サービス] lappend Parameters \ {hostname, HTTP, 80, 1, 1, http://hostname/test.htm, OFF} [二重化] set g(DuplicateAutoAction) OFF 7.3.7 Systemwalkerセルフチェック 機能説明 下位サーバで動作するシステム監視エージェントに対して、上位サーバから指定された監視間隔でTCP接続を行い、接 続可能かどうか監視します。接続不可の場合、運用管理サーバにイベント通知します。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmopchk.swt Solaris /etc/opt/FJSVssc/sample/snmopchk.swt Linux /etc/opt/FJSVssc/sample/snmopchk.swt HP-UX 提供なし AIX 提供なし - 304 - 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 Solaris/Linuxの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 監視間隔 監視元ホスト 被監視ホスト 監視対象ポート リトライ回数 監視時間帯 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 二重化 動作定義パート[単独定義型]の規約に従い編集します。 注意事項 ・ 運用管理サーバ、部門管理サーバのバージョンレベルは、V10.0L20または10.1以降で動作します。V10.0L10また は、10.0以前で動作させた場合、“Systemwalker Centric Manager の監視を停止しました。”のエラーとなります。 ・ Systemwalkerセルフチェックでは、運用管理サーバまたは部門管理サーバで監視を行うようにしてください。 “Systemwalkerセルフチェックの監視形態”に示す形態以外では監視できません。 - 監視元サーバと被監視サーバ/クライアントが同一の場合は、監視対象外となります。 - Systemwalkerのセルフチェックで設定する“被監視ホスト”は、Systemwalkerのセルフチェックが動作する“監視 元ホスト”において、システム監視のメッセージ送信先システムで定義されているホスト名と同じ場合は監視対象 外となります。 - Systemwalkerセルフチェックでは、上位サーバ“監視元ホスト”から下位サーバ“被監視ホスト”を監視する形態 (注1)にしてください。 下位サーバから上位サーバを監視する形態(注2)では、システム監視の[メッセージ送信先システム]で定義され ているホスト名と同一になり、正しく、監視が行われない場合があります。 注1) 運用管理サーバから業務サーバを監視 注2) 業務サーバから運用管理サーバを監視 ・ 運用管理サーバ上のシステム監視エージェントまたはイベント監視デーモン(サービス)が停止していた場合、異常が 検知されても、イベント通知は行われません。 ・ 3階層管理モデルで業務サーバを監視する部門管理サーバのシステム監視エージェントまたはイベント監視のデー モン(サービス)が停止していた場合は、業務サーバで異常が検知されても、運用管理サーバへ異常は通知されませ ん。 ・ 監視元ホストから被監視ホスト間のネットワーク経路異常の場合(ルーティングが通らない場合も含む)、被監視ホスト 上でシステム監視エージェントが正常に動作していても、異常と判断します。 ・ ノードにSystemwalkerがインストールされていない場合、システム監視エージェントが動作していないため、異常と判 断します。被監視ホストにSystemwalkerがインストールされているかどうか、事前に[Systemwalkerコンソール]から[ノー ドプロパティ]で確認してください。クライアントの場合、イベント監視はオプションであるため、インストールされていな い場合があります。 - 305 - ・ DMZ(インターネット)環境で動作する業務サーバは監視できません。 ・ 通知したイベントの自動対処は行えません。 ・ Systemwalkerインストール先ノードでRAS接続により、[メッセージ送信先システム]に接続する形態は監視できませ ん。 ・ 監視元ホストの[メッセージ送信先システム]を変更した場合は、監視元ホスト上で動作するスクリプトを再起動してく ださい。 ・ 監視元ホストのホスト名を変更した場合、スクリプトで記述している監視元ホスト名も変更してください。 ・ 本スクリプトを使用して監視を行う部門管理サーバ、または業務サーバに対し、監視の抑止が行われた場合、監視 を再開するときには、監視を行っているサーバでmpnmmonrst(ネットワーク管理スクリプトによる監視リセットコマンド) を起動する必要があります。mpnmmonrst(ネットワーク管理スクリプトによる監視リセットコマンド)の詳細については、 “Systemwalker Centric Manager リファレンスマニュアル”を参照してください。 ・ 本スクリプトの被監視ホストとネットワーク監視の被監視ホストが同じ場合、その被監視ホストがダウンしたときは、本ス クリプトで検出した異常とネットワーク監視で検出した異常の両方がイベントとして通知されます。 表7.1 Systemwalkerセルフチェックの監視形態 監視元ホスト 被監視ホスト/クライアント 全体監視 サーバ 運用管理 部門管理 業務サー 運用管理ク クライアント サーバ サーバ バ ライアント 全体監視サーバ × ○ ○ ○ ○ ○ 運用管理サーバ × × ○ ○ ○ ○ 部門管理サーバ × × × ○ ○ ○ 業務サーバ × × × × × × ○:サポート ×:未サポート クラスタ運用をしている場合 [監視元ホストがクラスタの場合] ・ 監視元ホストの設定で運用系、待機系サーバのホスト名を空白で区切って指定してください。 ・ 運用系で監視を行う場合は、二重監視の設定をOFFにしてください。 ・ 運用管理サーバ/部門管理サーバ 運用系、待機系の両方へ登録またはポリシー配付します。スクリプトはクラスタ運用を判断し、クラスタ運用のノードで 動作します。 [被監視ホストがクラスタの場合] システム監視の場合、被監視ホストの運用系および待機系の物理IPアドレスを監視対象にします。各運用系および待機 系の被監視ホストは、各[ノードプロパティ]のホスト名に合わせます。被監視対象として指定されている被監視ホストと[ノー ドプロパティ]のホスト名が異なっている場合、イベント発生時、新ノードフォルダへ新ノードとして登録され、異常ノードと みなされます。 ・ 運用管理サーバの場合 待機系の運用管理サーバを監視するよう設定した場合、待機系の運用管理サーバではシステム監視が動作してい ないため、初回の監視ではメッセージが出力されます。しかし運用には影響がありませんので、そのまま運用を継続 してください。 運用管理サーバ二重化の場合 ・ それぞれの運用管理サーバで、配下の部門管理サーバを監視します。 それぞれの運用管理サーバ(主系サーバ⇔各従系サーバ)を相互に監視することはできません。 ・ 監視元ホストの設定で主系サーバ、従系サーバのホスト名を空白で区切って指定してください。 - 306 - 全体監視の場合 Systemwalkerセルフチェックは全体監視(マルチサイト型)では未サポートです。 また、全体監視サーバではポリシー配付ができないため、swctclsh(スクリプト実行コマンド)を実行してください。 swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Manager リファレンスマニュアル”の “swctclsh(スクリプト実行コマンド)”を参照してください。 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールを導入している被監視ノードでは、指定したポートが許可されていない場合、監視が正 常に行えません。監視するポートを許可するように設定してください。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“SelfChkで始まるメッセージ”を参照してください。 使用例 部門管理サーバ(host1)から監視対象の業務サーバ(host2)に対し、システム監視エージェントが使用する9294ポートの 稼働状態をチェックし、異常発生時には、運用管理サーバへイベント通知を行います。 編集内容 [監視間隔] set g(Interval) {60} [監視元ホスト] set g(PollingHost) {host1} [被監視ホスト] set g(TargetHost) {host2} [監視対象ポート] set g(Port) {9294} [リトライ回数] set g(Retry) {2} [監視時間帯] set g(TimeRange) {00:00-23:59} [二重監視] set g(Dual) ON [二重化] set g(DuplicateAutoAction) ON 7.3.8 Webサービス稼働監視 - 307 - 機能説明 Webサービスの稼働監視では、Webサービスを構成するSOAPサーバが停止していないか、または、Webサービスへ SOAPメッセージを送信して応答があるかどうかを監視し、停止していた場合、運用管理サーバへイベントを通知します。 なお、SOAPサーバが停止していないかどうか(SOAPサーバの稼働監視)は、“サービス稼働監視”のHTTPサービスの監 視でSOAPサーバへのURLを指定することで行うことができます。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmwschk.swt Solaris /etc/opt/FJSVssc/sample/snmwschk.swt Linux /etc/opt/FJSVssc/sample/snmwschk.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 UNIXの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 監視間隔 監視元ホスト 監視時間帯 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 動作定義パート[単独定義型]の規約に従い編集します。 被監視サーバ情報 動作定義パート[単独定義型]の規約に従い編集します。 項目は以下のとおりです。 ・ 被監視ホスト ・ 被監視ホストのポート番号 ・ リクエストファイル ・ レスポンス時間 ・ リトライ回数 ・ イベント対処フラグ 二重化 動作定義パート[単独定義型]の規約に従い編集します。 - 308 - 注意事項 ・ 本スクリプトによる監視は、運用管理サーバ、部門管理サーバ、および、業務サーバにて可能であり、バージョンレベ ルはV10.0L20または10.1以降で動作します。V10.0L10または10.0以前で動作させた場合、以下のエラーメッセージ が表示されます。 MpNmsWS: ERROR: 2005: コマンドが見つかりません。 コマンド名:%1 監視元:%2 ・ 監視元ホストから被監視ホスト間のネットワーク経路異常の場合(ルーティングが通らない場合も含む)やWebサービ スアクセス時に利用するWebサーバが停止していた場合、被監視サーバ上で動作するWebサービスがダウンしてい ない場合でも、異常と判断します。 ・ Interstage V5.0L10/5.0上のWebサービスに対するSOAPメッセージのリクエストファイルは、WebサービスをWSDLに 変換後、mpnmwcrtコマンドで作成することができます。WebサービスをWSDLに変換する場合、Interstage Apworks V5.0L10/5.0 が 必 要 と な り ま す 。 ま た 、 mpnmwcrt(SOAP リ ク エ ス ト フ ァ イ ル 作 成 コ マ ン ド ) の 詳 細 に つ い て は、 “Systemwalker Centric Managerリファレンスマニュアル”を参照してください。 ・ 運用管理サーバ以外から監視を行う場合、リクエストファイルを事前に監視元ホスト上の指定ディレクトリへ格納して ください。 ・ 監視対象ホストに上位サーバを指定することはできません。 クラスタ運用をしている場合 ・ 監視元ホストがクラスタの場合、運用系で監視を行う場合は二重監視の設定をOFFにしてください。 運用管理サーバ二重化の場合 ・ 監視元ホストの設定で主系サーバ、従系サーバのホスト名を空白で区切って指定してください。 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールを導入している被監視ノードでは、指定したポートが許可されていない場合、監視が正 常に行えません。監視するポートを許可するように設定してください。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“MpNmsWsで始まるメッセージ”を参照してください。 使用例 業務サーバ(host1)から監視対象のホスト(host2)で動作するWebサービス(service1)に対し、稼働状態をチェックし、異常 発生時には、運用管理サーバへイベント通知を行います。被監視サーバ情報のリクエストファイルの内容は監視するWeb サービスで異なります。“リクエストファイル例”に示すような内容のリクエストファイルを事前に用意します。リクエストファイ ルは、mpnmwcrtコマンドを使用して作成できます。mpnmwcrt(SOAPリクエストファイル作成コマンド)の詳細については、 “Systemwalker Centric Manager リファレンスマニュアル”を参照してください。 編集内容 [監視間隔(分) ] set g(Interval) {60} [監視元ホスト] set g(PollingHost) {host1} [監視時間帯] set g(TimeRange) {00:00-23:59} [二重監視] - 309 - set g(Dual) ON [被監視サーバ情報] lappend pr(1) host2 80 "c:\\httpreq.txt" 3 30 ON [二重化] set g(DuplicateAutoAction) OFF リクエストファイル例 POST /soap/servlet/rpcrouter HTTP/1.0 Content-Type: text/xml Content-Length: 423 SOAPAction: "" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:add xmlns:ns1="urn:testservice" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <num1 xsi:type="xsd:int">13</num1> <num2 xsi:type="xsd:int">4</num2> </ns1:add> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 7.3.9 IPv6インタフェースの稼働監視 機能説明 被監視ノード、またはネットワーク機器のIPv6インタフェースに対し、一定間隔でPINGを行い、監視対象のIPv6インタ フェースがダウンしていた場合、運用管理サーバ、または部門管理サーバへトラップを通知します。 - 310 - 図7.1 IPv6インタフェースの稼働監視の運用例 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\snmipchk.swt Solaris /etc/opt/FJSVssc/sample/snmipchk.swt Linux /etc/opt/FJSVssc/sample/snmipchk.swt HP-UX 提供なし AIX 提供なし 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 Solaris/Linuxの場合、root権限が必要です。 編集可能な項目 編集可能な項目を以下に示します。各項目の詳細については、格納されているサンプルスクリプトを参照してください。 監視間隔 監視元ホスト 監視時間帯 動作定義パート[単独定義型]の規約に従い編集します。 二重監視 動作定義パート[単独定義型]の規約に従い編集します。 被監視サーバ情報 - 311 - 動作定義パート[単独定義型]の規約に従い編集します。 項目は以下のとおりです。 ・ 被監視ホストのIPv4インタフェース ・ 被監視ホストのIPv6インタフェース ・ レスポンス時間 ・ リトライ回数 ・ トラップ通知先ホスト 注意事項 ・ 本スクリプトによる監視は、運用管理サーバ、および、部門管理サーバにて可能であり、バージョンレベルはV10.0L20 または10.1以降で動作します。V10.0L10または10.0以前で動作させた場合、以下のエラーメッセージが表示されま す。 MpNmsIP6: ERROR: 2005: コマンドが見つかりません。 コマンド名:%1 監視元:%2 ・ 監視対象とするIPv6インタフェースは、監視対象ノード上でifconfigなどにより、監視対象インタフェースを参照し、指 定してください。 ・ Solaris 9以降でIPv6インタフェースを追加する場合、以下の方法で追加することができます。 a. Solarisインストール時 Solarisインストール時にIPv6設定でIPv6を使用するように設定してください。 b. Solarisインストール後 IPv6対応するインタフェースをifconfigで参照し、空ファイルを生成し、リブートします。 例) hme0のインタフェースをIPv6対応する場合 # touch /etc/hostname6.hme0 # /usr/sbin/shutdown -y -i6 -g0 ・ 下記のWindows OSでIPv6インタフェースを追加する場合、以下の方法で追加することができます。 対象のWindows OS: - Windows Server 2008 STD/Windows Server 2008 DTC/Windows Server 2008 EE/Windows Server 2008 for Itanium-Based Systems/Windows Server 2008 Foundation/Windows Server 2008 R2 手順: a. コントロールパネルから「ネットワーク接続」-「ローカルエリア接続」を選択し、「ローカルエリア接続の状態」ダイ アログボックスを表示します。 b. 「プロパティ」ボタンをクリックし、「ローカルエリア接続のプロパティ」ダイアログボックスを表示します。 c. 「インストール」ボタンをクリックし、「ネットワークコンポーネントの種類の選択」ダイアログボックスを表示します。 d. リストボックスから「プロトコル」を選択し、「追加」ボタンをクリックして、「ネットワークプロトコルの選択」ダイアログ ボックスを表示します。 e. リストボックスから「Microsoft TCP/IP version 6」を選択し、「OK」ボタンをクリックします。 f. 「閉じる」ボタンをクリックします。 ・ IPv6インタフェース稼働監視は、IPv6スタックが搭載されていない場合、IPv6インタフェースの稼働監視を行うことが できないため、警告メッセージを運用管理サーバへ通知し、監視は行いません。 ・ 監視元ホストから被監視ホスト間のネットワーク経路異常の場合(ルーティングが通らない場合も含む)、被監視ホスト 上でIPv6インタフェースがダウンしていない場合でも、異常と判断します。 ・ 通知したイベントの自動対処は行いません。 - 312 - ・ 被監視ホスト(IPv4インタフェース/IPv6インタフェース)、トラップ通知先ホストに不当なIPアドレスまたはホスト名が設 定された場合、スクリプト実行端末のコンソールに、“sw_SnmSendTrap: xxxxxxxxxx”のエラーメッセージが表示さ れ、運用管理サーバに“コマンドの起動に失敗しました。”のイベントが通知されます。 また、スクリプトを自動起動に設定した場合は、以下のファイルにエラーが出力されます。 【Windows版】 Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\log\at_実行名0.log Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\log\at_実行名1.log 【UNIX版】 /var/opt/FJSVssc/log/at_実行名0.log /var/opt/FJSVssc/log/at_実行名1.log 被監視ホスト、トラップ通知先ホストの指定で以下の問題がないか確認してください。 - IPv4インタフェースを設定するところにIPv6インタフェースが設定されていないか - 被監視ホストのIPv4インタフェースのノードが[Systemwalkerコンソール]に存在しているか - 被監視ホストのIPv4インタフェース、トラップ通知先ホストがhostsまたはDNSに登録されているか ・ 運用管理サーバがV13.2.0以前、部門管理サーバ/業務サーバがWindows Server 2008以降の環境の場合 部門管理サーバ/業務サーバで稼働監視を動作させるには、部門管理サーバ/業務サーバに格納されているスクリ プトを運用管理サーバにコピーしてください。 クラスタ運用をしている場合 ・ 監視元ホストがクラスタの場合、運用系で監視を行う場合は二重監視の設定をOFFにしてください。 運用管理サーバ二重化の場合 ・ 監視元ホストの設定で主系サーバ、従系サーバのホスト名を空白で区切って指定してください。 パーソナルファイアウォール導入ノードの監視について ・ パーソナルファイアウォールの導入によりICMP応答を抑止している被監視ノードでは、本機能による監視が行えま せん。監視対象とする場合、ICMPに応答するように設定してください。 連携型二重化の場合 ・ 二重化の設定がONの場合とOFFの場合で、出力されるメッセージが異なります。詳細については“Systemwalker Centric Manager メッセージ説明書”の“MpNmsIP6で始まるメッセージ”を参照してください。 使用例 部門管理サーバ(host1)から被監視ホスト(host2)のIPv6インタフェース(fe80::260:97ff:fe02:6ea5)に対し、稼働状態をチェッ クし、異常発生時には、運用管理サーバ(host3)へイベント通知を行います。 編集内容 [監視間隔(分) ] set g(Interval) {60} [監視元ホスト] set g(PollingHost) {host1} [監視時間帯] set g(TimeRange) {00:00-23:59} - 313 - [二重監視] set g(Dual) ON [被監視サーバ情報] lappend pr(1) host2 fe80::260:97ff:fe02:6ea5 10 3 host3 [二重化] set g(DuplicateAutoAction) OFF 7.3.10 ライブラリ型スクリプト動作テスト 機能説明 ライブラリ型スクリプトを単体で実行し、動作に問題がないかを確認します。処理中に文法エラー等がある場合、標準エ ラー出力にエラーメッセージを表示します。 また以下の項目について自動的にチェックを行います。 ・ ファイルのオープン/クローズの整合性 ・ exitコマンドの実行の有無 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scLibProcChk.swt Solaris /etc/opt/FJSVssc/sample/scLibProcChk.swt Linux /etc/opt/FJSVssc/sample/scLibProcChk.swt HP-UX 提供なし AIX 提供なし 編集可能な項目 テスト対象スクリプトの呼び出し 結果確認表示の処理 可変情報操作処理の規約に従い編集します。 注意事項 ・ 本スクリプトを実行するには、Systemwalker Centric Managerのサービスが起動中である必要があります。 使用例 引数で指定された2つの文字列“string1”、“string2”の中からキーワード"device="の後ろにある文字列(空白の直前まで) を検出し、それらが等しいか判定するプロシジャを設定したスクリプトの動作確認をします。 プロシジャ名 : UsrCompareDeviceName 戻り値 : 1(一致)または0(不一致) 編集内容 テスト対象スクリプトの呼び出し 結果確認表示の処理 - 314 - set ret [UsrCompareDeviceName $msg1 $msg2] puts $ret テスト結果 正常時には以下の情報が標準出力に出力されます。 結果確認表示 表示内容は可変情報操作処理に記述した結果確認表示処理の内容に依存します。 処理時間 テスト対象プロシジャの開始から終了まで処理時間がミリ秒単位で表示されます。 また、テスト対象スクリプトの処理で問題を検知したり文法エラーがあった場合は、その内容が標準エラー出力に出力さ れます。 出力例 使用例の場合 0 Processing time is 30 (milliseconds). 使用例の設定でmsg2の設定を“set msg2 "Warning: device=HD1"”とした場合 1 Processing time is 30 (milliseconds). 使用例の設定でテスト対象の処理にトレース(ファイル名:usrlog)のクローズ洩れがあった場合 0 Non-closed trace file was found. The filename is usrlog Processing time is 30 (milliseconds). テスト対象の処理でexit文が実行された場合 The exit command was executed 7.3.11 自動返答 機能説明 Open ReplyMessageサービス機能を利用しているアプリケーションからの返答要求メッセージに対して、自動的に返答を します。 また、このスクリプトは、返答要求メッセージの発生元システムで、[イベント定義/アクション定義]の[アクション定義(詳細)][アプリケーション起動]タブに設定して使用します。 サンプルスクリプトファイル 格納場所とファイル名 OS種別 Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\sample\scAutoResp.swt Solaris /etc/opt/FJSVssc/sample/scAutoResp.swt Linux /etc/opt/FJSVssc/sample/scAutoResp.swt HP-UX 提供なし AIX 提供なし - 315 - 実行に必要な権限 Windowsの場合、Administrator権限が必要です。 Solaris/Linuxの場合、root権限が必要です。 編集可能な項目 返答文字列 可変情報操作処理の規約に従い編集します。 以下のイベント情報が参照できます。 ・ イベント発生日時(格納形式:YYYY/MM/DD hh:mm:ss) ・ ノード名(イベントが発生したホスト名) ・ イベントテキスト 起動時の引数 記述形式 swctclsh -errmsg execname|scriptfile hostname date msg オプション -errmsg スクリプト起動時のエラーメッセージをSystemwalkerコンソールへ出力します。このオプションを指定しなかった場合、 スクリプト起動時のエラーは通知されません。 execname|scriptfile 実行する単体起動スクリプトを指定します。 登録済みスクリプトの実行名、または、フルパスのスクリプトファイル名を指定します。 hostname メッセージが発生したホスト名を指定します。 アプリケーション起動のパラメタ設定では、%HOSTを指定します。 date メッセージが発生した日時を指定します。 アプリケーション起動のパラメタ設定では、%DATEを指定します。 msg 発生したメッセージを指定します。 アプリケーション起動のパラメタ設定では、%MSGを設定します。 注意事項 ・ スクリプトを実行名で指定する場合は、事前に「スクリプトの登録」を行ってください。 ・ Systemwalkerのバージョンレベルは、V12.0L10または12.0以降で動作します。V11.0L10または11.0以前では動作し ません。 ・ 自動返答スクリプト内のエラーは、[Systemwalkerコンソール]に出力されます。 ・ 本スクリプトは、自動返答の対象となる返答要求メッセージに対し、その発生元システムでのみ実行される様に定義 する必要があります。そのため、スクリプトを起動する[イベント定義/アクション定義]の[イベント定義(詳細)]において は、以下の項目を設定し、自動応答するメッセージを特定してください。 - [ホスト名の特定] : 自システムを選択する - [メッセージタイプの特定] : 返答要求メッセージを選択する - [メッセージテキストの特定] : メッセージテキストを設定する - 316 - 使用例 Open ReplyMessageサービスを利用しているユーザ作成のプログラムからの返答要求メッセージには、事前に返答内容 が把握できているメッセージがあります。 返答要求メッセージ例: " 00714 JOB021: 処理Aが完了しました。処理Bを開始しますか。" 返答メッセージ: "OK" このような場合に、オペレータの返答操作なしに自動的に返答メッセージを送信するようにします。 編集内容 [返答文字列] set OutStrings "OK" アクション定義/アプリケーション起動の設定 返答要求メッセージを[イベント監視の条件定義]に設定し、その[アプリケーション起動]に下記の設定をします。 [アプリケーション詳細] ・ 【Windows版】 [起動ファイル]:swctclsh [パラメタ]:UsrAutoOKReply.swt %HOST %DATE %MSG(注) 注) UsrAutoOKReply.swtは、スクリプトの登録した実行名です。 ・ 【UNIX版】 [起動ファイル]:/usr/bin/swctclsh [パラメタ]:UsrAutoOKReply.swt %HOST %DATE %MSG(注) 注) UsrAutoOKReply.swtは、スクリプトの登録した実行名です。 - 317 - 第8章 スクリプトの導入と削除 スクリプトの導入と削除の手順と各操作方法について説明します。 ・ 導入手順 ・ 削除手順 ・ ユーザスクリプトの格納 ・ スクリプトの登録と削除 ・ 動作確認テスト ・ アクション定義 ・ ポリシーの設定 ・ ポリシー配付 ・ 登録済みスクリプトの変更手順 ・ クラスタ運用している場合の注意事項 8.1 導入手順 新規にユーザスクリプトの登録をする場合の導入手順を説明します。 登録済みスクリプトの変更をした場合の導入手順については、“登録済みスクリプトの変更手順”を参照してください。 ・作成 運用管理サーバ上でユーザスクリプトを作成します。 詳細については“スクリプトの文法”と“サンプルスクリプトのカスタマイズ”を参照してください。 ・ユーザスクリプトの格納 登録を行うユーザスクリプトをスクリプト登録ディレクトリ配下に格納します。 ・スクリプトの登録 単体起動型スクリプトの登録は任意です。登録しない場合はスクリプト登録ディレクトリ配下へ 格納する必要もありませんが、そのスクリプトは自動起動、ポリシー配付とも行えません。 設定方法は“スクリプトの登録と削除”を参照してください。 ・動作確認テスト 作成したスクリプトを運用管理サーバ上で実行し、動作の確認をします。 ・アクション定義 アクション定義を行うのは、以下の場合です。 ・メッセージ監視アクション型スクリプトを利用する ・イベントの発生を契機に単体起動型スクリプトを起動させる - 318 - ・ポリシーの設定 配付先で自動起動させる単体起動型スクリプトの設定をします。 ・ポリシー配付 登録したスクリプトとポリシー設定を配付します。 8.2 削除手順 登録済みのスクリプトを削除する手順を説明します。 ・スクリプトの登録削除 設定方法は“スクリプトの登録と削除”を参照してください。 ・ポリシーの設定 [ポリシー設定]画面を表示して、[OK]ボタンをクリックします。 ・ポリシー配付 登録したスクリプトとポリシー設定を配付します。 運用管理サーバのスクリプト登録ディレクトリ配下にあるスクリプトファイルが不要になった場合は、通常のファイル操作で 削除します。 8.3 ユーザスクリプトの格納 登録を行うユーザスクリプトは、スクリプト登録ディレクトリ(配下の任意のサブディレクトリを含む)に格納します。 スクリプトファイルは、スクリプト登録ディレクトリからの相対パス名が160バイト以内になるようにしてください。 文字コードは運用管理サーバと同じにします。Windowsの場合、文字コードはSJISコードにしてください。 また、スクリプトのファイル名や格納ディレクトリ名にマルチバイト文字(日本語、全角文字)、および下記の特殊記号(す べて半角文字)を使用しないでください。 =[]$:,;*?"<>|/\ スクリプト登録ディレクトリのサブディレクトリ@SwReserveは、Systemwalkerで予約されているため、ユーザスクリプトをここ に置いて登録することはできません。 スクリプト登録ディレクトリは以下のとおりです。 【Windows版】 Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\script\scpol ただし、クラスタ運用している運用管理サーバの場合は、Systemwalkerで利用する共有ディスク上の同名ディレクトリにな ります。 【UNIX版】 - 319 - /var/opt/FJSVssc/script/scpol 8.4 スクリプトの登録と削除 [Systemwalkerコンソール]の[監視ポリシー[ポリシーグループの登録]](カスタムモード)で、起動する[スクリプト(動作設 定)]のダイアログボックスから、Systemwalkerスクリプトに対する以下の設定が行えます。 ・ スクリプトの登録 ・ スクリプトの登録削除 ・ 登録済みスクリプトの一覧参照 ・ 単体起動型スクリプトの自動起動設定 [スクリプト(動作設定)]のダイアログボックスで登録されたスクリプトは、スクリプトのポリシーを配付したホスト上で使用できます。 単体起動型スクリプトの登録は任意です。登録しない場合はスクリプト登録ディレクトリ配下へ格納する必要もありません が、そのスクリプトは自動起動、ポリシー配付とも行えません。 [スクリプト(動作設定)]のダイアログボックスの起動 1. [Systemwalkerコンソール]の[ポリシー]メニューから[監視]-[監視ポリシー]を選択します。 →[監視ポリシー[管理]]画面が表示されます。 2. [オプション]メニューの[カスタムモード表示]を選択します。 3. 監視ポリシーの作成方法によって、以下のボタンのどれかをクリックします。 - [新規作成]ボタン : ポリシーを新規に作成する。 - [更新]ボタン : ポリシーを更新する。 - [複写]ボタン : 既存のポリシーを複写して作成する。 4. [監視ポリシー[ポリシーグループの登録](カスタムモード)]ダイアログボックスで、[設定]タブをクリックします。 5. [スクリプト]-[動作設定]のポリシー名のコンボボックスの右側にある新規作成のアイコンをクリックします。[監視ポリ シー[ポリシーの作成]]ダイアログボックスが表示されます。 6. [監視ポリシー[ポリシーの作成]]ダイアログボックスで、監視ポリシーの作成方法によって、[新規作成]、または、[既 存のポリシーを複写して作成]を選択します。 - 320 - 7. [OK]ボタンをクリックします。 登録済みスクリプトの一覧参照 [スクリプト(動作設定)]のダイアログボックスの[登録スクリプト一覧]に、画面起動時点でサーバ上に登録されているスクリ プトの情報が表示されています。 本ダイアログボックスでの登録スクリプトの追加・削除の操作に応じてリストの内容も更新されます。 [ファイル名]: スクリプトの[ファイル名]がスクリプト登録ディレクトリからの相対パスで表示されます。 [登録形態]: スクリプトの[登録形態]が以下のキーワードで表示されます。 [ACTION]: メッセージ監視アクション型 [EXEC]: 単体起動型 [LIB]: ライブラリ型 [<invalid>]: 登録情報と実際のスクリプトファイルの不整合 スクリプトの登録をしたあとに該当するスクリプトファイルを運用管理サーバ上のスクリプト登録ディレクトリから削除 した場合など、登録情報と実際のスクリプトファイルとの間で不整合を検知すると表示されます。 [<invalid>]がある状態では、[スクリプト(動作設定)]ダイアログボックスの定義は、保存できません。不要な定義を 削除するか、必要なスクリプトファイルをスクリプト登録ディレクトリに復元してください。 [実行名]: スクリプトが単体起動型の場合だけ[実行名]が表示されます。 [自動起動] : [スクリプト(動作設定)]ダイアログボックスの場合に表示されます。 自動起動対象とするかどうかの設定値。自動起動対象の場合“ON”、対象外の場合“OFF”が表示されます。 - 321 - ポイント [実行名] [実行名]とは単体起動型スクリプトの登録時につける任意の名前です。swctclshコマンドでのスクリプトの指定に[実行名] を利用することでファイルのパスを意識することなくスクリプトを起動することが可能になります。swctclsh(スクリプト実行コ マンド)の詳細については、“Systemwalker Centric Managerリファレンスマニュアル”を参照してください。なお、登録済み のメッセージ監視アクション型およびライブラリ型のスクリプトは、スクリプト内に定義したプロシジャ名で呼び出すため、 [実行名]はありません。 スクリプトの登録 登録できるスクリプトは、最大1000個です。設定方法を以下に示します。 1. [スクリプト(動作設定)]のダイアログボックスの[追加]ボタンをクリックし、[スクリプト追加]のダイアログボックスを起動 します。 2. 以下の項目を設定し、[OK]ボタンをクリックします。 [ファイルの場所] スクリプト登録ディレクトリをルートとしたSystemwalkerスクリプトファイルが表示されます。ここに表示されるファイル・ ディレクトリは、以下の条件を満たすものです。 - ファイルの拡張子が“.swt”(大小文字区別なし)。 - スクリプトの1行目の先頭に規定の登録形態キーワード(#EXEC,#ACTION,#LIBのどれか)が記述されている。 - ファイルにアクセス権がある。 - 予約ディレクトリ(@SwReserve)でない。 - スクリプト登録ディレクトリからの相対パス名が160バイト以内。 - ファイル名またはディレクトリ名に下記の特殊記号(すべて半角文字)が含まれていない。 = [ ] $ : , ; * ? " < > | / \ 追加するSystemwalkerスクリプトファイルを選択します。ファイルは複数選択ができます。 →[ファイル名]に選択された[ファイル名]が表示されます。 - 322 - [実行名] 単体起動型スクリプト登録時の[実行名]を63バイト以内で指定します。[ファイルの場所]で選択されたファイルが単 体起動型スクリプト1個の場合だけ、その[ファイル名]が表示され操作可能になります。選択状態がそれ以外の場 合は操作できません。 [実行名]には下記の特殊記号(すべて半角文字)は使用できません。また、マルチバイト文字(日本語、全角文字) は使用しないでください。 = [ ] $ : , ; * ? " < > | / \ “Rsv”で始まる実行名は、Systemwalkerで予約されているため使用できません。 単体起動型スクリプトが複数選択されている場合などは、実行名入力域は操作不可となります。このような場合、 追加される単体起動型スクリプトには[ファイル名]と同じ名前が[実行名]として自動的に設定されます。 3. [スクリプト(動作設定)]のダイアログボックスの[OK]ボタンをクリックします。 スクリプトの登録削除 スクリプトの登録削除の方法を以下に示します。 1. [スクリプト(動作設定)]のダイアログボックスの[登録スクリプト一覧]から削除するファイルを選択します。ファイルは 複数選択ができます。 2. [削除]ボタンをクリックすると、削除確認のダイアログボックスが表示されます。 削除確認のダイアログボックスで[OK]ボタンをクリックします。 運用管理サーバに対する即時適用 1. [監視ポリシー[管理]]ダイアログボックスの[設定対象]-[ポリシーグループ]から対象となるポリシーグループ名を選 択します。 2. [操作]メニューから[配付]を選択し、ポリシーを配付します。 詳細については、“ポリシー配付”を参照してください。 8.5 動作確認テスト 作成したユーザスクリプトを運用管理サーバ上で実行し、動作確認をする方法について、スクリプトの型別に説明します。 8.5.1 メッセージ監視アクション型スクリプトおよびライブラリ型スクリプトの動 作確認テスト 動作テスト 動作確認のテストスクリプトを作成、実行し確認します。手順を以下に示します。 1. テストスクリプト(scProcChk.swt) をswctclshコマンドで直接実行し、登録が正しく行われたかを確認します。 【Windows版】 swctclsh Systemwalkerインストールディレクトリ\MPWALKER.DM\mpsc\sample\scProcChk.swt 【UNIX版】 swctclsh /etc/opt/FJSVssc/sample/scProcChk.swt 登録済みのメッセージ監視アクション型スクリプトまたは、ライブラリ型スクリプトで、正常に登録されているもののプ ロシジャ名が標準出力に表示されます。動作定義にエラーがある場合は、標準エラー出力にメッセージが表示さ れるため、その内容に従って原因を取り除きます。 エラーメッセージの出力形式 - 323 - <1行目> <2行目> <3行目> <4行目> 力されます。 <5行目> どのような文法エラーになったかを知らせるメッセージが出力されます。 while executing "文法エラーになった行のテキスト"が出力されます。 (file "文法エラーになったスクリプトファイル名" line <文法エラーになった箇所の行番号>)が出 invoked from within 2. 以下のサンプルスクリプトをカスタマイズし、動作確認スクリプトを作成します。 - メッセージ監視アクション型スクリプトの動作確認の場合 メッセージ監視アクション型スクリプト動作テスト - ライブラリ型スクリプトの動作確認の場合 ライブラリ型スクリプト動作テスト 3. 作成した動作確認スクリプトをswctclshコマンドで直接実行します。 swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Managerリファレンスマニュアル”を参 照してください。 動作テストの結果、正常な場合は情報が標準出力に出力され、テスト対象スクリプトの処理で問題を検知したり文法エ ラーがあった場合は、その内容が標準エラー出力に出力されます。テスト結果の詳細については、“メッセージ監視アク ション型スクリプト動作テスト”および“ライブラリ型スクリプト動作テスト”の“テスト結果”を参照してください。 注意 メッセージ監視アクション型およびライブラリ型スクリプトのテストは、Systemwalkerのサービス(デーモン)が動作している システム上で行います。その場合のテストスクリプトの実行は、システム管理者権限で行います。ただし、テストスクリプト は実際のコリレーション情報などに影響を及ぼすため、実運用中のシステムでテストは行わないでください。 タイムアウト値のカスタマイズ メッセージ監視アクション型スクリプト動作テストでスクリプトの処理時間が100ミリ秒以下であっても、システムの一時的な 過負荷によって、スクリプトの処理に時間がかかり、下記のメッセージが出力されることがあります。スクリプトのタイムアウ ト値をカスタマイズすることで、メッセージが発生しないようにすることができます。 スクリプトのタイムアウト値をカスタマイズするために編集するファイルと、カスタマイズ方法は以下のとおりです。 編集するファイル ファイル名 OS UNIX /var/opt/FJSVssc/etc/scconfl.ini Windows Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\etc\scconfl.ini カスタマイズ方法1 【出力されるメッセージ】 MpScsv: エラー: 1054: 実行タイムアウトが発生したため、メッセージ監視アクションスクリプト(プロシジャ名= %1)の処理を中断しました。 %1: タイムアウトが発生したプロシジャ名 MpScsv: 警告: 1061: メッセージ監視アクションスクリプト(プロシジャ名=%1)の処理時間が規定値を超えました。処 理は続行されます。 %1: 実行時間が規定値を超えたプロシジャ名 【編集する項目】 スクリプトの実行タイムアウト時間の規定値(SyncTimeoutSec)を増やしてください。 - 324 - スクリプトの実行タイムアウト時間とは、Systemwalkerのメッセージと同期しているスクリプト処理の時間です。この間 Systemwalkerのメッセージ出力は待たされます。 初期値は3(秒)で、60(秒)までの値を指定することができます。 編集例) SyncTimeoutSec=4 カスタマイズ方法2 【出力されるメッセージ】 MpScsv: エラー: 1067: 先に実行されたメッセージ監視アクションスクリプトが終了していないため、スクリプト(プ ロシジャ名=%1)を実行できませんでした。 %1: 実行できなかったプロシジャ名 【編集する項目】 スクリプトの終了タイムアウト時間(TermTimeoutSec)を増やしてください。 スクリプトの終了タイムアウト時間とは、Systemwalkerのメッセージと同期していないスクリプト処理の時間です。この間 Systemwalkerのメッセージ出力が待たされることはありません。 初期値は180(秒)で、1800(秒)までの値を指定することができます。 編集例) TermTimeoutSec=190 8.5.2 単体起動型スクリプトの動作確認テスト トレースを出力する 作成したユーザスクリプトを運用管理サーバ上で直接実行し、正常に動作することを確認します。その際に詳細なトレー スを採取し、ルートチェックやスクリプト内で保持する情報が正しいことを確認します。 1. トレースを採取するため、スクリプト内に以下のトレース拡張コマンドを記述します。これによりスクリプトのデバッグ を可能にします。 - sw_TcOpenTrace(トレースファイルをオープンする) - sw_TcWriteTrace(トレース情報の出力をする) - sw_TcCloseTrace(トレースファイルをクローズする) 組み込み例を“デバッグで使用するコマンドの組み込み例”に示します。 2. 作成したユーザスクリプトをswctclshコマンドで直接実行します。 swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Managerリファレンスマニュアル”を参照して ください。 デバッグで使用するコマンドの組み込み例 例) 引数で渡されたファイルを読み込むスクリプト 【Windows版】 スクリプトファイル LV # トレースオープン # 実運用時は “level 2” を削除のこと set Trchwnd [sw_TcOpenTrace -level 2 {C:\var\log\G001}] if {$Trchwnd < 0} { puts stderr "Trace open err" exit 1 } - 325 - 出力内容 スクリプトファイル LV # 起動ログ出力 sw_TcWriteTrace $Trchwnd "業務001 START" # ファイル名取得 set filename [lindex $argv 0] sw_TcWriteTrace -level 2 $Trchwnd "Input file name: $filename" # 動作制御ファイルオープン if {[catch { set cid [open $filename r] }]} { # open のエラーをキャッチした場合 # エラーログ出力 sw_TcWriteTrace $Trchwnd "File open err (filename :$filename)" sw_TcCloseTrace $Trchwnd exit 1 } sw_TcWriteTrace -level 2 $Trchwnd "File opened " # ファイル読み込み set rc [gets $cid buf] if {$rc == -1} { # ファイルが空のため読み込みバッファに初期値を設定する sw_TcWriteTrace -level 2 $Trchwnd "File empty" set buf 100 } sw_TcWriteTrace -level 2 $Trchwnd "Gets data: $buf" close $cid ・・ # 終了ログ出力 sw_TcWriteTrace $Trchwnd "業務001 END" sw_TcCloseTrace $Trchwnd 出力内容 1 動作ログ 2 スクリプト内情報 (ルートチェック) 1 エラーログ 2 ルートチェック 2 ルートチェック 2 スクリプト内情報 (ルートチェック) 1 動作ログ 注意 LVの欄は、トレースレベルを表します。 トレースレベルの省略値は1のため、1の場合はコマンド内での指定を省略しています。 【UNIX版】 スクリプトファイル LV # トレースオープン # 実運用時は “level 2” を削除のこと set Trchwnd [sw_TcOpenTrace -level 2 "/var/log/G001"] if {$Trchwnd < 0} { puts stderr "Trace open err" exit 1 } # 起動ログ出力 sw_TcWriteTrace $Trchwnd "業務001 START" # ファイル名取得 set filename [lindex $argv 0] sw_TcWriteTrace -level 2 $Trchwnd "Input file name: $filename" # 動作制御ファイルオープン if {[catch { set cid [open $filename r] }]} { # open のエラーをキャッチした場合 # エラーログ出力 sw_TcWriteTrace $Trchwnd "File open err (filename :$filename)" sw_TcCloseTrace $Trchwnd - 326 - 出力内容 1 動作ログ 2 スクリプト内情報 (ルートチェック) 1 エラーログ スクリプトファイル LV exit 1 } sw_TcWriteTrace -level 2 $Trchwnd "File opened " # ファイル読み込み set rc [gets $cid buf] if {$rc == -1} { # ファイルが空のため読み込みバッファに初期値を設定する sw_TcWriteTrace -level 2 $Trchwnd "File empty" set buf 100 } sw_TcWriteTrace -level 2 $Trchwnd "Gets data: $buf" close $cid ・・ # 終了ログ出力 sw_TcWriteTrace $Trchwnd "業務001 END" sw_TcCloseTrace $Trchwnd 出力内容 2 ルートチェック 2 ルートチェック 2 スクリプト内情報 (ルートチェック) 1 動作ログ 注意 LVの欄は、トレースレベルを表します。 トレースレベルの省略値は1のため、1の場合はコマンド内での指定を省略しています。 トレースレベルの変更を可能にする トレースレベルの指定は、Systemwalkerスクリプト内に記述するトレース拡張コマンドのオプションで行います。Systemwalker Centric Managerでの運用中にトレースレベルの変更が必要になった場合、スクリプト内を直接修正するのは困難なた め、以下に示すような方法により、スクリプトを変更せずにトレースレベルを変更可能にしておくことができます。 トレースレベルの変更の例 ・ スクリプトの引数による指定 スクリプト起動時の引数によりトレースレベルを受け渡します。 例) 第1引数がトレースレベルを表す場合 【Windows版】 # 第1引数からトレースレベル取得 set trclevel [lindex $argv 0] # 指定値チェックif {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel {c:\var\log\G001.trc}] … sw_TcCloseTrace $Trchwnd exit 0 【UNIX版】 # 第1引数からトレースレベル取得 set trclevel [lindex $argv 0] # 指定値チェックif {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 - 327 - } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel /var/log/G001.trc] … sw_TcCloseTrace $Trchwnd exit 0 ・ 外部ファイルによる指定 トレースレベルを記述したファイルからトレースレベルを読み込むようにします。 【Windows版】 例) トレースレベル定義ファイル“c:\home\etc\trclevel”にレベルが記述されている場合 # トレースレベル記述ファイルのオープン,読み込み,クローズ if {[catch { set cid [open {c:\home\etc\trclevel} r] gets $cid trclevel close $cid }]} { # トレースレベル記述ファイルのエラー puts stderr "Can not read {c:\home\etc\trclevel}" exit 1 } # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 }# トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel {c:\var\log\G001.trc}] … sw_TcCloseTrace $Trchwnd exit 0 【UNIX版】 例) トレースレベル定義ファイル“/home/etc/trclevel”にレベルが記述されている場合 # トレースレベル記述ファイルのオープン,読み込み,クローズ if {[catch { set cid [open /home/etc/trclevel r] gets $cid trclevel close $cid }]} { # トレースレベル記述ファイルのエラー puts stderr "Can not read /home/etc/trclevel" exit 1 } # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 }# トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel /var/log/G001.trc] … sw_TcCloseTrace $Trchwnd exit 0 - 328 - 8.6 アクション定義 イベントの発生を契機に単体起動型スクリプトを起動させたり、メッセージ監視アクション型スクリプトを利用したりする運 用の場合、アクションの定義を行います。 [イベント監視の条件定義]ウィンドウで処理対象となるイベントを特定し、そのイベントに対して実行するスクリプトを定義 します。 手順を以下に説明しますが、アクションを定義する詳細については“Systemwalker Centric Manager 使用手引書 監視機 能編”を参照してください。 1. [イベント監視の条件定義]ウィンドウで監視対象とするイベントを設定します。 2. 設定したイベントに対するアクション定義として[イベント定義/アクション定義]ダイアログボックスで以下のように設 定します。 - メッセージ監視アクション型スクリプトの場合 a. [メッセージ監視アクション]タブ内にある[詳細設定]ボタンをクリックし、[メッセージ監視(詳細)]ダイアログ ボックスを起動します。 b. [メッセージ監視(詳細)]ダイアログボックスの[メッセージの編集]にスクリプト[プロシジャ名]を設定します。 - 単体起動型スクリプトの場合 [通知/実行アクション]タブを選択し、チェックボックス「アプリケーションを起動する」にチェックを入れます。 swctclshコマンドを設定し、スクリプトをパラメタに設定します。 swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Managerリファレンスマニュアル”を参 照してください。 ポイント 先頭通知コリレーションおよび末尾通知コリレーションを動作させるシステムについて 単一システムからのイベントに対し、先頭通知コリレーションおよび末尾通知コリレーションを行う場合、イベント監視定義 へのスクリプトの登録は、業務サーバなどの被監視側のサーバ上で行うことをお勧めします。これにより、トラフィック量を 抑えるとともに、管理サーバの負荷を軽減することができます。また、同一部門内の複数システムにまたがった先頭通知 コリレーションおよび末尾通知コリレーションを行う場合は、同様の理由から部門管理サーバ上で行うことをお勧めしま す。 単体起動型スクリプトの指定について [通知/実行アクション]へ単体起動型スクリプトの起動を定義する場合、スクリプトの指定はフルパスのファイル名ではな く、[実行名]で行うことをお勧めします。スクリプトの格納先はシステムごとに変更可能であり、また、パスの表記方法は WindowsとUNIXで異なりますが、スクリプトを[実行名]で指定すればそれらの違いを無視することができます。 8.7 ポリシーの設定 [Systemwalkerコンソール]で以下の操作を行い、ポリシーの設定をします。 スクリプトの自動起動機能の設定 [Systemwalkerコンソール]で以下の操作を行い、運用管理サーバ上またはポリシー配付先で単体起動型スクリプトを自 動起動させる設定をします。 1. 設定を行うダイアログボックスを起動します。 a. [Systemwalkerコンソール]の[ポリシー]メニューから[監視]-[監視ポリシー]を選択します。 →[監視ポリシー[管理]]画面が表示されます。 b. [オプション]メニューの[カスタムモード表示]を選択したあと、[設定対象]-[スクリプト]-[動作設定]を選択し、 [操作]-[新規作成]メニューまたは[操作]-[更新]メニューを選択します。 - 329 - c. [ポリシー名]、[コメント名]を入力し、[OK]ボタンをクリックします。 →[スクリプト(動作設定)]画面が表示されます。 2. [登録スクリプト一覧]から自動起動させるスクリプトを選択し、[自動起動する]のチェックボックスをチェックします。 自動起動を指定できるスクリプトは、最大10個です。 3. 自動起動の詳細な設定をする場合は、[詳細設定]ボタンをクリックし、[スクリプト自動起動設定]ダイアログボックス を起動します。 - 330 - 4. 以下の項目を設定し、[OK]ボタンをクリックします。 [パラメタ] 自動起動時にスクリプトに指定する[パラメタ]を255バイト以内で入力します。 [起動時のディレクトリ] 自動起動時にスクリプトが動作するディレクトリを動作システムがWindowsの場合、UNIXの場合でそれぞれ指定し ます。 [ディレクトリを指定]を選択した場合は、ディレクトリ名を255バイト以内のフルパスで入力します。 5. [スクリプト(動作設定)]ダイアログボックスの[OK]ボタンをクリックします。 →運用管理サーバ上の設定に起動されていた場合は、運用管理サーバで動作中のSystemwalkerに対して即時 適用をするかどうかを問い合わせるダイアログボックスが表示されます。 本機能により自動起動されたスクリプトが標準出力・標準エラー出力へ出力した情報は、スクリプトが動作したシステム上 の以下のファイルへ格納されます。 【Windows版】 Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\log\at_実行名0.log Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\log\at_実行名1.log 【UNIX版】 /var/opt/FJSVssc/log/at_実行名0.log /var/opt/FJSVssc/log/at_実行名1.log ・ "実行名"の部分は自動起動対象のスクリプトに定義された実行名に置き換えられます。 ・ ファイルは"~0.log"と"~1.log"がスクリプトごとにサイクリックに使用され、ファイルサイズが50KBを超えたら切り替わ ります。 ・ 自動起動されたスクリプトが標準出力・標準エラー出力へ出力した情報は、1行のデータ長が4096バイトより大きい場 合、取得できた文字列の最後に"\"(円記号)をつけて複数行に分けて出力します。 出力情報の各行(改行ごと)の先頭には出力された日時および出力先(標準出力の場合"STDOUT"、標準エラー出力の 場合"STDERR")の情報が付加されます。 出力例) Wed Jan 16 16:05:36 2002 STDOUT ユーザスクリプト01の処理を開始します。 Wed Jan 16 16:05:37 2002 STDERR ファイルオープンに失敗しました。処理続行します。 Wed Jan 16 16:05:38 2002 STDERR ユーザスクリプト01の処理を完了しました。 自動起動されたスクリプト内で、execを使用して、バックグラウンドで実行したコマンドが標準出力・標準エラー出力へ出 力した情報も、ログファイルへ格納されます。ただし、そのコマンドが、バッファに残っているすべてのデータをファイルに 強制的出力(フラッシュ)していない場合は、ログファイルへの書き込みが遅れる場合があります。 注意 ・ 運用管理サーバに対する設定の即時適用時およびポリシー配付先に対するポリシーの即時適用時は、即時適用す る内容にかかわらず、該当システムの自動起動対象スクリプトはすべて再起動されます。 ・ 自動起動したスクリプトは、定義適用による再起動時、およびSystemwalkerのサービス/デーモンの停止時には、強 制終了されます。その際、同スクリプト内からexecされたプログラムやさらにそのプログラムから起動されたプログラム など、スクリプトのプロセスから派生した子プロセスもすべて同時に強制終了されます。 [UNIX版] 自動起動スクリプトのパラメタにUTF-8固有文字を使用する場合は、以下の手順で設定してください。 - 331 - 1. Systemwalkerスクリプトを起動するコンピュータ上に、swctclshコマンドを使用して、UTF-8固有文字をパラメタとし て、起動したいSystemwalkerスクリプトを起動するシェルスクリプトを作成します。 2. 1.で作成したシェルスクリプトをexecコマンドで起動するように設定したSystemwalkerスクリプトを作成します。 3. 2.で作成したスクリプトを自動起動するように設定します。 8.8 ポリシー配付 [Systemwalkerコンソール]で以下の操作を行い、運用管理サーバで定義したスクリプトをポリシーとして配付します。 ポリシーとして配付されるのは以下の情報です。 ・ 運用管理サーバで定義したスクリプトの登録内容、および登録したスクリプトファイル。ファイルは自動的に配付先 ノードの文字コードに変換されます。 ・ 自動起動されるスクリプトの設定内容 配付したスクリプトは、下記の共通管理ディレクトリ配下に格納します。 ただし、配付先ノードのVLがV10.0L10/10.0以前の場合、スクリプト自動起動設定は無視されます。 格納場所 OS Windows版 Systemwalkerインストールディレクトリ\mpwalker.dm\mpsc\script\common UNIX版 /var/opt/FJSVssc/script/common Windowsの運用管理サーバで、クラスタ運用している場合は、Systemwalkerで利用する共有ディスク上の同名ディ レクトリになります。 1. [ポリシー]メニューの[監視]-[監視ポリシー]を選択します。 →[監視ポリシー[管理]]ダイアログボックスが表示されます。 2. [監視ポリシー [管理]]ダイアログボックスの[設定対象]-[ポリシーグループ]から対象となるポリシーグループ名を選 択します。 3. [操作]メニューの[配付]を選択します。 ポリシー配付先のシステムでは、自動起動されていたスクリプトをいったんすべて終了し、新たに配付された定義・スクリ プトに従って自動起動を再実行します。 注意 ・ 登録時には、スクリプト登録内容と、自動運用支援の[イベント監視の条件定義]との整合性は考慮されません。 8.9 登録済みスクリプトの変更手順 登録済みスクリプトの変更手順を以下に示します。 運用管理サーバの場合 1. 自動起動機能以外の方法で起動している単体起動型スクリプトを停止します。 2. スクリプトファイルを置き換えます。 3. [監視ポリシー[管理]]ダイアログボックスの[設定対象]-[ポリシー]-[スクリプト]-[動作設定]から対象となるポリシー名 を選択し、[操作]メニューから[更新]を選択します。 →[スクリプト(動作設定)]ダイアログボックスが表示されます。 4. [OK]ボタンをクリックします。 5. [監視ポリシー[管理]]ダイアログボックスの[設定対象]-[ポリシーグループ]から対象となるポリシーグループ名を選 択します。 - 332 - 6. [操作]メニューから[配付]を選択し、ポリシーを配付します。 運用管理サーバ以外の場合 1. 自動起動機能以外の方法で起動している単体起動型スクリプトを停止します。 2. 運用管理サーバのスクリプト登録ディレクトリ配下のスクリプトファイルを置き換えます。 3. [監視ポリシー[ポリシーグループの登録](カスタムモード)]の[スクリプト]-[動作設定]から変更対象のポリシーの更 新を選択して[スクリプト(動作設定)]ダイアログボックスを起動します。 4. [OK]ボタンをクリックします。 5. [監視ポリシー[管理]]ダイアログボックスを起動し、[設定対象]-[ポリシーグループ]から対象となるポリシーグルー プ名を選択します。 6. [操作]メニューの[配付]を選択します。 配付したスクリプトは、スクリプト登録ディレクトリ配下に格納します。なお、スクリプトの変更は、ポリシー配付を実施 したときに反映されます。 8.10 クラスタ運用している場合の注意事項 クラスタ運用しているサーバがある環境で、インテリジェントサービスを使用する場合、以下の注意が必要です。サンプル スクリプト別の注意事項については、“サンプルスクリプトのカスタマイズ”の各サンプルスクリプトの項を参照してください。 スクリプト登録ディレクトリについて 運用管理サーバがWindowsで、運用管理サーバをクラスタ運用している場合、ユーザスクリプトを格納するスクリプト登録 ディレクトリは、Systemwalker Centric Managerで利用する共有ディスク上のディレクトリになります。 Systemwalker Centric Managerをインストールしたローカルディスク上のディレクトリは、スクリプト登録ディレクトリとして扱 われないため、格納したスクリプトを登録することはできません。 なお、運用管理サーバがUNIXの場合は、クラスタ運用を行っている場合もスクリプト登録ディレクトリのパス名は変わりま せん。 共通管理ディレクトリについて 運用管理サーバがWindowsで、運用管理サーバをクラスタ運用している場合、スクリプトの共通管理ディレクトリは、 Systemwalker Centric Managerで利用する共有ディスク上のディレクトリになります。 なお、運用管理サーバがUNIXの場合は、クラスタ運用を行っている場合もスクリプトの共通管理ディレクトリのパス名は 変わりません。 自動起動機能について クラスタ運用している運用管理サーバの待機系では、スクリプトの自動起動は行われません。またフェールオーバが発生 した際には、自動起動されていたスクリプトは停止されます。 - 333 - 付録A 正規表現 スクリプト内では、正規表現を使用することができます。 以下にスクリプトでの正規表現について説明します。 正規表現の記号 記号 . 説明 任意の1文字に一致する。 使用例 文字列中に“ABC”で始まる4文字の文字 列があるか検査する。 regexp {ABC.} $text * 直前のパターン要素の、0回以上の繰り返 しに一致する。 文字列中に“<”と“>”で囲まれた部分があ るか検査する。(囲まれた中は空文字でも 可) regexp {<.*>} $text + 直前のパターン要素の、1回以上の繰り返 しに一致する。 文字列中に“<”と“>”で囲まれた文字があ るか検査する。(囲まれた中に任意の文字 が1文字以上あること) regexp {<.+>} $text ? 直前のパターン要素の0回、または1回の 出現に一致する。 文字列中に“1”、または“01”があるか検査 する。 regexp {0?1} $text () サブパターンをグループ化する。 繰り返しや選択は、サブパターン全体に適 用される。 文字列中にカンマがあるか検査し、ある場 合は一致部分すべてをallに、カンマの前 後をそれぞれsub1,sub2に切り出す。(カン マの前後は空文字列でも可) regexp {(.*),(.*)} $text all sub1 sub2 | 選択 文字列中に“Info”、または“Warning”が含 まれるか検査する。 regexp {Info|Warning} $text [] 文字集合に含まれる文字に一致する。 ただし、最初の文字が“^”(ハット)の場合 は、文字集合に含まれない文字に一致す る。範囲は[a-z]のように“-”(ハイフン)を 入れる。 ^ $ 文字列中にABCに続く2桁の数字があり、 さらにその直後が空白以外か検査する。 regexp {ABC[0-9][0-9][^ ]} $text パターンの先頭に指定された場合、文字 列の先頭に一致する。 文字列の先頭が“ABC”か検査する。 パターンの末尾に指定された場合、文字 列の末尾に一致する。 文字列の末尾がABCか検査する。 regexp {^ABC} $text regexp {ABC$} $text パターン検索の規則 ・ パターンと一致した最初で最長の文字列が選択されます。 ・ “|”(選択)が含まれる場合は、左側のサブパターンから検査されます。 ・ “*”、“+”、“?”を使用した表現では、一致する部分が長い文字列が優先されます。 ・ 複数の部分表現が並んでいる場合は、左側の部分表現から検索します。 - 334 - 特殊文字と正規表現記号の扱い 正規表現記号のうち、スクリプト上の特殊文字に当たるものがあるため、使用する場合には以下のように記述してくださ い。 スクリプト上の特殊文字 “[”、“]” 、“$”、“(”、“)”、“{”、“}” 特殊文字の使用方法 以下のどちらかの方法で記述します。 ・ 前に“\”(円記号)を付けてエスケープする ・ 正規表現全体を“{ }”(中括弧)で囲む 例) regexpの引数に正規表現の“[0-9]”を指定します。 regexp "\[0-9\]" $text または、 regexp {[0-9]} $text 正規表現記号を正規表現の中で、単なる文字として扱う場合は、“\”(円記号)を直前に付加してください。 ただし、円記号はスクリプトとしての特殊文字でもあるため、記述する際には“\\”とするか正規表現全体を中括弧で囲む 必要があります。 例1) 文字“*”を含んでいるかを検査します。 regexp "\\*" $text または、 regexp {\*} $text 例2) 文字“[”を含んでいるかを検査します。 regexp "\\\[" $text または、 regexp {\[} $text これに伴い、正規表現の中で円記号自身を単なる文字として扱う場合は、“\\”と記述する必要があります。 この場合も、円記号がスクリプトとしての特殊文字を考慮し、2つの円記号それぞれを“\\”とするか、正規表現全体を中 括弧で囲む必要があります。 例3) 文字“\”を含んでいるかを検査します。 regexp "\\\\" $text または、 regexp {\\} $text スクリプトの特殊文字を、円記号でエスケープすると、例2、3のように複数の円記号が必要になります。 このとき、円記号の記述を間違いやすいので、正規表現の記述は常に中括弧で囲むことを推奨します。 - 335 - ポイント 文字列の切り出し 文字列を切り出すには[^ ]を組み合わせて記述します。 文字列“A<BC>D”から“< >”で括られている“BC”部分を変数Var0に切り出す場合、以下のように記述します。 regexp {<([^>]*)} "A<BC>D" All Var0 文字列“A[BC]D”から“[ ]”で括られている“BC”部分を切り出す場合、特殊記号の“[ ]”の直前に円記号“\”を付加して エスケープします。 regexp {\[([^\]]*)} "A\[BC\]D" All Var0 正規表現の一般的な文法エラーについて 正規表現の一般的な文法エラーとその対処法の例を示します。 ・ couldn't compile regular expression pattern: parentheses () not balanced 正規表現の記述内で括弧“( )”の対応が取れていません。開き括弧や閉じ括弧の記述などが漏れていないか確認 してください。括弧“( )”を通常文字として扱う場合は、“\”(円記号)を付けてエスケープしてください。 ・ couldn't compile regular expression pattern: brackets [] not balanced 正規表現の記述内で大括弧“[ ]”の対応が取れていません。開き大括弧や閉じ大括弧の記述などが漏れていない か確認してください。大括弧“[ ]”を通常文字として扱う場合は、“\”(円記号)を付けてエスケープしてください。 ・ couldn't compile regular expression pattern: invalid character range 文字集合の範囲の指定に誤りがあります。大括弧“[ ]”で囲まれた部分の記述に誤りがないか確認してください。文 字集合の範囲を指定する場合は、[0-9]、[a-z]などのように順序が先の文字から後の文字を指定するようにしてくださ い。 ・ couldn't compile regular expression pattern: quantifier operand invalid 正規表現の記号の使用方法に誤りがないか確認してください。 注意事項 正規表現では空白も1文字として認識するため、正規表現中に不要な空白があると、正しく検査できません。また、全角 と半角は区別します。 - 336 -
© Copyright 2024 Paperzz