У нас на работе сеть филиалов и периодически возникает задача обновить что-нибудь.
Хороший админ — ленивый админ, поэтому делать это постоянно самому как минимум противоречит религии профессии.
Исходные данные: связка CentOS 5 + samba в качестве контроллеров доменов и файловых серверов.
Все филиалы объединены в сеть с помощью openVPN.
Я приведу скрипт обновления файлов 2GIS (не сочтите за рекламу). Скрипт с легкостью может быть модифицирован для других целей.
Сразу отметаю вопросы про обновление на месте при помощи встроенной программы обновления — Windows Server у нас не используется, а давать полномочия для обновления сотрудникам офиса неправильно по причинам безопасноcти и их забывчивости.
Конечно, задачу обновлений можно выполнить и другими способами. Советую для прочтения в качестве профита.
Важное требование — везде должен быть заведен пользователь с правами записи в папку 2gis.
Пусть это будет adminuser с паролем samplepassword.
Еще одно замечание — во всех филиалах папка с 2GIS находится в шаре public.
Запускать скрипт нужно с компьютера, где есть обновленные файлы.
2gis_update.js:
Напоследок, ссылка на документацию:
Windows Script Host
Хороший админ — ленивый админ, поэтому делать это постоянно самому как минимум противоречит религии профессии.
Исходные данные: связка CentOS 5 + samba в качестве контроллеров доменов и файловых серверов.
Все филиалы объединены в сеть с помощью openVPN.
Я приведу скрипт обновления файлов 2GIS (не сочтите за рекламу). Скрипт с легкостью может быть модифицирован для других целей.
Сразу отметаю вопросы про обновление на месте при помощи встроенной программы обновления — Windows Server у нас не используется, а давать полномочия для обновления сотрудникам офиса неправильно по причинам безопасноcти и их забывчивости.
Конечно, задачу обновлений можно выполнить и другими способами. Советую для прочтения в качестве профита.
Важное требование — везде должен быть заведен пользователь с правами записи в папку 2gis.
Пусть это будет adminuser с паролем samplepassword.
Еще одно замечание — во всех филиалах папка с 2GIS находится в шаре public.
Запускать скрипт нужно с компьютера, где есть обновленные файлы.
2gis_update.js:
var WshNetwork = WScript.CreateObject("WScript.Network"); FSO = new ActiveXObject("Scripting.FileSystemObject"); var WshShell = WScript.CreateObject("WScript.Shell"); // описываем IP контроллера домена, имя домена, файл данных карты и путь на сервере. var filials = new Array(); filials.push(new Array("192.168.3.2","PERM","Data_Perm.dgdat","portable\\2gis\\3.0")); filials.push(new Array("192.168.93.2","KRASNODAR","Data_Krasnodar.dgdat")); filials.push(new Array("192.168.61.200","ROSTOV","Data_Rostov.dgdat","2gis")); filials.push(new Array("192.168.72.2","TUMEN","Data_Tyumen.dgdat","portable\\2gis")); filials.push(new Array("192.168.2.2","UFA","Data_Ufa.dgdat","portable\\2gis\\3.0")); filials.push(new Array("192.168.1.200","SAMARA","Data_Samara.dgdat","info\\2gis")); // отключаем диск, если он у нас есть try { WshNetwork.RemoveNetworkDrive ("Q:",true,false); // force, dont update profile } catch(e) { } // перебираем все филиалы for (i in filials) { // монтируем диск через SMB try { WshNetwork.MapNetworkDrive ("Q:", "\\\\"+filials[i][0]+"\\public", false, filials[i][1]+"\\adminuser", "samplepassword"); } catch(e) { WScript.Echo(filials[i][1]+" (map): "); } path2gis = "Q:\\"+filials[i][3]+"\\grym.exe"; pathmap = "Q:\\"+filials[i][3]+"\\"+filials[i][2]; // удаляем сначала старые файлы // используется такой странный способ, т.к. DeleteFile почему-то не работает try { WshShell.Run("cmd /C del /Q /F "+path2gis,0,true); WshShell.Run("cmd /C del /Q /F "+pathmap,0,true); } catch(e) { } // отслеживаем факт удаления if (FSO.FileExists(pathmap) || FSO.FileExists(path2gis)) { WScript.Echo(filials[i][1]+": can't delete"); } // копируем try { FSO.CopyFile("C:\\Program Files\\2gis\\3.0\\grym.exe", "Q:\\"+filials[i][3]+"\\",true); FSO.CopyFile("C:\\Program Files\\2gis\\3.0\\"+filials[i][2], "Q:\\"+filials[i][3]+"\\",true); } // отслеживаем ошибки копирования catch(e) { WScript.Echo(filials[i][1] + " (copy): " + e); } // отмонтируем диск WshNetwork.RemoveNetworkDrive ("Q:",true,false); }
Напоследок, ссылка на документацию:
Windows Script Host
