Schrift
[thread]8761[/thread]

Aus Windows den Hostname und DNS-Suffix auslesen: Sys::Hostname und ?

Leser: 1


<< >> 7 Einträge, 1 Seite
wiederlader
 2007-02-15 13:49
#74358 #74358
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
Wie kann ich auf einem Windows Server mit Perl den Hostnamen und DNS-Suffix auslesen.
Den Hostname bekomme ich ja wie folgt:
Code: (dl )
1
2
3
use Sys::Hostname;
my $hostname = hostname;
print "---------- $hostname ----------\n";


Aber wie komme ich mit Perl an den DNS-Suffix, den ich mit ipconfig unter Windows angezeigt bekomme?
Danke, Gruß Markus
GwenDragon
 2007-02-15 14:05
#74359 #74359
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
esskar
 2007-02-15 14:51
#74360 #74360
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn dein rechner im dns eingetragen ist und du deine ipadresse weißt, kannst du auch mit
Code: (dl )
1
2
use Socket;
print gethostbyaddr( $ipaddr, AF_INET );

nachfragen!
wiederlader
 2007-02-16 14:13
#74361 #74361
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
Hallo GwenDragon,

danke, mit
Code: (dl )
1
2
3
4
5
6
7
8
use Win32::IPConfig;
my $host = shift || Win32::NodeName;
my $ipconfig = Win32::IPConfig->new($host)
or die "Unable to connect to $host\n";
my $hostname = $ipconfig->get_hostname;
my $address = $ipconfig->get_domain;
my $host_add = ($hostname . '.' . $address);
print "$host_add\n";

bekomme ich genau das gewünschte Ergebnis. Allerdings habe ich das Problem das ich auf den Servern nicht ohne Weiteres das Modul installieren darf.
GwenDragon
 2007-02-16 14:40
#74362 #74362
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Du kannst auch über die Registry die Daten auslesen.
Das geht mit CPAN:Win32::TieRegistry
Die Domain wohl liegt unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Schlüssel DHCPDomain
bzw. bei den einzelnen Interfaces unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Schlüssel DHCPDomain
und Domain

Ist es das, was du brauchst?\n\n

<!--EDIT|GwenDragon|1171629962-->
wiederlader
 2007-02-27 16:51
#74363 #74363
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,16.02.2007, 13:40]Du kannst auch über die Registry die Daten auslesen.
Das geht mit CPAN:Win32::TieRegistry
Die Domain wohl liegt unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Schlüssel DHCPDomain
bzw. bei den einzelnen Interfaces unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Schlüssel DHCPDomain
und Domain

Ist es das, was du brauchst?[/quote]
Hallo GwenDragon,

sorry für die späte Antwort. Ich komme leider nur gelegentlich zum programmieren.

Ja, so komme ich auch mit einem Standard-Modul zum gewünschten Ergebnis

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;

use Win32::TieRegistry (Delimiter=> "/");

my $Hostname = $Registry->{"HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Hostname"};
print "\n$Hostname\n";
print "---------------------------------------\n\n";
#Dhcp Domain Name auslesen
my $Domain = $Registry->{"HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/DhcpDomain"};
print "\n$Domain\n";
print "---------------------------------------\n\n";

my $Host_Domain_Name = "$Hostname.$Domain";
print "\n$Host_Domain_Name\n";
print "---------------------------------------\n\n";


Danke, Gruß Markus
wiederlader
 2007-02-27 17:17
#74364 #74364
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,15.02.2007, 13:51]wenn dein rechner im dns eingetragen ist und du deine ipadresse weißt, kannst du auch mit
Code: (dl )
1
2
use Socket;
print gethostbyaddr( $ipaddr, AF_INET );

nachfragen![/quote]
Hallo esskar,

so klappt es auch fast.
Nur soll das Script jeweils nur den Hostnamen des Rechners ermitteln auf dem das Script ausgeführt wird. Somit möchte ich auch keine IP-Adresse angeben. Wenn ich also deinen Code wie folgt ausführe (ja die Variable hat keinen Wert zugewiesen bekommen)
Code: (dl )
1
2
3
use strict;
use Socket;
print gethostbyaddr( my $ipaddr, AF_INET );

wird folgendes ausgebeben:
Quote
Use of uninitialized value in gethostbyaddr at D:\DOKUME~1\FE~1.MAR\LO
<Hostname.Domainname>24 Drücken Sie eine beliebige Taste . . .

Der Fehlertext meckert sicherlich die leere Variable an. Wie könnte ich dass unterdrücken
Aber des Weiteren wird hinter dem Domainname (auch wenn ich der Variablen $ipaddr eine IP-Adresse zuweise immer die Zahl "24" ausgegeben.
Ich habe ja schon eine Lösung gefunden somit ist es nicht weiter tragisch. Aber diese Variante wäre wesentlich kürzer.
Gruß, Markus
<< >> 7 Einträge, 1 Seite



View all threads created 2007-02-15 13:49.