comment executer ce script ?
Bonjour !
J'ai un petit probleme, et je pense que vous devriez pouvoir m'aider ^-^
J'ai écris un script qui me permet de modifier un fichier présent sur mon disque dur.
Code:
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| #!/usr/bin/perl -pi
use MIME::Base64;
use warnings;
# Initialisation du programme
my $sn_exists; my $cn_exists;
my $basedn; my $unknow_index;
my $prefix;
my $unknown_index;
if(not defined $sn_exists){
$sn_exists = 0;
$cn_exists = 0;
# Chemin de la base LDAP ou seront stockés les contacts
$basedn=",ou=ditiric,ou=carnets,dc=entreprise,dc=fr";
$unknown_index = 1;
}
if($_ =~ /^sn:/){
$sn_exists = 1;
}
if($_ =~ /^cn:/){
$cn_exists = 1;
}
if($_ =~ /^$/){
if($sn_exists == 0){
print "sn: not given\n";
}
# Si l'attribut "cn" n'existe pas, on doit en créer un
# sinon LDAP va compléter le champ avec LDAP_NAMING_VIOLATION
if($cn_exists == 0){
print "cn: " . $cn . "\n";
}
$sn_exists = 0;
$cn_exists = 0;
}
# On décode les lignes encodée en BASE64 pour notre substitution
if($_ =~ /^(\w+):: (.*)/){
$_ = sprintf("%s: %s\n", $1, decode_base64($2));
}
# On doit vérifier l'attribut "cn" de la ligne "dn" car certains contacts
# n'ont pas d'attribut "mail=" définit, on doit donc ajouter notre champ
# à la fin de la ligne
if($_ =~ /^(dn:+\s*)/){
$prefix = $1;
$cn = $_;
# On enlève le retour à la ligne
chop $cn;
# Extraction du champ cn de la ligne dn
$cn =~ s/^dn:+\s*cn=([^=]+)(,\s*mail=.*)??$/$1/;
# Si la ligne cn n'est pas renseignée, elle doit commencer par "dn:"
# on doit donc vérifier cela, et donner un nom unique pour cette entrée
if($cn =~ /^dn:/){
$cn = "NoName " . $unknown_index++;
}
# On effectue une vérification sur le champ cn (pas de virgules)
$cn =~ s/,/ /g;
# On créer un nouveau champ "dn"
$_ = $prefix . "cn=" . $cn . $basedn . "\n";
}
if($_ =~ /^(cn:+\s*)/){
$_ = $1 . $cn . "\n";
}
# Suppression ou modification des champs inutiles, et non reconnu par Iplanet Directory Server
s/^homeStreet:/mozillaHomeUrl:/;
s/^modifytimestamp.*\n//;
s/^xmozillausehtmlmail.*\n//;
s/^nsAIMid.*\n//;
# Modification des champs Objectclass et ajout du champ groupeunix (necessaire pour les ACL)
s/^objectclass: mozillaAbPersonObsolete.*\n//;
s/^objectclass: mozillaAbPersonAlpha.*\n//;
s/^objectclass: organizationalPerson.*\n//;
s/^objectclass: mozillaOrgPerson*\n//;
s/^objectclass: inetOrgPerson.*/groupeunix: ditiric/;
s/^objectclass: person.*/objectclass: extensibleObject/; |
Pour le lancer, j'execute la commande suivante :
Code:
perl script.pl nom_du_fichier_surlequel_appliquer_le_script
Ce que je souhaite faire, c'est choisir le fichier surlequel appliquer le script à partir d'une page en php, et des que j'appuis sur la touche convertir, que le script s'applique.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <html>
<body>
<table border="0" valign="center" cellpadding="0" cellspacing="0" height="100%" width="100%">
<tr>
<td>
<form name="conversion" action="thunderbird_to_ldif.pl" method="post" enctype="multipart/form-data">
<input type="submit" value="Convertir le fichier">
</form>
</td>
</tr>
</table>
</body>
</html> |
Je ne vois pas trop comment modifier mon script Perl pour y arriver.
Auriez vous des idées ? :mrgreen: