#!/usr/bin/perl # SCRIPT BY: ABE LOVELESS (ABE@LOVELESSCENTRAL.ORG) # DATE: SEPTEMBER 03, 2004 # COPY THIS SERVER'S SHADOW FILE TO A NEW LOCATION. THEN RUN THIS SCRIPT # AGAINST THE COPY. IF RESULTS APPEAR SUCCESSFUL, COPY THIS SCRIPT'S OUTPUT # OVER /etc/shadow, AND RUN /sbin/e-smith/signal-event post-upgrade FOLLOWED # BY /sbin/e-smith/signal-event reboot TO RE-ACTIVATE THE ORIGINAL PASSWORDS # EDIT THE PATH IN THE VARIABLES BELOW # COPY OF THIS SERVER'S SHADOW FILE $server_shadow = "/root/butch/server_shadow"; # THE BACKUP SHADOW FILE WHERE PASSWORDS ARE PULLED FROM $backup_shadow = "/root/butch/backup_shadow"; # THE OUTPUT FILE $output_file = "/root/butch/output_file"; open(SERVER, "$server_shadow"); open(OUTPUT, ">>$output_file"); my @server_split; until (eof SERVER) { my $server_input = ; @server_split = split(/:/,$server_input); $server_split[0] =~ s/^\s+//; $server_split[0] =~ s/\s+$//; $server_split[1] =~ s/^\s+//; $server_split[1] =~ s/\s+$//; open(BACKUP, "$backup_shadow"); until (eof BACKUP) { my $match = 0; my $input = ; @input_split = split(/:/,$input); $input_split[0] =~ s/^\s+//; $input_split[0] =~ s/\s+$//; $input_split[1] =~ s/^\s+//; $input_split[1] =~ s/\s+$//; if ("$input_split[0]" eq "$server_split[0]") { print "Matched: $input_split[0] \n"; $server_split[1] = $input_split[1]; } } close BACKUP; print OUTPUT join(':', @server_split); }