Spring naar de inhoud

Publiek IP & openHAB

    Het kan soms handig zijn om het publieke IP op een andere site te weten. Zeker bij providers waar de publieke IP’s meestal dynamisch zijn. Hieronder een manier waar openHAB controleert wat het IP is, en vervolgens doormailt als dit gewijzigd is. Je zou dit ook via rsync/FTP/nfs/… naar een andere server sturen, maar ik probeer zo weinig mogelijk poorten open te stellen naar het internet toe.

    Bepalen van het publieke IP

    Installeer volgende onder openHAB:

    • BINDING: http-binding

    Creeer een thing en item met volgende zaken. Je kan dit doen via CLI of GUI.

    via CLI

    thing:

    Thing http:url:wan_ip "Wan IP Adress" [ baseURL="https://api.ipify.org", refresh=86400 ] {
       Channels: Type string : address "WANIP" [ stateTransformation="REGEX:(.*?)" ]
       }

    item:

    String WAN_IP "WAN IP address [%s]" {channel="http:url:wan_ip:address"}

    Via GUI

    Thing:

    UID: http:url:11fc6e8a1c
    label: wan_ip
    thingTypeUID: http:url
    configuration:
      authMode: BASIC
      ignoreSSLErrors: false
      baseURL: https://api.ipify.org
      refresh: 86400
      commandMethod: GET
      timeout: 3000
      bufferSize: 2048
    channels:
      - id: WANIP
        channelTypeUID: http:string
        label: WANIP
        description: ""
        configuration:
          stateTransformation: REGEX:(.*?)
    

    item:

    Als alles goed is, zou je server telkens het publieke IP moeten controleren.

    Alerting instellen

    Installeer volgende onder openHAB:

    • BINDING: mail-binding
    • TRANSFORMATION: regex Transformation

    Creëer nu je mail-server. Ik gebruik persoonlijk meestal sendgrid. Gratis smtp servertje indien je niet veel zaken hoeft te versturen.

    Maak een rule aan die getriggerd wordt als het publieke IP wijzigt, en die vervolgens een mailtje stuurt.

    rule "Monitor WAN IP"
    when
            Item WAN_IP changed
    then
            val currentState = WAN_IP.state
            if (currentState == "-") {
                    logError("MonitorWANIP", "Unable to get WAN IP")
            } else {
                    logInfo("MonitorWANIP", "WAN IP changed to: " + currentState)
                    val mailActions = getActions("mail","mail:smtp:d39abbad9d")
                    mailActions.sendMail(
                            "email@domein.be",
                            "WAN IP gewijzigd",
                            "Het publieke IP adres is gewijzigd.\nHet nieuwe IP is nu: " + currentState + "\n")
                    }
    end

    Een reactie achterlaten?