Thread Festplattenbelegung ausgeben+speichern (16 answers)
Opened by zottel335i at 2008-06-30 17:02

zottel335i
 2008-07-16 12:43
#112192 #112192
User since
2008-06-30
11 Artikel
BenutzerIn
[default_avatar]
Hallo Community,

mein Skript ist nun syntaktisch Fehlerfrei. Es lag einfach an ein paar ""...
Das ganze sieht nun so aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl

use strict;
use IO::File;
use Win32;                              
use Win32::AdminMisc;   
use Win32::OLE qw (in);

# Ordner, in dem die CSV-Datei liegt
my $dir = '.';
# Trennzeichen in der Datei 
my $sep = ';';


# Datei oeffnen
open(DATEN,'<D:\reporting_script\systems.txt') or die "Konnte die Datei nicht öffnen";
# Inhalte abgreifen und splitten
while (defined(my $zeile = DATEN->getline))
{
 my ($FQDN, $OS, $HDD, $USER, $PW) = split(/;/,$zeile);
 
 # Abfrage der WindowsHosts
  if($OS eq 'win')
 {
  # Verbindungsaufbau
  my $conn_object = Win32::OLE->new('WbemScripting.SWbemLocator');
  my $server  = $conn_object->ConnectServer($FQDN, "root\\cimv2", $USER, $PW);
  
  # Abfrage des Datentraeger
  my $total; my $free;
  ($total, $free) = Win32::AdminMisc::GetDriveSpace("$HDD:\\");
  $total = $total / 1024 /1024;         # MegaByte!
  $free = $free / 1024 /1024;           # MegaByte!
  
  printf ("\n");
  printf ("Speicher gesamt: $total MB\n");
  printf ("Speicher verfuegbar: $free MB\n");
  printf ("\n");
    printf ("");
  }
 
 # Abfrage LinuxHosts
 if($OS eq 'lin')
 {
 # Verbindungsaufbau
 my $plink_dir = "D:\\reporting_script";
 my $res_query = "df -Ph";

 my $erg = qx{"$plink_dir\\plink.exe" -ssh -P 22 -pw $PW $USER\@$FQDN $res_query};
 printf ("$erg");
 }
 
}close(DATEN);
printf ("\n");
printf("schleife tot...");


Bisher habe ich das Skript lokal entwickelt und mit der Adresse 127.0.0.1 getestet. Jetzt wo das ganze via Netzwerk arbeiten soll (erstmal nur der Windowsteil) funktioniert wohl der Login nicht. Ich habe für die Variable $FQDN ein System aus dem Netzwerk angegeben. Die LoginIinformationen($User,$PW,$HDD) stimmen natürlich auch und händisch kann ich auf das System connecten.

Das Skript fragt jedoch immer nur die Festplatten des lokalen Systems ab. Festplatte C, D, E usw. geben die "richtigen" Informationen zurück(allerdings sind das die Festplattendetails des lokalen Systems). Frage ich bspw. die Festplatte F, welche auf dem Remotesystem vorhanden ist, aber auf dem lokalen nicht, bekomme ich 0GB freier/verfügbarer Speicher angezeigt.

Wo setze ich hier jetzt den Hebel an. Wie kann ich ein Troubleshooting durchführen?

Bin nun wirklich überfragt!?

Grüße,
zottel

View full thread Festplattenbelegung ausgeben+speichern