Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

Обновление 2ГИС в локальной группе (1-я часть)

08.08.2012 13:22 | Просмотров: 3073 | Доход: 90.84 руб. | Комментариев: 20
[Администрирование ] 
Рейтинг: 3.67/3

 Начну  пожалуй с небольшой предыстории: в общем работаю я в одной конторе, с общей сложностью в 60 компов и 3 сервака, но при этом у нас до сих пор нету домена, то есть просто напросто предыдущим админам было влом поднять его, они внесли всех в одну рабочую группу и довольны этим. Так вот совсем недавно у пользователей возникла острая необходимость в обновлении Дубльгиса (что-то наподобие сити навигатора, только интереснее), раньше они могли это делать самостоятельно, просто кликнув в самой программе на «обновить» и она обновляла, но после смены модуля программы это стало невозможным. Просто разработчики решили идти в ногу со временем, сделали клиент-серверную версию, теперь клиент должен был соединяться с серваком, тот в свою очередь через apache цепляться уже к серверам компании, на которых расположены сами обновления. Так вот дело все заключалось в том, что их версии были предусмотрены для доменных сетей, но никак не для локальных групп. Тогда вот пришлось изобрести «велосипед»:

1)                           Настраиваем один из клиентов на обновления из интернета (лучше пусть это будет компьютер системного администратора, далее «сервер»), указав какие необходимо города обновить. Создаем общий сетевой ресурс, в который будут копироваться базы городов (пусть это будет Update_Gis);

2)                           Создаем 2 bat’ника, один будет копировать обновления с компьютера, который постоянно обновляет базы городов (Update2GIS), а другой будет  делать это на стороне клиентов, т.е выкачивать базы на машины (Update);

3)                           На компьютере-сервере создаем «назначенное задание», которое будет выполняться раз в месяц, с указанием выполнения скрипта Update2GIS;

4)                           На все компьютеры-клиенты копируем файлик скрипты Update, можно в любую папку, но лучше пусть это будет папка с самим ГИСом;

5)                           На компьютерах-клиентах создаем «назначенное задание», которое будет выполняться на день позже, чем на компьютере сервере, в противном случае базы не успеют скопироваться и будут старыми,

 

Пункты 4 и 5, можно выполнять тогда, когда очередной клиент вам жалуется, что у них не обновляется ГИС, а можно просто в выходные пройтись по всем машинам ))).

@Echo on
Set server_name=server
Set share_papka=update2GIS
xcopy "C:\Program Files\2gis\3.0\*.dgdat" "\\%server_name%\%share_papka%" /D /Y
@exit

код скрипта Update2GIS

@Echo off
xcopy \\server\update2GIS\*.dgdat "C:\Program Files\2gis\3.0" /D /E /Y
@exit

код скрипта Update

Есть еще один подводный камень этого «велосипеда», если на машинах клиента совсем устарела версия ДубльГИС, то есть изменился полностью модуль и версия программы, то для этого необходимо еще выполнить ряд действий с «бубном», для этого я использую скрипт написанный на powershell и один bat(Doawnload2GIS) для его запуска, через назначенные задания. Сперва необходимо скачать новую версию 2ГИС, а лишь потом выполнить пункты 4 и 5(см. выше).

# Проверим существуют ли в папке старые версии 2ГИС
$path = "\\mesto\FamilyLibrary\Distrib\2gis\*.exe"
#  если имеется, то удаляем
if(test-path $path)
{
Remove-item \\mesto\FamilyLibrary\Distrib\2gis\*.exe
}
# Производим закачку файла откуда и куда
$src = "http://download.2gis.ru/arhives/2GISShell-3.8.0.1-2GISData_Barnaul-90.0.0.exe"
$dst = "\\mesto\FamilyLibrary\Distrib\2gis"
# Если нужны какие-нибудь учётные данные
#$cred = Get-Credential
# Импортируем модуль BITS
Import-Module BitsTransfer
# Запускаем закачку асинхронно
$dl = Start-BitsTransfer -Source $src -Destination $dst -Asynchronous 
# Показывать процент завершения до конца передачи
while ($dl.JobState -ne "Transferred") {
  $per = $dl.BytesTransferred/$dl.BytesTotal*100
  Write-Progress -activity "Copying" -status ($per.ToString()+"%") -PercentComplete $per
  Start-Sleep 1
}
# Завершить закачку
$dl | Complete-BitsTransfer

код скрипта,написанного на powershell(Download2GIS.ps1)

powershell -command "C:\temp\Download2GIS.ps1"

код скрипта, для запуска  Download2GIS.ps1, через назначенные задания

Вот такими несложными манипуляциями иногда можно облегчить себе жизнь, правда перед этим побегав немного!Жду ваших предложений и замечаний :)!

 


© MiMushi
| Комментировать статью |
  • GM +2587 (08.08.2012 14:49)
    Очень давно перешел на Linux.. Раньше всегда считал, что windows уступает именно из-за "консоли".. Не знал про "powershell", прикольно! ) Давно пора было корпорации зла придумать что-то подобное для своего детища!
    P.S.: ждем статью про powershell ;)
    | Ответить |
    • Аноним 0 (09.08.2012 09:10)
      В винде был и есть Windows Script Host
      http://ru.wikipedia.org/wiki/Windows_Script_Host
      http://ru.wikipedia.org/wiki/Visual_Basic_Script
      | Ответить |
      • GM +2587 (09.08.2012 10:29)
        Если не ошибаюсь, даже безопасные wsf сценарии антивирусы не любят..
        | Ответить |
  • Tiger +458 (10.08.2012 11:27)
    Нафига вся эта мутота? Разве нельзя настроить дубль гис обновляться из сетевой папки, и не копировать туда сюда обновления?
    | Ответить |
    • GM +2587 (10.08.2012 11:35)
      Может дело в безопасности?
      | Ответить |
      • Tiger +458 (10.08.2012 12:10)
        Какая тут безопасность? Покажите мне её, я её не вижу...
        | Ответить |
        • GM +2587 (10.08.2012 12:39)
          Упс.. не обратил внимание что там уже и так шара используется. А в винде разве нет чего-то подобного scp? Ну или в крайнем случае rsync? Чтобы запаролить.. а юзеру не давать доступ на чтение этого скрипта.
          | Ответить |
      • Tiger +458 (10.08.2012 12:10)
        Один хрен папка расшарена...
        | Ответить |
        • MiMushi +243 (14.08.2012 17:05)
          готов выслушать Ваши предложения, поэтому поводу.....и что ВЫ имели ввиду по-поводу обновления из сетевой папки?пишите конкретные предложения,а не глупые замечания,говорить могут все, а делать лишь единицы....
          | Ответить |
  • WTP +711 (17.08.2012 11:37)
    Может есть смысл поделиться источниками? Книжки там, мануалы... мож кому пригодится.
    | Ответить |
    • MiMushi +243 (20.08.2012 09:11)
      хм...а каких источниках идет речь?какие мануалы Вы бы хотели увидеть здесь?
      | Ответить |
    • GM +2587 (20.08.2012 14:51)
      А смысл? для этого есть раздел "закладки"
      | Ответить |
    • Tiger +458 (22.08.2012 13:17)
      Жми F1
      | Ответить |
      • GM +2587 (22.08.2012 14:38)
        Тогда уж: хочешь получить справку - жми Alt+F4 ))))
        | Ответить |
  • Аноним 0 (18.08.2012 11:31)
    "2GISShell-3.8.0.1-2GISData_Barnaul-90.0.0.exe" - а если выйдет новая версия 2гис?
    | Ответить |
    • MiMushi +243 (20.08.2012 09:10)
      Да, с этим признаюсь у меня вышла небольшая заминка, не знаю как ее разрешить, просто у них постоянно выходят новые версии, номер версии тупо угадать нельзя, а искать по маске на их серваке не хватает слегка прав для этого, может быть в скором времени эту проблемку разрешу, а может кто что подскажет, буду рад выслушать ))).
      | Ответить |
      • Аноним 0 (20.08.2012 10:34)
        У них на старнице http://barnaul.2gis.ru видно ссылку на закачку, которую можно распарсить
        $browser = New-Object -COMObject InternetExplorer.Application
        $browser.visible = $true
        $browser.Navigate(\'http://barnaul.2gis.ru\')
        While ($browser.Busy) { Start-Sleep -Milliseconds 400 }
        $mylink = $browser.document.getElementsByTagName(\'a\') | Select-Object -ExpandProperty href
        ... и тут перебрать ссылки и если класс у ссылки "download", то это она и есть
        | Ответить |
        • Аноним 0 (30.08.2012 21:32)
          Можно пжлста по подробнее на счет перебора ссылок, а то что-то не получается.
          P.S.: за статью - спасибо!
          | Ответить |
        • alexander +4 (21.11.2012 09:12)
          Не совсем понял про "Показывать процент завершения до конца передачи", скрипт же выполняется автоматически в фоновом режиме? Как увидеть процент выполнения?
          | Ответить |
          • MiMushi +243 (26.11.2012 10:32)
            это касается лишь того скрипта, который отвечает за скачивание новой версии 2ГИСа,при выполнении которого, отображается процент загрузки файла.
            | Ответить |