Bonjour a tous,
j'ai le niveau 00 en perl et je viens d'heriter d'un script de sauvegarde de stations windows. Ce script fonctionnait correctement sur une red hat 7 mais passé sous Debian etch ca ne fonctionne plus (a savoir il detecte toutes les stations comme etant sous W98 et non la plupart sous qui sont sous XP...)
Apparement c'est la sortie de smbclient qui n'est pas correctement interpretée...
Je joint la partie concernée du script s'il y a quelques ames charitables qui voudrait bien y jeter un oeil.
Un grand merci par avance!
alf
ps: a quoi sert la variable $k er pourquoi doit elle etre >=4???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 $argsmbclt="smbclient -L ".$STATION." -U administrateur%password -W domain |"; #print("On lance smbclient\n"); open(SMB,$argsmbclt); #print("Fin de smbclient\n"); #print("Début Analyse partage\n"); $k=0; $XP=0; while (<SMB>) { if (($_=~ m/Windows/)) { $XP=1; #print("C est un poste WXP $k\n"); } $k++; #print ("$k\n"); if ($k>=4) { if ($_=~ m/Server/) { #print(" on a trouvé le mot server donc fin de la boucle\n"); last; } else { #print("ligne $k pertinente donc analysée\n"); #print(" PARTAGE --> @tempo1[0]\n $_"); if (($_=~ m/C-ST/)||($_=~ m/CST/)) { @tempo1=split(); #print(" mise en tableau effectuée!\n"); $PARTAGE=@tempo1[0]; $tabpartage{$STATION}=$PARTAGE; if ($XP==1) { $poste="WXP"; $XP=0; } else { $poste="W98"; } last; #print(" Partage ok --> @tempo1[0\n"); #print("On peut sortir de la boucle\n"); } } } } #print("Fermeture descripteur SMB\n"); close (SMB); #print("descripteur SMB fermé\n"); print("$ip $poste --> $STATION --> $PARTAGE\n");
Partager