Perl:Migration de Domaine

Pitbull2boul Messages postés 2 Statut Membre -  
Pitbull2boul Messages postés 2 Statut Membre -
Bonjour,

Alors au fait, ma mission est de changer le nom de domaine de tous les comptes de messagerie de la boite où je travaille qui est de la forme: toto@paris.bosch.fr et qui doit être changé en toto@bosch.fr tout cela doit être fait en pirl et je n'y parviens vraiment pas on m'a donné ce script a modifier j'ai essayé de changer les chemins mais ca ne marche pas et je ne comprends pas trop le perl, on m'a donné les fichiers qui vont me servir et on m'a dit de me débrouiller, j'ai placé les document shadow et passwd sur le bureau donc j'ai chnagé les chemins aussi mais ca donne rien :
#!/usr/bin/perl -w

#!/usr/bin/perl -Tw

#

# $Id: migration2csv.pl,v 1.1 2007/09/25 14:01:52 lebec,tognazzi Exp $

#

use strict;

$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin';

$ENV{'BASH_ENV'} = '';

use utf8;

my $debug = 0;

my $ROOTPATH = '/root/migration';

my $passwd_file = "$ROOTPATH/passwd_tolbiac";

my $shadow_file = "$ROOTPATH/shadow_tolbiac";

my %shadowhash=();

my %expirehash=();

my %passwdhash=();

warn "$0\n";

#warn "\n";

#warn "#################################################################\n";

#warn "Elimination des comptes systemes. Creation de '$passwd_file'\n";

#warn "#################################################################\n";

my $longueur=`wc -l /etc/passwd | tr -s '[:blank:]' | cut -d" " -f2`;

my $entete=$longueur-32;

`tail -$entete /etc/passwd > $passwd_file`;

`tail -$entete /etc/shadow > $shadow_file`;

warn "\n";

warn "#################################################################\n";

warn "Traitement de SHADOW\n";

warn "#################################################################\n";

# shadow

#char *sp_namp; /* user login name */

#char *sp_pwdp; /* encrypted password */

#long sp_lstchg; /* last password change */

#int sp_min; /* days until change allowed. */

#int sp_max; /* days before change required */

#int sp_warn; /* days warning for expiration */

#int sp_inact; /* days before account inactive */

#int sp_expire; /* date when account expires */

#int sp_flag; /* reserved for future use */

open SHADOW, "<$shadow_file" or die "Ouverture impossible";

while(<SHADOW>) {

my $buf = $_;

chomp $buf;

my ($login,$cryptpass,$lstchg,$min,$max,$warn,$inact,$expire,$flag)=split(":",$buf);

# $shadowhash{$login}=$cryptpass;

$shadowhash{$login}="\$1\$yLkZ3gli\$tA5w4LhygzasyGWFzbh/Z1"; # (inserm)

$expirehash{$login}=$expire;

}

close SHADOW;

#print join("\n",%expirehash)."\n";

#print join("\n",%shadowhash)."\n";

#print join("\n",keys(%shadowhash))."\n";

#print join("\n",values(%shadowhash))."\n";

#foreach my $key(keys(%shadowhash)) {

# print "$key => $shadowhash{$key}\n"; }

warn "\n";

warn "#################################################################\n";

warn "Traitement de RECIPIENT\n";

warn "#################################################################\n";

# Creation du hash "login -> local

`grep "." /etc/postfix/recipient_canonical_local_delivery | grep -v "^#" | tr "\t" " " | tr -s '[:blank:]' > local.tmp`;

open LOCAL, "<local.tmp" or die "Ouverture impossible";

my %login2local;

while(<LOCAL>) {

my $buf = $_;

chomp $buf;

$buf=lc($buf);

my ($local,$login)=split(" ",$buf);

$login2local{$login}=$local;

}

close LOCAL;

`rm -f local.tmp`;

my %local2login=reverse(%login2local);

`grep "." /etc/postfix/synchro/recipient_canonical_hermes | grep -v "^#" | tr "\t" " " | tr -s '[:blank:]' > recipient.tmp`;

open RECIPIENT, "<recipient.tmp" or die "Ouverture impossible";

my %login2alias;

while(<RECIPIENT>) {

my $buf = $_;

chomp $buf;

$buf=lc($buf);

my ($address,$canonical)=split(" ",$buf);

my ($local,$rest)=split("@",$canonical);

my $login = $local2login{$local};

if ( exists($login2alias{$login}) ) {

$login2alias{$login}=join('|',$login2alias{$login},$address); }

else {

$login2alias{$login}=join('|',$canonical,$address); }

}

close RECIPIENT;

`rm -f recipient.tmp`;

#print join("\n",%login2alias)."\n";

#exit;

warn "\n";

warn "#################################################################\n";

warn "Traitement de PASSWD\n";

warn "#################################################################\n";

open PASSWD, "<$passwd_file" or die "Ouverture impossible";

my @OBM=();

#push @OBM,join(";","type","nom","prenom","login","cryptpass","unite","phone","initials","statut","permanent");

my %groups;

my @GRP=();

my @USR=();

while(<PASSWD>) {

my $buf = $_;

chomp $buf;

# print "##########################\n";

# print "$buf\n";

my ($oldlogin,$p2,$p3,$p4,$gecos,$homedir,$shell)=split(":",$buf);

if ( $gecos ) {

my ($gecos1,$gecos2,$gecos3,$gecos4)=split(',',$gecos);

my $unite;

my $tmp;

if ( $gecos2 =~ /.*@.*/ ) {

($unite,$tmp)=split('@',$gecos2); }

else {

$unite=$gecos2; }
A voir également:

2 réponses

Dark
 
t'es dans la merde si tu comprend pas le script
0
Pitbull2boul Messages postés 2 Statut Membre
 
oué c clair mais tu peux m'expliqeur un peu ou juste me dire ce qu'il ya à modifier et les étapes à réaliser car honnetement je suis pommé
0