1

PowerShell スクリプトを使用して SNMP トラップを送信しようとしています (Powershell スクリプトである必要があり、Windows サーバーで実行されます)。トラップレシーバーを備えたテスト環境を実行しています。

私はこのチュートリアルhttp://www.activexperts.com/network-component/howto/snmpts/powershell10/に従ってきましたが、うまくいきませんでした。

以下は私のコードです。スクリプトは正常に動作しています

$objSnmpTrapManager = new-object -comobject AxNetwork.DnsServer #create object
# Create a SnmpTrapOut instance
$objSnmpTrapManager = new-object -comobject AxNetwork.SnmpTrapManager
$objSnmpTrap     = new-object -comobject AxNetwork.SnmpTrap
$objSnmpObject   = new-object -comobject AxNetwork.SnmpObject
$objConstants    = new-object -comobject AxNetwork.NwConstants

# Initialize SNMP
$objSnmpTrapManager.Initialize()
$res = "Initialize, result: " + $objSnmpTrapManager.LastError + " (" + $objSnmpTrapManager.GetErrorDescription( $objSnmpTrapManager.LastError ) + ")"
Write-Host $res
If($objSnmpTrapManager.LastError -ne 0 )
{
  exit
}

# Get Host, community name and optionally a MIB file
$strHostName    = "*******"
$strCommunity   = "public"

# Set trap properties
$objSnmpTrap.Clear()
$objSnmpTrap.Host     = $strHostName
$objSnmpTrap.Community = $strCommunity
$objSnmpTrap.Port     = 80 #is this the port that my trap reciever is looking at? or should it be the default 162

# Add first variable to trap
$objSnmpObject.Clear()
$objSnmpObject.OID   = ".1.3.6.1.2.1.1.5.0"
$objSnmpObject.Type  = $objConstants.nwSNMP_TYPE_OCTETSTRING
$objSnmpObject.Value = "test"
$objSnmpTrap.AddObject($objSnmpObject)

# Send the trap.
$objSnmpTrapManager.Send($objSnmpTrap)
$res = "Send, result: " + $objSnmpTrapManager.LastError + " (" + $objSnmpTrapManager.GetErrorDescription($objSnmpTrapManager.LastError) + ")"
Write-Host $res

# Shutdown SNMP
$objSnmpTrapManager.Shutdown()
$res = "Shutdown, result: " + $objSnmpTrapManager.LastError + " (" + $objSnmpTrapManager.GetErrorDescription($objSnmpTrapManager.LastError) + ")"
Write-Host $res  

すべてが成功と言えます。私の問題は、トラップを送信する場所を定義することだと思います (誰かが素晴らしい例を提供できれば!)

喜んで共有できるヘルプやリソースはありますか?

ありがとう!

4

1 に答える 1

3

ポート ( $objSnmpTrap.Port) は、デフォルトの SNMP トラップ レシーバー (またはtrapsink ) ポートである 162 である必要があります。テスト環境でポート 80 に明示的に変更していない限り、次のようになります。

# Get Host, community name and optionally a MIB file
$strHostName    = "receiver.test.environment.example"
$strCommunity   = "public"

# Set trap properties
$objSnmpTrap.Clear()
$objSnmpTrap.Host     = $strHostName
$objSnmpTrap.Community = $strCommunity
$objSnmpTrap.Port = 162
于 2015-12-01T00:23:45.523 に答える