! ВНИМАНИЕ 10.10.2012 произведена замена скрипта FlashUpdaterAdmin.pl
! так как Adobe добавила на страницу версий линки на FlashPlayer для Windows 8
В последнее время уязвимости в компонентах Flash Player сильно осложняют жизнь системным администраторам MS Windows, а инструменты для автоматического обновления от Adobe оставляют желать лучшего. Предлагаю Вашему вниманию свои наработки по этой теме.
Для обновления используется 2 скрипта. первый написан на PERL. Периодически запускается из планировщика заданий раз в сутки на эталоннном ПК (допустим в виртуальной машине) и получает со страницы http://www.adobe.com/software/flash/about текущие доступные номера версий компонентов Flash Player. Если установленные в системе и доступные на сайте различаются, то скачивает новые версии инсталяторов и выкладывает их в общую папку, доступную всем ПК сети для чтения/выполнения. Также в этой папке создается 2 файла-семафора с номерами текущих версий компонентов. Из скрипта вызывается консольный довнлоадер wget http://gnuwin32.sourceforge.net/packages/wget.htm его необходимо положить рядом со скриптом или в доступное для %path% место.
Второй скрипт запускается из GPO стартап скрипта компьютеров и если номер версии в файле-семафоре не совпадает с установленными в системе версиями компонентов Flash Player то запускает тихую установку/обновление. Скрипт ведет лог установки/обновления в текстовый файл %computername%.log
Первый скрипт:
==========
язык программирования perl http://www.activestate.com/activeperl
FlashUpdaterAdmin.pl
Код:
# Flash Player Updater Administrator
# (c) 10.03.2011 ccccp
# v.0.3
# v.0.4
# v.0.5 02.06.2011 adobe change source url
# http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_32bit.exe
# v.0.6 15.06.2012 adobe change source url
# http://fpdownload.macromedia.com/get/flashplayer/pdc/11.3.300.257/install_flash_player_ax.exe
use LWP::Simple;
use Win32::TieRegistry (Delimiter=>"/");
$DeploySharePath='\\\\ONOS-SDC01\\share\\install\\FlashPlayer';
$Log='FlashUpdater.log';
system ('cmd /c echo %DATE% %TIME% === START === >> '.$Log);
my $fpkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayer/';
$fpVersion = $Registry->{$fpkey}->{'CurrentVersion'};
my $fppkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayerPlugin/';
$fppVersion = $Registry->{$fppkey}->{'Version'};
my $fpOCXkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayerActiveX/';
$fpOCXVersion = $Registry->{$fpOCXkey}->{'Version'};
$_ = get('http://www.adobe.com/software/flash/about');
$count=0;
while ( m{<td>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)}g)
{ $text = $1;
if ($count == 0) { $CurrrentfpOCXVersion=$text; }
if ($count == 2) { $CurrrentfppVersion=$text; }
$count++;
}
print "Current FlashPlayer: $CurrrentfpOCXVersion\n";
print "Current FlashPlayerOCX: $CurrrentfpOCXVersion\n";
print "Current FlashPlayerPlugin: $CurrrentfppVersion\n";
# replace "," to "."
$fpVersion =~ s/\,/\./g;
$fppVersion =~ s/\,/\./g;
$fpOCXVersion =~ s/\,/\./g;
print "Installed FlashPlayer: $fpVersion\n";
print "Installed FlashPlayerOCX: $fpOCXVersion\n";
print "Installed FlashPlayerPlugin: $fppVersion\n";
if (not $CurrrentfppVersion eq $fppVersion) {
print "Downloading install_flash_player.exe\n";
system ('cmd /c echo %DATE% %TIME% FlashPlayer: '.$fppVersion.' -=- '.$CurrrentfppVersion.' >>'.$Log);
# system ('wget --output-document=install_flash_player.exe -m -np -nd http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_32bit.exe');
system ('wget --output-document=install_flash_player.exe -m -np -nd http://fpdownload.macromedia.com/get/flashplayer/pdc/'.$CurrrentfppVersion.'/install_flash_player.exe');
print "Installing install_flash_player.exe\n";
system ('install_flash_player.exe /install');
system ('cmd /c copy install_flash_player.exe '.$DeploySharePath.' /y');
}
if (not $CurrrentfpOCXVersion eq $fpOCXVersion) {
system ('cmd /c echo %DATE% %TIME% FlashPlayerOCX: '.$fpOCXVersion.' -=- '.$CurrrentfpOCXVersion.' >>'.$Log);
print "Downloading install_flash_player_ax.exe\n";
# system ('wget --output-document=install_flash_player_ax.exe -m -np -nd http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax_32bit.exe');
system ('wget --output-document=install_flash_player_ax.exe -m -np -nd http://fpdownload.macromedia.com/get/flashplayer/pdc/'.$CurrrentfpOCXVersion.'/install_flash_player_ax.exe');
print "Installing install_flash_player_ax.exe\n";
system ('install_flash_player_ax.exe /install');
system ('cmd /c copy install_flash_player_ax.exe '.$DeploySharePath.' /y');
}
my $fpkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayer/';
$fpVersionNEW = $Registry->{$fpkeyNEW}->{'CurrentVersion'};
my $fppkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayerPlugin/';
$fppVersionNEW = $Registry->{$fppkeyNEW}->{'Version'};
my $fpOCXkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayerActiveX/';
$fpOCXVersionNEW = $Registry->{$fpOCXkeyNEW}->{'Version'};
print "Installed FlashPlayerNEW: $fpVersionNEW\n";
print "Installed FlashPlayerOCXNEW: $fpOCXVersionNEW\n";
print "Installed FlashPlayerPluginNEW: $fppVersionNEW\n";
system ('cmd /c echo '.$fppVersionNEW.' >'.$DeploySharePath.'\FlashPlayerLatest');
system ('cmd /c echo '.$fpOCXVersionNEW.' >'.$DeploySharePath.'\FlashPlayerOCXLatest');
system ('cmd /c echo %DATE% %TIME% === STOP === >>'.$Log);
! так как Adobe добавила на страницу версий линки на FlashPlayer для Windows 8
В последнее время уязвимости в компонентах Flash Player сильно осложняют жизнь системным администраторам MS Windows, а инструменты для автоматического обновления от Adobe оставляют желать лучшего. Предлагаю Вашему вниманию свои наработки по этой теме.
Для обновления используется 2 скрипта. первый написан на PERL. Периодически запускается из планировщика заданий раз в сутки на эталоннном ПК (допустим в виртуальной машине) и получает со страницы http://www.adobe.com/software/flash/about текущие доступные номера версий компонентов Flash Player. Если установленные в системе и доступные на сайте различаются, то скачивает новые версии инсталяторов и выкладывает их в общую папку, доступную всем ПК сети для чтения/выполнения. Также в этой папке создается 2 файла-семафора с номерами текущих версий компонентов. Из скрипта вызывается консольный довнлоадер wget http://gnuwin32.sourceforge.net/packages/wget.htm его необходимо положить рядом со скриптом или в доступное для %path% место.
Второй скрипт запускается из GPO стартап скрипта компьютеров и если номер версии в файле-семафоре не совпадает с установленными в системе версиями компонентов Flash Player то запускает тихую установку/обновление. Скрипт ведет лог установки/обновления в текстовый файл %computername%.log
Первый скрипт:
==========
язык программирования perl http://www.activestate.com/activeperl
FlashUpdaterAdmin.pl
Код:
# Flash Player Updater Administrator
# (c) 10.03.2011 ccccp
# v.0.3
# v.0.4
# v.0.5 02.06.2011 adobe change source url
# http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_32bit.exe
# v.0.6 15.06.2012 adobe change source url
# http://fpdownload.macromedia.com/get/flashplayer/pdc/11.3.300.257/install_flash_player_ax.exe
use LWP::Simple;
use Win32::TieRegistry (Delimiter=>"/");
$DeploySharePath='\\\\ONOS-SDC01\\share\\install\\FlashPlayer';
$Log='FlashUpdater.log';
system ('cmd /c echo %DATE% %TIME% === START === >> '.$Log);
my $fpkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayer/';
$fpVersion = $Registry->{$fpkey}->{'CurrentVersion'};
my $fppkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayerPlugin/';
$fppVersion = $Registry->{$fppkey}->{'Version'};
my $fpOCXkey = 'LMachine/SOFTWARE/Macromedia/FlashPlayerActiveX/';
$fpOCXVersion = $Registry->{$fpOCXkey}->{'Version'};
$_ = get('http://www.adobe.com/software/flash/about');
$count=0;
while ( m{<td>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)}g)
{ $text = $1;
if ($count == 0) { $CurrrentfpOCXVersion=$text; }
if ($count == 2) { $CurrrentfppVersion=$text; }
$count++;
}
print "Current FlashPlayer: $CurrrentfpOCXVersion\n";
print "Current FlashPlayerOCX: $CurrrentfpOCXVersion\n";
print "Current FlashPlayerPlugin: $CurrrentfppVersion\n";
# replace "," to "."
$fpVersion =~ s/\,/\./g;
$fppVersion =~ s/\,/\./g;
$fpOCXVersion =~ s/\,/\./g;
print "Installed FlashPlayer: $fpVersion\n";
print "Installed FlashPlayerOCX: $fpOCXVersion\n";
print "Installed FlashPlayerPlugin: $fppVersion\n";
if (not $CurrrentfppVersion eq $fppVersion) {
print "Downloading install_flash_player.exe\n";
system ('cmd /c echo %DATE% %TIME% FlashPlayer: '.$fppVersion.' -=- '.$CurrrentfppVersion.' >>'.$Log);
# system ('wget --output-document=install_flash_player.exe -m -np -nd http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_32bit.exe');
system ('wget --output-document=install_flash_player.exe -m -np -nd http://fpdownload.macromedia.com/get/flashplayer/pdc/'.$CurrrentfppVersion.'/install_flash_player.exe');
print "Installing install_flash_player.exe\n";
system ('install_flash_player.exe /install');
system ('cmd /c copy install_flash_player.exe '.$DeploySharePath.' /y');
}
if (not $CurrrentfpOCXVersion eq $fpOCXVersion) {
system ('cmd /c echo %DATE% %TIME% FlashPlayerOCX: '.$fpOCXVersion.' -=- '.$CurrrentfpOCXVersion.' >>'.$Log);
print "Downloading install_flash_player_ax.exe\n";
# system ('wget --output-document=install_flash_player_ax.exe -m -np -nd http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax_32bit.exe');
system ('wget --output-document=install_flash_player_ax.exe -m -np -nd http://fpdownload.macromedia.com/get/flashplayer/pdc/'.$CurrrentfpOCXVersion.'/install_flash_player_ax.exe');
print "Installing install_flash_player_ax.exe\n";
system ('install_flash_player_ax.exe /install');
system ('cmd /c copy install_flash_player_ax.exe '.$DeploySharePath.' /y');
}
my $fpkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayer/';
$fpVersionNEW = $Registry->{$fpkeyNEW}->{'CurrentVersion'};
my $fppkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayerPlugin/';
$fppVersionNEW = $Registry->{$fppkeyNEW}->{'Version'};
my $fpOCXkeyNEW = 'LMachine/SOFTWARE/Macromedia/FlashPlayerActiveX/';
$fpOCXVersionNEW = $Registry->{$fpOCXkeyNEW}->{'Version'};
print "Installed FlashPlayerNEW: $fpVersionNEW\n";
print "Installed FlashPlayerOCXNEW: $fpOCXVersionNEW\n";
print "Installed FlashPlayerPluginNEW: $fppVersionNEW\n";
system ('cmd /c echo '.$fppVersionNEW.' >'.$DeploySharePath.'\FlashPlayerLatest');
system ('cmd /c echo '.$fpOCXVersionNEW.' >'.$DeploySharePath.'\FlashPlayerOCXLatest');
system ('cmd /c echo %DATE% %TIME% === STOP === >>'.$Log);