Armadilloフォーラム

pythonでsnmptrap送信

k.sato

2023年12月14日 9時46分

佐藤と申します。
お世話になっております。

Armadillo-640をABOSのalpine:3.18コンテナで開発しています。
pythonのコードからsnmptrapを送信する方法を教えていただけませんか?

以上、よろしくお願い致します。

コメント

佐藤です。

回答ありがとうございます。

> こちらで試したわけではないのですが、以下は参考になりますでしょうか。
> https://pysnmp.readthedocs.io/en/latest/quick-start.html#send-snmp-trap
> (先にalpineコンテナ内で "apk add py3-snmp" 実行する必要があります。)
こちらのサイトは見つけていたのですがpysnmpとなっており、py3-snmpとは異なると思い試していませんでした。

packages.txt に「py3-snmp」を追加してコンテナにインストールし、
「demo.snmplabs.com」をPCのIPアドレスに置き換えたところTrapを受信することが出来ました。
ありがとうございました。

またTrapの送信者としてArmadillo-640のIPアドレスを付与したいのですが、
IPアドレスを自動割当としてmy_project.confに「set_network host」としているとき、
コンテナ内のpythonからホストのIPアドレスはどうやって取得するのでしょうか?

よろしくお願い致します。

> またTrapの送信者としてArmadillo-640のIPアドレスを付与したいのですが、
> IPアドレスを自動割当としてmy_project.confに「set_network host」としているとき、
> コンテナ内のpythonからホストのIPアドレスはどうやって取得するのでしょうか?
少し手間ですが、以下のような関数を作った上で、使ってみてください。

import socket
 
def get_host_ip(self):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        # doesn't even have to be reachable
        s.connect(('10.255.255.255', 1))
        IP = s.getsockname()[0]
    except:
        IP = '127.0.0.1'
    finally:
        s.close()
    return IP

佐藤です。

無事、ホストのIPアドレスを取得することができました。

ありがとうございました。