#!/usr/bin/perl # pleskpreinstall8 # version 0.41 (12-14-06) # Written by: Jonathan Kelly # - # Determines current redhat and plesk versions and downloads the necessary files for the upgrade from sw-soft # blows up tomcat entries in the database (YAY!) # get the plesk and redhat versions $versionstring = `cat /usr/local/psa/version`; ($pleskversionstring, $crap, $rhversion, $pleskbuild) = split( / /, $versionstring ); ($pleskmajor, $pleskminor, $plesksub) = split( /\./, $pleskversionstring ); $pleskversion = $pleskmajor . "." . $pleskminor; $pleskstring = $pleskversion . $rhversion; # no Plesk 8 for RHEL2.1 if ( $rhversion eq "el2.1" ) { die "FATAL ERROR: There is no Plesk 8 for RHEL2.1... use pleskpreinstall, not pleskpreinstall8"; } # these are the paths to the tarballs for the various versions $pleskpath{ '7.0el3' } = 'ftp://anonymous:anonymous@download1.sw-soft.com/Plesk/Plesk7/RedHatEL3/psa-7.0.4-rhel3.build040723.13.i586.rpm.tar.gz'; $pleskpath{ '7.1el3' } = 'ftp://anonymous:anonymous@download1.sw-soft.com/Plesk/Plesk7.1/RHEL3.0/psa-7.1.7-rhel3.build71050228.12.i586.rpm.tar.gz'; $pleskpath{ '7.5el3' } = 'ftp://anonymous:anonymous@download1.sw-soft.com/Plesk/Plesk7.5/RedHatEL3.0/psa-7.5.4-rhel3.build75060617.18.i586.rpm.tar.gz'; $pleskpath{ '7.5el4' } = 'ftp://anonymous:anonymous@download1.sw-soft.com/Plesk/Plesk7.5/RedHatEL4.0/psa-7.5.4-rhel4.build75060617.18.i586.rpm.tar.gz'; $pleskpath{ '8.0el3' } = 'ftp://anonymous:walh@download1.sw-soft.com/Plesk/Plesk8.0/RedHatEL3/psa-8.0.1-rhel3.build80061203.19.i586.rpm.tar.gz'; $pleskpath{ '8.0el4' } = 'ftp://anonymous:walh@download1.sw-soft.com/Plesk/Plesk8.0/RedHatEL4/psa-8.0.1-rhel4.build80061203.19.i586.rpm.tar.gz'; $pleskpath{ '8.1el3' } = 'ftp://anonymous:walh@download1.sw-soft.com/Plesk/Plesk8.1/RedHatEL3/psa-8.1.1-rhel3.build81070322.16.i586.rpm.tar.gz'; $pleskpath{ '8.1el4' } = 'ftp://anonymous:walh@download1.sw-soft.com/Plesk/Plesk8.1/RedHatEL4/psa-8.1.1-rhel4.build81070322.16.i586.rpm.tar.gz'; # make the appropriate directories and download the appropriate tarballs system( "mkdir /home/rack/pleskupgrade" ) unless ( -e "/home/rack/pleskupgrade" ); if ( $pleskmajor eq "6" ) { system( "mkdir /home/rack/pleskupgrade/7.0.4/" ) unless ( -e "/home/rack/pleskupgrade/7.0.4/" ); chdir( "/home/rack/pleskupgrade/7.0.4/" ); $getthisnow = "7.0" . $rhversion; system( "wget $pleskpath{ $getthisnow }" ); system( "tar -zxvf *.gz" ); system( "rm -f *.gz" ); } if ( $pleskversion eq "7.0" || $pleskmajor eq "6" ) { system( "mkdir /home/rack/pleskupgrade/7.1.7/" ) unless ( -e "mkdir /home/rack/pleskupgrade/7.1.7/" ); chdir( "/home/rack/pleskupgrade/7.1.7/" ); $getthisnow = "7.1" . $rhversion; system( "wget $pleskpath{ $getthisnow }" ); system( "tar -zxvf *.gz" ); system( "rm -f *.gz" ); } if ( $pleskversion eq "7.5" || $pleskversion eq "7.1" || $pleskversion eq "7.0" || $pleskmajor eq "6") { if ( $pleskversion ne "7.5" || $plesksub ne "4" ) { system( "mkdir /home/rack/pleskupgrade/7.5.4/" ) unless ( -e "mkdir /home/rack/pleskupgrade/7.5.4/" ); chdir( "/home/rack/pleskupgrade/7.5.4/" ); $getthisnow = "7.5" . $rhversion; system( "wget $pleskpath{ $getthisnow }" ); system( "tar -zxvf *.gz" ); system( "rm -f *.gz" ); } system( "mkdir /home/rack/pleskupgrade/8.0.1/" ) unless ( -e "mkdir /home/rack/pleskupgrade/8.0.1/" ); chdir( "/home/rack/pleskupgrade/8.0.1/" ); $getthisnow = "8.0" . $rhversion; system( "wget $pleskpath{ $getthisnow }" ); system( "tar -zxvf *.gz" ); system( "rm -f *.gz" ); system( "mkdir /home/rack/pleskupgrade/8.1/" ) unless ( -e "mkdir /home/rack/pleskupgrade/8.1/" ); chdir( "/home/rack/pleskupgrade/8.1/" ); $getthisnow = "8.1" . $rhversion; system( "wget $pleskpath{ $getthisnow }" ); system( "tar -zxvf *.gz" ); system( "rm -f *.gz" ); } else { die "z0mg unsupported plesk version $pleskversion!!!!!!!!!!!!\n"; } # back that sql database up chdir( "/home/rack/pleskupgrade/" ); system( "mysqldump --opt -Q -A -uadmin -p`cat /etc/psa/.psa.shadow` >mysqlbak$pleskversion" ); # back up other stuff system( "cp -auf /etc/my.cnf ." ); system( "cp -auf /etc/psa/psa.key ." ); system( "cp -auf /etc/rc.d/init.d/mysql* ." ); system( "cp -auf /etc/php.ini ." ); system( "cp -auf /etc/httpd/conf/httpd.conf ." ); system( "cp -auf /etc/httpd/conf.d/ssl.conf ." ); # blow up any tomcat entries to save us from the evil dual tomcat error system( "mysql -u admin -p`cat /etc/psa/.psa.shadow` psa -e \"delete from Components where name like \'\%tomcat\%\'\"" ); # make sure the mysqld symlink is there system( "ln -s /etc/init.d/mysql /etc/init.d/mysqld" ) unless ( -e "/etc/init.d/mysqld" ); print( "Plesk Version: $pleskversionstring\n" ); print( "Redhat Version: $rhversion\n" ); print( "SELinux: " ); system( "getenforce" ); system( "ping -c 1 `hostname`|grep icmp_seq=0")