У нас на работе сеть филиалов и периодически возникает задача обновить что-нибудь.
Хороший админ — ленивый админ, поэтому делать это постоянно самому как минимум противоречит религии профессии.
Исходные данные: связка 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