#!/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>;
	@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 = <BACKUP>;
		@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);
}