none
Сценарий завершения работы. RRS feed

  • Вопрос

  • Всем добрый день. Появилась необходимость написать сценарий завершения работы сервера которому сервер опрашивал рабочие станции и если бы обнаруживал, что станция не выключена, то он бы её выключал. Сам же сервер должен выключаться только после отключения всех станций. Данная необходимость вызвана тем, что когда меня не бывает на рабочем месте(вариант окончания раб для), а работа в классе продолжаеется, то зачастую по окончании работы сначала отключают сервер. Вслетствии чего невозможно обновить профиль учётной записи на сервере и рабочая станция зависает при завершении работы.
    6 июня 2007 г. 12:26

Ответы

  • А в чем конкретно проблема? Алгоритм продумать? Или накодить готовый?

    По идее, самое простое

    1) пинг

    2) если пинг есть, то shutdown /m \\computer, и возвращаемся к п.1

    3) Если пинга нету,то выключаемся.

    Слабое место в плане то, что станция может зависнуть так, что пинги ходят, а все остальное мертвое. Но это не так часто случается.

    6 июня 2007 г. 12:57

Все ответы

  • А в чем конкретно проблема? Алгоритм продумать? Или накодить готовый?

    По идее, самое простое

    1) пинг

    2) если пинг есть, то shutdown /m \\computer, и возвращаемся к п.1

    3) Если пинга нету,то выключаемся.

    Слабое место в плане то, что станция может зависнуть так, что пинги ходят, а все остальное мертвое. Но это не так часто случается.

    6 июня 2007 г. 12:57
  • Накодить это конечно хорошо, но надо и самому учиться писать такие вещи. А то, как у меня часто бывает, срочно надо а спросить не у кого.

    По-поводу предложенного варианта; идею понял осталось только реализовать т.к. я в этом деле вообще чайник, то не подскажите на каком языке писать -то, а то в папке C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Shutdown упусто а где пример взять не знаю.

    6 июня 2007 г. 14:02
  • Я бы на VBScript писал.

    Запускать из него обычные команды и анализировать их "выхлоп" можно. Можно и без внешних наверняка обойтись, но я пока не умею.

    Более подробно я, увы, с ходу ответить не смогу - занят несколько. Предлагаю Вам вообще опубликовать этот вопрос в разделе scripting languages.

    6 июня 2007 г. 14:08
  • Ну по-поводу предложения опубликовать этот вопрос в разделе scripting languages я согласен, но к сожалению перенести тему с ответами не в моих силах, а создание темы-дубля считаю не очент хорошей идеей.
    6 июня 2007 г. 14:24
  • Как скажете. Перенес.
    6 июня 2007 г. 16:09
  • Едиственный вопрос: как обратиться к копмьютеру не по ip-адресу а по его имени? А то я чего то не нашёл такой инфы. Вроде как ping использует только ip-адреса.
  • Ээээ... Интересное заявление =)))

    попробуйте в командной строке набрать, например

    Code Snippet

    ping forums.microsoft.com

     

    =)
  • У меня такая песня не пройдет из-за настройки proxy-серверов. Впринципе я уже сам разобрался как это сделать, но всё-равно спасибо.
  • Нет, теперь уже мне интересно что там у Вас происходило такое, что по IP пинговать можно, а по FQDN нельзя =)

    Рассказывайте =)

  •  

     

     Выключение компьютера:

    Code Snippet

    strComputer = "atl-dc-01"
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
            strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
        ObjOperatingSystem.Shutdown(1)
    Next

     

    Пинг компьютера:

     

    Code Snippet

    strComputer = "."
    Set objWMIService = GetObject(_
        "winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPings = objWMIService.ExecQuery _
        ("Select * From Win32_PingStatus where Address = '192.168.1.1'")

    For Each objStatus in colPings
        If IsNull(objStatus.StatusCode) _
            or objStatus.StatusCode<>0 Then
            WScript.Echo "Computer did not respond."
        Else
            Wscript.Echo "Computer responded."
        End If
    Next

     

     

    7 июня 2007 г. 13:19
    Модератор
  • to кomatozo(надеюсь вас так можно называть): Да не, всё впорядке. Просто когда я пытался сделать Ping по FQDN, то неправильно набирал имя. Я в командной строке набирал ping \\копьютер а надо было ping компьютер.

    to sie: спасибо за подсказку. Пока я выбираю между 2-мя вариантами. 1-ое это примерно тоже самое что вы предложили, а второе это создать скрипт который бы запускал bat- или cmd-файл, который в свою очередь пинговал и выключал машины.

    8 июня 2007 г. 10:50
  • А вот пинг интернет страниц заблокирован на одном из вышестоящих Proxy/кеш-серверов. У меня даже доступа к Ftp нет(так же заблокирован), а скачивание файлов через IE ограниченно по времени(где-то около 4-х часов).
    8 июня 2007 г. 10:55