mirror of
				https://github.com/PowerShell/Win32-OpenSSH.git
				synced 2025-11-03 21:24:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
#!/usr/bin/perl
 | 
						|
#
 | 
						|
# fixprogs  - run through the list of entropy commands and
 | 
						|
#             score out the losers
 | 
						|
#
 | 
						|
 | 
						|
$entscale = 50; # divisor for optional entropy measurement
 | 
						|
 | 
						|
sub usage {
 | 
						|
  return("Usage: $0 <command file>\n");
 | 
						|
}
 | 
						|
 | 
						|
if (($#ARGV == -1) || ($#ARGV>1)) {
 | 
						|
  die(&usage);
 | 
						|
}
 | 
						|
 | 
						|
# 'undocumented' option - run ent (in second param) on the output
 | 
						|
if ($#ARGV==1) {
 | 
						|
  $entcmd=$ARGV[1]
 | 
						|
} else {
 | 
						|
  $entcmd = ""
 | 
						|
};
 | 
						|
 | 
						|
$infilename = $ARGV[0];
 | 
						|
 | 
						|
if (!open(IN, "<".$infilename)) {
 | 
						|
  die("Couldn't open input file");
 | 
						|
}
 | 
						|
$outfilename=$infilename.".out";
 | 
						|
if (!open(OUT, ">$outfilename")) {
 | 
						|
  die("Couldn't open output file $outfilename");
 | 
						|
}
 | 
						|
@infile=<IN>;
 | 
						|
 | 
						|
select(OUT); $|=1; select(STDOUT);
 | 
						|
 | 
						|
foreach (@infile) {
 | 
						|
  if (/^\s*\#/ || /^\s*$/) {
 | 
						|
    print OUT;
 | 
						|
    next;
 | 
						|
  }
 | 
						|
  ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o;
 | 
						|
  @args = split(/ /, $cmd);
 | 
						|
   if (! ($pid = fork())) {
 | 
						|
     # child
 | 
						|
     close STDIN; close STDOUT; close STDERR;
 | 
						|
     open (STDIN,  "</dev/null");
 | 
						|
     open (STDOUT, ">/dev/null");
 | 
						|
     open (STDERR, ">/dev/null");
 | 
						|
     exec $path @args;
 | 
						|
     exit 1; # shouldn't be here
 | 
						|
   }
 | 
						|
   # parent
 | 
						|
   waitpid ($pid, 0); $ret=$? >> 8;
 | 
						|
 | 
						|
  if ($ret != 0) {
 | 
						|
    $path = "undef";
 | 
						|
  } else {
 | 
						|
    if ($entcmd ne "") {
 | 
						|
      # now try to run ent on the command
 | 
						|
      $mostargs=join(" ", splice(@args,1));
 | 
						|
      print "Evaluating '$path $mostargs'\n";
 | 
						|
      @ent = qx{$path $mostargs | $entcmd -b -t};
 | 
						|
      @ent = grep(/^1,/, @ent);
 | 
						|
      ($null, $null, $rate) = split(/,/, $ent[0]);
 | 
						|
      $est = $rate / $entscale;		# scale the estimate back
 | 
						|
    }
 | 
						|
  }
 | 
						|
  print OUT "\"$cmd\" $path $est\n";
 | 
						|
}
 | 
						|
 | 
						|
close(IN);
 |