Subversion Repositories sysadmin_scripts

Rev

Rev 182 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 182 Rev 184
Line 40... Line 40...
40
my $remoteCommand = 'chmod 644 /etc/certificates/* && chown root:root /etc/certificates/* && service apache2 reload';
40
my $remoteCommand = 'chmod 644 /etc/certificates/* && chown root:root /etc/certificates/* && service apache2 reload';
41
my $hostname = shift;
41
my $hostname = shift;
42
my $certname = shift;
42
my $certname = shift;
43
 
43
 
44
die "Usage: $0 hostname [certname]\n" unless $hostname;
44
die "Usage: $0 hostname [certname]\n" unless $hostname;
45
$certname .= '*' unless $certname;
-
 
46
 
45
 
-
 
46
# get list of all crt files (without the extension) into @temp
-
 
47
my @temp;
-
 
48
if ( $certname ) {
-
 
49
   die "Can not find $certname ending in .crt or .key\n" unless -f "$serverCertDir$certname.crt" && -f "$serverCertDir$certname.key";
-
 
50
   push @temp, "$serverCertDir$certname";
-
 
51
} else {
-
 
52
   opendir my $dh, $serverCertDir or die "Can not find cert directory $certDir: $!\n";
-
 
53
   # get all matching cert files
-
 
54
   my @temp = grep { /^$certname.*\.crt/ } readdir( $dh );
-
 
55
   closedir $dh;
-
 
56
   for ( my $i = 0; $i < @temp; $i++ ) {
-
 
57
      $temp[$i] =~ s/crt$//;
-
 
58
   }
-
 
59
}
-
 
60
 
-
 
61
# make pem, create a list of all files to copy
-
 
62
my $filesToCopy;
-
 
63
foreach my $file ( @temp ) {
-
 
64
   die "Can not find $key file $file\n" unless -e "$file\.key";
-
 
65
   `cat $file.crt $file.key > $file.pem`;
-
 
66
   $filesToCopy .= "$file.crt";
-
 
67
   $filesToCopy .= "$file.key";
-
 
68
   $filesToCopy .= "$file.pem";
-
 
69
}
-
 
70
 
-
 
71
# ensure target directory exists on $hostname
-
 
72
`ssh $hostname 'mkdir -p /etc/certificates`;
-
 
73
# copy the files
47
`scp $serverCertDir$certname.crt $serverCertDir$certname.key $hostname:$targetDir`;
74
`scp $filesToCopy $hostname:$targetDir`;
-
 
75
# set permissions and reload services
48
`ssh $hostname '$remoteCommand'`;
76
`ssh $hostname '$remoteCommand'`;
49
 
77
 
50
print "$hostname updated and web server restarted\n";
78
print "$hostname updated and web server restarted\n";
51
 
79
 
52
1;
80
1;