WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Windows Hostname über IP bestimmen? (http://www.wcm.at/forum/showthread.php?t=57726)

MANX 26.05.2002 23:25

Windows Hostname über IP bestimmen?
 
Hi @all!

Ich hätte gerne von Linux aus (mit PERL) ein paar Daten der Windowsclients gesammelt (IP MAC und Hostname)

IP MAC kein Problem => ping, arp

Für den Hostnamen fiel mir als erstes smbclient ein, das wurde mir aber beim Gedanken an die RegExp schlecht.

Zweiter Versuch mit nmblookup: eine Annäherung
Code:

gateway:~# nmblookup -A 192.168.0.1
Looking up status of 192.168.0.1
        MANX            <00> -        B <ACTIVE>
        MANX            <20> -        B <ACTIVE>
        ZUHAUSE        <00> - <GROUP> B <ACTIVE>
        ZUHAUSE        <1e> - <GROUP> B <ACTIVE>
        ZUHAUSE        <1d> -        B <ACTIVE>
        usw.

weiter mit grep (workaround) ...
Code:

gateway:~# nmblookup -A 192.168.0.1 | grep "<00> -        B"
        MANX          <00> -        B <ACTIVE>

null Ahnung von awk, aber ...
Code:

gateway:~# nmblookup -A 192.168.0.1 | grep "<00> -        B" | awk '{print$1}'
MANX
gateway:~#

Einfachere, andere Vorschläge willkommen, Verbesserungen erwünscht.

Grüße

Manx

citizen428 27.05.2002 12:20

Bin leider auch kein Profi was awk angeht (so praktisch es ist) und hab auch keine bessere Lösung als deine gefunden...

Aber vielleicht hilft dir diese Seite:
http://www-personal.umich.edu/~jlawl...edawkperl.html

MANX 27.05.2002 13:11

Hi Citizen!

Thx für den Link, schau's mir an.
Das ganze soll die Erstellung einer DHCPd.conf etwas automatisieren.
Wenn's (mal) fertig ist, werd ich's posten, dann könnt ihr's zerreißen :)

Grüße

Manx

citizen428 27.05.2002 14:18

Zitat:

Original geschrieben von MANX
Das ganze soll die Erstellung einer DHCPd.conf etwas automatisieren.

Dazu hat google was gefunden:
http://www.tldp.org/HOWTO/Diskless-r...r-HOWTO-7.html
(Es ist bei Appendix B)

Vielleich hilft dir das!

MANX 27.05.2002 20:22

Hey, es hat mich ja gewundert, dass es sowas nicht fertig gibt.
Scheinbar gibt's nur Probleme mit den Windowshostnamen, schreibt immer "unknown".

Schau's mir aber noch genauer an :)

Danke

Manx

MANX 27.05.2002 20:37

... Citizen428, hast Dir ein Bier (bzw. fast ein Sternderl) verdient, auf einem Forumtreffen vielleicht?

Damit kann man was anfangen, die Windowshostnamen bau ich noch ein!

1000 Dank

Manx

citizen428 28.05.2002 00:44

Zitat:

Original geschrieben von MANX
1. Citizen428, hast Dir ein Bier (bzw. fast ein Sternderl) verdient, auf einem Forumtreffen vielleicht?
2. 1000 Dank

ad 1. Komme gern drauf zurück :) Bis zum Nächsten dauert es eh nicht mehr allzu lang.

ad 2. Bitte gerne!

MANX 28.05.2002 01:11

Hab mich jetzt am Abend nochmal hingesetzt ...
 
... und es selber noch probiert.

Arpwatch ist eigentlich zu mächtig, geht mit dem Interface in den promiscuous mode und dann hab' ich noch die IPs nicht der Reihe nach.

Erstes Ergebnis:
Code:

#!/usr/bin/perl

use IO::Socket;

$net = "192.168.0.";
$start = "1";
$end = "100";
$port = "139";

for ($i = $start; $i < $end; $i++) {
  $host = ();                        # TCP Connect to port $port
  $host = "$net$i";
  $sock = ();
  $sock = IO::Socket::INET->new(PeerAddr => "$host",
                                PeerPort => $port,
                                Proto => 'tcp');
  if ($sock) {

      $arpoutput = ();
      $arpoutput = `arp -na $net$i`;  # ARP-Abfrage
      chomp $arpoutput;                # Zeilenumbruch entfernen

      @arp = split / /, $arpoutput;    # splitten bei den Leerzeichen
      splice(@arp, 0, 3);              # Ersten drei Elemente "? (IP) at" entfernen
      splice(@arp, 1, 3);              # Rest entfernen


      $nmb = ();                      # NMBLOOKUP
      $nmb = `nmblookup -A $net$i |grep "<00> -        B"`;
      chomp $nmb;                      # Zeilenumbruch entfernen
      @nmboutput = split /\s/, $nmb;  # Leerzeichen splitten

      $hostname = ();
      $hostname = $nmboutput[1];      # mich interessiert nur das zweite Element

      print "Added $hostname with IP: $host and MAC: $arp[0]\n";
  }
  else {

      print "Connection to $host on Port: $port failed\n";

  }
}

... ja ich programmiere nicht viel :)

Grüße

Manx

PS: das Bier steht trotzdem


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag