Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматическое обновление Flash Player'а в домене

Автор: ccccp
Дата сообщения: 23.06.2011 06:14
! ВНИМАНИЕ 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);
Автор: knzknzknz
Дата сообщения: 23.06.2011 06:18
добро.
Автор: ATHeiSt_HAX
Дата сообщения: 23.06.2011 06:21
Ух ты, нада попробовать! А то уже устало успокаивать юзеров при вылезании обновления.
Автор: tankistua
Дата сообщения: 23.06.2011 08:26
ну и зачем так извращаться ?

качаешь отсюда
http://www.adobe.com/products/flashplayer/fp_distribution3.html

msi-айники
http://www.adobe.com/go/full_flashplayer_win_msi
http://www.adobe.com/go/full_flashplayer_win_pl_msi

ну и ставишь
Автор: ccccp
Дата сообщения: 23.06.2011 09:46
tankistua
так речь не об одноразовой установке а об автоматизации процесса скачивания и установки/обновления EXEшников по событию "ой, а на сайте то обновилось"
Автор: itchyitch
Дата сообщения: 23.06.2011 09:46
tankistua так скрипт этим и занимается в автоматическом режиме, отслеживая изменение версии плагина и обновляя при необходимости
Автор: qwertEHOK
Дата сообщения: 08.07.2011 18:15
пара вопросов

1) для запуска pl файлов достаточно скачать и установить этот активныйперл?
2) пути в реестре для любой венды?
3) насколько быстро проходит обновление для пользователей?

а есть у вас что-то еще что обновляется автоматически?
Автор: attaattaatta
Дата сообщения: 09.07.2011 10:13
Волью свои 5 кубиков на autoit

На серваке с доступом в инет (на сайт адоба):


Код: #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\100.ico
#AutoIt3Wrapper_Outfile_x64=ADOBE_UPD.exe
#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt("TrayIconHide", 1)
Opt("TrayAutoPause", 0)
FileDelete ("\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\Download.done")
Local $hDownload = InetGet("http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player.exe", "\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\install_flash_player_32.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player_ax.exe", "\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\install_flash_player_ax_32.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player.exe", "\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\install_flash_player_64.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player_ax.exe", "\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\install_flash_player_ax_64.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.
FileWrite ("\\aptekar\DFS\REMOTE\Updates\Adobe\Flash\Download.done","")
Автор: ccccp
Дата сообщения: 11.07.2011 05:12
qwertEHOK

Цитата:
1) для запуска pl файлов достаточно скачать и установить этот активныйперл?
2) пути в реестре для любой венды?
3) насколько быстро проходит обновление для пользователей?

а есть у вас что-то еще что обновляется автоматически?


1. Да
2. Разрабатывалось для x86/x64 платформ, тестировалось на XP/2003/2008/2008r2/w7 x86/x64.
3. Гораздо быстрее установки через пакеты GPO. 5-10 секунд в зависимости от производительности ПК.

На стадии тестирования находится подобный набор скриптов для обновление Java.

Также разработано удаление различных версий Acrobat Reader (тех, что нашлись на ПК в сети) http://pastebin.com/GegWT1q6 и замены его на бесплатный PDF X-change viewer. http://www.pdf-software.eu/
Автор: qwertEHOK
Дата сообщения: 11.07.2011 10:29
ccccp
+100500

очень полезные штуки.

еще бы 7zip обновлять
Автор: ccccp
Дата сообщения: 15.07.2011 05:32
!!! на 13.02.2013 скрипты обновления JAVA потеряли актуальность с выходом 1.7 версии и требуют доработки.... !!!

на основании статьи http://amatrosov.blogspot.com/2011/02/java.html задумался об обновлени и
как обещал скрипты для обновления Java в домене.

Обращаю Ваше внимание на то,что во втором скрипте есть параметр $install с помощью него можно управлять установкой java на клиенты, у которых java изначально не установлена (1- устанавливать, 0-не устанавливать).

Первый скрипт:
==========
язык программирования perl http://www.activestate.com/activeperl
JavaUpdaterAdmin.pl


Код: # JRE Updater Administrator
# v 0.2 05.07.2011
# (c) pc

use LWP::Simple;
use Win32::TieRegistry (Delimiter=>"/");

$DeploySharePath='\\\\SDC01\\share\\install\\Java';
$Log='JavaUpdater.log';

system ('cmd /c echo %DATE% %TIME% === START === >> '.$Log);

my $javakey = 'LMachine/SOFTWARE/JavaSoft/Java Runtime Environment/';
$JavaInstalled = $Registry->{$javakey}->{'Java6FamilyVersion'};

$_ = get('http://www.java.com/applet/JreCurrentVersion2.txt');
chomp;
$JavaCurrent = $_;

$JavaCurrent =~ s/^\s+//;
$JavaCurrent =~ s/\s+$//;

print "Current Java version: $JavaCurrent\n";
print "Installed Java version: $JavaInstalled\n";

if (not $JavaCurrent eq $JavaInstalled) {
print "Downloading new java installer\n";
system ('cmd /c echo %DATE% %TIME% Java: '.$JavaInstalled.' != '.$JavaCurrent.' >>'.$Log);
system ('wget --output-document=java_install.exe -m -nd -np http://javadl.sun.com/webapps/download/AutoDL?BundleId=49024');
print "Installing new java\n";
system ('java_install.exe /s /v"/qn IEXPLORER=1 MOZILLA=1 REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0"');
system ('cmd /c copy java_install.exe '.$DeploySharePath.' /y');
system ('REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v SunJavaUpdateSched /f');
print "Installed Java NEW: $JavaInstalledNEW\n";
system ('cmd /c echo '.$JavaCurrent.' >'.$DeploySharePath.'\JavaLatest');
my $javakeyNEW = 'LMachine/SOFTWARE/JavaSoft/Java Runtime Environment/';
$JavaInstalledNEW = $Registry->{$javakeyNEW}->{'Java6FamilyVersion'};
print "Installed Java version NEW: $JavaInstalledNEW\n";
}


system ('cmd /c echo %DATE% %TIME% === STOP === >>'.$Log);
Автор: ATHeiSt_HAX
Дата сообщения: 15.07.2011 06:13
По поводу обновления 7зип - а смысл? Он не обновлялся чёрт знает сколько времени. А на альфы не вижу смысла обновлять.
Автор: SerzhAntz
Дата сообщения: 21.10.2011 17:16

Цитата:
Волью свои 5 кубиков на autoit

К сожалению, если flash не установлен на компьютере, то обычная установка не происходит (теперь происходит )
К тому же вышла 11-я версия, а по ссылкам качает 10-ю. Ну и Adobe выпустил 64-х битную версию.
Поэтому переделал скрипты для autoit, добавил проверку версии в реестре:

Код:
Opt("TrayIconHide", 1)
FileDelete ("\\fs\SOFTWARE\Internet\FlashPlayer\Download.done")
Local $hDownload = InetGet("http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_32bit.exe", "\\fs\SOFTWARE\Internet\FlashPlayer\install_flash_player_32bit.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_64bit.exe", "\\fs\SOFTWARE\Internet\FlashPlayer\install_flash_player_64bit.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax_32bit.exe", "\\fs\SOFTWARE\Internet\FlashPlayer\install_flash_player_ax_32bit.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

Local $hDownload = InetGet("http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax_64bit.exe", "\\fs\SOFTWARE\Internet\FlashPlayer\install_flash_player_ax_64bit.exe", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.

FileWrite ("\\fs\SOFTWARE\Internet\FlashPlayer\Download.done","")
Автор: attaattaatta
Дата сообщения: 13.11.2011 06:51

Цитата:
К тому же вышла 11-я версия, а по ссылкам качает 10-ю

Поправил
Автор: tankistua
Дата сообщения: 13.11.2011 07:56
очень удобные скрипты - главное пароль админский не забыть вписа в него:)

я не силен в виндах, но разве через gpo в домене нельзя софт ставить? А на мси-айники я дал ссылку, потому как оно для винды родное
Автор: attaattaatta
Дата сообщения: 13.11.2011 08:21

Цитата:
я не силен в виндах, но разве через gpo в домене нельзя софт ставить?

Да всяко разно можно, кто как привык, тот на то и горазд =) Можно через msi пакеты, можно через Adobe Server, хоть через WSUS можно, главное чтобы головной боли меньше было. =)

ПЫСЫ - чтобы пароль админа не палить в скрипте, во-первых используем обфускатор autoit (#AutoIt3Wrapper_Run_Obfuscator=y) и утилиты по типу AdmiLink
Автор: SerzhAntz
Дата сообщения: 19.06.2012 16:50
поправьте ссылки в скриптах:
http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_active_x.exe
http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_plugin.exe

Найти можно здесь: http://www.adobe.com/products/flashplayer/distribution3.html
Автор: attaattaatta
Дата сообщения: 20.06.2012 06:33
SerzhAntz
Поправил. Спасибо.
Автор: ominnos1
Дата сообщения: 24.07.2012 08:00
Почему при запуске скрипта FlashUpdaterAdmin.pl от ccccp не происходит загрузка файлов flash плейера в сетевую папку: DeploySharePath='\\\\mycomp\\share\\soft\\FlashPlayer';
При запуске скрипта выдается предупреждение "CMD.EXE не поддерживает пути UNC в качестве текущей папки." В итоге файлы flash плейера загружаются, но только в папку где лежит сам скрипт, а по указанному пути создаются только два файла с метками версий flash плейера.
Автор: attaattaatta
Дата сообщения: 24.07.2012 08:10
ominnos1
Ты же сам и ответил на свой вопрос, у тебя при запуске скрипта в качестве текщей папки сетевой путь (\\blablabla\bla), измени в скрипте так, чтобы рабочая директория была местной.
Автор: ccccp
Дата сообщения: 24.07.2012 09:04
ominnos1
сприт действительно скачивает дистрибутив плеера в папку из которой запущен. Затем командой copy копирует его по пути, указанному в переменной $DeploySharePath

вот вызов:
system ('cmd /c copy install_flash_player_ax.exe '.$DeploySharePath.' /y');
Автор: melnikdima
Дата сообщения: 11.12.2012 22:03
С FlashUpdaterAdmin.pl проблем не возникло прописал на сервере, раз в сутки проверяет обновление...

а вот с FlashUpdaterClient.kix возникли проблемы.

Установил сценаций на автозагрузку компьютера в GPO

имя KIX32.EXE
параметр \\имя домена\sysvol\имя домена\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Scripts\Startup\FlashUpdaterClient.kix

KIX32.EXE лежит в папке, где и FlashUpdaterClient.kix

GPO обновилось на пк в сети.

При включение ПК на сервере вижу что выкичают FlashPlayerLatest и FlashPlayerOCXLatest
Но не обновляются. в log файлы не создаются
на папку log дал компьютерам сети полные права!!!

Подскажите куда рыть?

Автор: ccccp
Дата сообщения: 13.12.2012 04:41
попробуйте следующий сценарий:
разместите файлы kix32.exe и FlashUpdaterClient.kix
в той же папке, в которую качает дистрибутивы FlashUpdaterAdmin.pl
и которая прописана в переменной $FlashDeployDir внутри файла FlashUpdaterClient.kix
допустим это \\server\share\flashupdate\

затем создайте коммандный файл FlashPlayerUpdate.cmd
содержащий вызов
\\server\share\flashupdate\kix32.exe \\server\share\flashupdate\FlashUpdaterClient.kix

откройте папку политики
\\имя домена\sysvol\имя домена\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Scripts\Startup
и скопируйте туда этот командный файл, затем укажите его в качестве стартап скрипта

проверьте есть ли у группы Domain Computers права на чтения/выполнение из папки
\server\share\flashupdate\

попробуйте с правами локального администратора на любом ПК выполнить скрипт
\\имя домена\sysvol\имя домена\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Scripts\Startup\FlashPlayerUpdate.cmd

посмотрите вывод скрипта в STDOUT (экран)

проверьте применяется ли политика на объекты типа компьютер командами
gpresult или rsop.msc

проверьте в свойствах политики на вкладке безопасность установлены ли права на чтение и применение для группы Domain Computers

проверьте контейнер к которому прилинкована политика, это должен быть контейнер в котором размещены объекты типа Computer Вашего домена.

проверьте в свойствах политики что применяется только раздел отсносящийся к компьютеру а применение пользовательской части отключено...

удачи.
Автор: vvnet
Дата сообщения: 07.02.2013 14:40
Спасибо CCCP за обновлялку Flash.

Есть вопрос по java. Как определить тип ОС (х86\х64) и как быть если стоит Java 6 а нужна 7-я.
Нужно вначале удалять 6-ю, иначе будет две версии в системе. ?
Автор: ccccp
Дата сообщения: 11.02.2013 05:18
Тип ОС можно определить например по наличию переменой окружения %PorgramFiles(x86)%

Установщик java 7 _не_ удаляет предыдущую версию Java 6 и да, после установки будет две версии Java 6 и 7

PS Скрипты обновления java из этой темы уже не актуальны и требуют доработки.

Страницы: 1

Предыдущая тема: Про Ip-адрес


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.