eigene IP mit fhem /perl herausfinden

Begonnen von Alex, 20 Mai 2013, 19:19:45

Vorheriges Thema - Nächstes Thema

Alex

Hallo,

mein fhem läuft auf einem kleinen Plug Computer (Debian) hinter einem Router. Um von außerhalb darauf zugreifen zu können habe ich ein VPN eingerichtet. Funktioniert auch.

Ich habe natürlich auch eine dynamische IP, die sich gelegentlich ändert. Das führt dann dazu dass ich mein zuhause nicht mehr finden kann. Auf Dienste wie DynDNS würde ich gerne verzichten.
Am liebsten würde ich mit fhem oder Perl script einmal in der Stunde meine eigene IP checken, mit der alten vergleichen und bei Veränderung eine Mail mit der neuen IP versenden. Hat das vielleicht schon mal jemand versucht?

Ich habe (noch) keine Möglichkeit gefunden, die IP herauszufinden ... den Rest würde ich bestimmt hinkriegen.

Hat da jemand eine Idee?

Lg

Dirk

Hi Alex,

ich hole mir eine Liste aller Interfaces mit zugehöriger IP hier mit:

my $cmdLine = 'ip -o addr show | awk \'/inet/ {print $2, $3, $4}\'';
my @ips = `$cmdLine`;

foreach my $ipLine (@ips) {
  my ($interface, undef, $ipParts) = split(' ', $ipLine);
  my ($ip) = split('/', $ipParts);
  if ($interface ne 'lo') {
    print $interface . ':' . $ip;
  }
}

Gruß
Dirk

rudolfkoenig

>  Ich habe (noch) keine Möglichkeit gefunden, die IP herauszufinden...

Falls der Router sie freiwillig (z.Bsp auf einer der HTML Seiten) rausrueckt, dann wurde ich die Daten von einem der vielen "my ip" Diensten im Internet wie. z.Bsp. http://www.heise.de/netze/tools/meine-ip-adresse/  mit der FHEM Funktion GetFileFromURL() erfragen. Welcher von diesen Diensten sich am einfachsten parsen laesst das muss man vmtl. muehsam ausprobieren.

Ralph

FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

fhem86

So bekomme ich meine externe ip:

99_mod.pm:

sub
getip
{
my $url = 'http://checkip.dyndns.org';

  use LWP::Simple;
  my $content = get $url;
  die "Couldn't get $url" unless defined $content;

  my $value = (split " " , $content)[5];
  my $value1 = (split "<" , $value)[0];

  return $value1;
}


in der fhem config:

define Job_sendnotify_ip at *06:00:00 { \
my $ip=getip;; \
fhem "set my_andnotify send $ip|Aktuelle IP|Aktuelle IP|Aktuelle IP|20|20";; \
}

Ralph

FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

accloginsell

Zitat von: fhem86 am 23 Mai 2013, 21:49:48
So bekomme ich meine externe ip:

99_mod.pm:

sub
getip
{
my $url = 'http://checkip.dyndns.org';

  use LWP::Simple;
  my $content = get $url;
  die "Couldn't get $url" unless defined $content;

  my $value = (split " " , $content)[5];
  my $value1 = (split "<" , $value)[0];

  return $value1;
}


in der fhem config:

define Job_sendnotify_ip at *06:00:00 { \
my $ip=getip;; \
fhem "set my_andnotify send $ip|Aktuelle IP|Aktuelle IP|Aktuelle IP|20|20";; \
}


Servus,

danke das funktioniert soweit ganz gut
Leider freezed mein FHEM dann für ca 3 Minuten
Wie kann ich dies umgehen?

Dankeschön!
Viele Grüße Nico

dev0

Anscheinend schließt der Server die Verbindung nicht. Anderen Server wählen (zB. http://icanhazip.com/) und das Splitten anpassen.

accloginsell

Danke euch für die Antworten

@dev0 das funktioniert super jedoch schmeißt er mir immer meine IPV6 raus.. Kennst du eine Seite die die nur die IPV4 rauschmeißt?

Danke dir

dev0

Nö, kenne ich nicht, müßte ich auch suchen. Du könntest aber auch gezielt eine IPv4 Verbindung aufbauen. Ob und wie LWP::Simple das kann weiß ich nicht...