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

» Автоматизация администрирования. Часть 3

Автор: FreeLSD_md
Дата сообщения: 07.08.2013 18:18
Уважаемые, добрый день. Простейшая задача перезапуска службы:
Решается через команду останова-запустка, скажете вы.
Возникла необходимость решить данную задачу иначе: необходимо отправить управляющий элемент именно ПЕРЕЗАПУСК указанной службе, т.е.:
net stop service_name
net start service_name
нужно заменить на что-то типа net restat service_name, но такого попросту нету(
имя службы 1C:Enterprise 8.2 Server Agent.
Автор: Oldster
Дата сообщения: 07.08.2013 21:29
FreeLSD_md
Именно перезапуск я не видел ни в одном скриптовом языке, имхо, все делается через старт\стоп.
Автор: Smitis
Дата сообщения: 08.08.2013 09:31
FreeLSD_md

Цитата:
Возникла необходимость решить данную задачу иначе: необходимо отправить управляющий элемент именно ПЕРЕЗАПУСК указанной службе

sc restart service_name
Автор: FreeLSD_md
Дата сообщения: 13.08.2013 11:23
sc restart service_name - хорошая попытка, но такого нету О_о, ребята есть ещё у кого варианты?
Автор: vlary
Дата сообщения: 13.08.2013 13:12
FreeLSD_md
Цитата:
хорошая попытка, но такого нету  О_о, ребята есть ещё у кого варианты?
Блин, если нету, почему не сделать самому? Делается за 5 минут.

Код: //[QUICK CODE] FOR THE IMPATIENT
using System;
using System.Collections.Generic;
using System.Text;
// ADD "using System.ServiceProcess;" after you add the
// Reference to the System.ServiceProcess in the solution Explorer
using System.ServiceProcess;
namespace Using_ServiceController{
class Program{
static void Main(string[] args){
ServiceController myService = new ServiceController();
myService.ServiceName = "ImapiService";
string svcStatus = myService.Status.ToString();
if (svcStatus == "Running"){
myService.Stop();
}else if(svcStatus == "Stopped"){
myService.Start();
}else{
myService.Stop();
}
}
}
}
Автор: FreeLSD_md
Дата сообщения: 14.08.2013 12:39
Спасибо, навыками программирования не обладаю. Со скриптом разобрался, всё получилось.
Автор: YNY
Дата сообщения: 16.08.2013 07:32
))) ну вы нафлудили: стоп+старт=рестарт, и то что вы нигде иначе не видели так это от того что нет смысла огород городить!!! Не говоря о посылке приказаний сервису на рестарт - это уязвимость!
Автор: klifsys
Дата сообщения: 27.08.2013 09:34
Друзья, помогите со скриптом для удаления старых файлов. Да, понимаю что таких на просторах интернета валом, но мне нужно что-бы скрипт удалял старые по дате, но оставлял в папке не менее n файлов, даже если они и подходят для удаления по дате, т.е. приоритетом является количество файлов, а потом уже дата создания.
Автор: Oldster
Дата сообщения: 27.08.2013 10:12
klifsys
можно начать от сюда
Автор: klifsys
Дата сообщения: 27.08.2013 11:08
увы, но повершел не установлен (вин2003)
Автор: Oldster
Дата сообщения: 27.08.2013 13:36
klifsys
тогда возможно поможет Jscript, но я его подзабыл уже... на 2003 можно поставить PowerShell.
Автор: klifsys
Дата сообщения: 27.08.2013 14:24
У нас на 2003 файловая помойка с доступами по отделам, по пользователям - боюсь хоть что-то туда ставить, т.к. если глюканет то не восстановлю потом права доступа на все шары. Да, сейчас использую готовый скрипт, он удаляет по дате, но проблема что иногда бекап не проходит и тогда папака с бекапами постепенно пустеет.
Автор: el_verdugo
Дата сообщения: 11.09.2013 08:30
klifsys
[more=Если еще актуально]
Код: <?xml version="1.0" encoding="windows-1251"?>
<package>
    <job id="Work">
        <runtime>
            <description>
Имя: Remove.wsf
Автор: Verdugo
Описание:
</description>
            <example>
Remove.wsf /days:14 /files:7 /folder:"D:\Backup"</example>
            <named name="days" helpstring="Количество дней, старше которых будут удаляться файлы" type="simple" required="false"/>
            <named name="file" helpstring="Минимальное количество файлов в папке. Если файлов меньше - обработка прекращается." type="simple" required="false"/>
            <named name="folder" helpstring="Путь к папке с файлами(и вложенными папками)" type="string" required="false"/>
        </runtime>
        <resource id="days">0</resource>
        <resource id="files">0</resource>
        <resource id="pc">none</resource>
        <resource id="folder">none</resource>
        <reference object="Scripting.FileSystemObject"/>
        <object id="fso" progid="Scripting.FileSystemObject"/>
        <object id="oXML" progid="MSXML2.DOMDocument.6.0"/>
        <object id="sh_net" progid="WScript.Network"/>
        <script language="VBScript">
            <![CDATA[
'***************'
Option Explicit '
'***************'
Dim rNode, fNode, attr
Dim days, files, folder
Dim renew : renew = 0
'***************'
Init_XML()
If getResource("pc") <> sh_net.ComputerName Then First_Run()
Init()
Get_Folder(fso.GetFolder(folder))
MsgBox "Готово!"
'********************************************************'
'*********************** First_Run **********************'
'********************************************************'
Sub First_Run()
    rNode.selectSingleNode("/package/job[@id='Work']/resource[@id='pc']").text = sh_net.ComputerName
    oXML.save(WScript.ScriptFullName)
    WScript.Arguments.ShowUsage()
    WScript.Quit(0)
End Sub
'********************************************************'
'************************* Init *************************'
'********************************************************'
Sub Init()
    days = CInt(getResource("days"))
    files = CInt(getResource("files"))
    folder = getResource("folder")
    If days = 0 Then
        Do
            days = InputBox("Введите количество дней, старше которых будут удаляться файлы","Ввод данных")
        Loop Until IsNumeric(days)
        renew = 1
    End If
    If getResource("files") = 0 Then
        Do
            files = InputBox("Введите минимальное количество файлов","Ввод данных")
        Loop Until IsNumeric(files)
        renew = 1
    End If
    If Not fso.FolderExists(getResource("folder")) Then
        Do
            folder = InputBox("Введите путь к папке с файлами","Ввод данных")
        Loop Until fso.FolderExists(folder)
        renew = 1
    End If
    If days <= 0 Or files <= 0 Then WScript.Quit(0)
    If renew Then
        rNode.selectSingleNode("/package/job[@id='Work']/resource[@id='days']").text = days
        rNode.selectSingleNode("/package/job[@id='Work']/resource[@id='files']").text = files
        rNode.selectSingleNode("/package/job[@id='Work']/resource[@id='folder']").text = folder
        oXML.save(WScript.ScriptFullName)
    End If
End Sub
'********************************************************'
'*********************** Init_XML ***********************'
'********************************************************'
Sub Init_XML()
    oXML.async = false
    oXML.load(WScript.ScriptFullName)
    If err.Number <> 0 Then
        err.Clear()
        MsgBox "Ошибка загрузки XML-документа"
        WScript.Quit(1)
    End If
    Set rNode = oXML.documentElement
End Sub
'********************************************************'
'************************ New_XML ***********************'
'********************************************************'
Sub New_XML()
    oXML.async = false
    oXML.loadXML("")
    oXML.appendChild(oXML.createProcessingInstruction("xml", "version='1.0' encoding='windows-1251'"))
    Set rNode = oXML.appendChild(oXML.createElement("root"))
End Sub
'********************************************************'
'********************** Get_Folder **********************'
'********************************************************'
Sub Get_Folder(folder)
    Dim item, file
    For Each item In folder.Subfolders
        Get_Folder(item)
    Next
    If folder.Files.Count > files Then
        New_XML
        For Each file In folder.Files
            Set fNode = rNode.appendChild(oXML.createElement("item"))
            Set attr = oXML.createAttribute("date")
            attr.value = Date2Long(DateValue(file.DateCreated))
            fNode.setAttributeNode(attr)
            fNode.text = file.Path
        Next
        Dim sel, count
        count = rNode.selectNodes("/root/item[@date>='" & Date2Long(DateValue(Now())-days) & "']").length
        If count < files Then
            count = files - count
        Else
            count = 0
        End If
        Set sel = rNode.selectNodes("/root/item[@date<'" & Date2Long(DateValue(Now())-days) & "']")
        Dim i
        For i = count To sel.length - 1
            fso.DeleteFile sel(i).text
        Next
    End If
End Sub
'********************************************************'
Function Date2Long(d)
    Date2Long = Year(d) & Right("0" & Month(d), 2) & Right("0" & Day(d), 2)
End Function
]]>
        </script>
    </job>
</package>
Автор: krush2006
Дата сообщения: 11.09.2013 11:41
Для автоматизации некоторых процессов использую программу xStarter. На сегодняшний день порядка 20 папок за которыми следит программа и если есть файлы отправляет на заданный адрес, причем на некоторые из них отправляет 1 письмо=1 файл.
Так же в программе есть много функций работы с файлами в т.ч. безопасное удаление в корзину (это попервах, пока не проверишь).

Программа для пользователей xUSSR бесплатна.
Автор: klifsys
Дата сообщения: 08.10.2013 08:34
el_verdugo, спасибо, конечно актуально (задержался с ответом т.к. был в отпуске).
Автор: Lovec
Дата сообщения: 24.10.2013 15:03
Возможно ли запустить процесс на удаленном ПК с правами того пользователя, который на нем залогинен?
Все компы в домене, права админа есть. Пароль пользователя априори неизвестен.
Можно без GUI.

Как ни мучался с PsExec - он запускает или с админскими правами или с System
Третий день читаю Интернет - решения так и не нашел...
Автор: golychev
Дата сообщения: 24.10.2013 15:55
Lovec
разве когда в ГПО ставишь скрипт в Юзер сеттингс, он не под правами юзера запускается?
Автор: Lovec
Дата сообщения: 24.10.2013 16:08
Хочу с моего компьютера запустить программу на удаленном. Прямо здесь и сейчас. Без какого-либо участия пользователя.
Автор: YNY
Дата сообщения: 27.10.2013 08:57

Цитата:
Хочу с моего компьютера запустить программу на удаленном.

для этого не нужны скрипты достаточно создать каким либо образом в планировщике задачу на ближайшее время и указать путь )
Автор: Lovec
Дата сообщения: 28.10.2013 08:43
YNY
Также пришел к выводу что только через запланированное задание могу решить свою задачу. Точнее через использование программы schtasks.exe входящей в состав Windows.
Никакие другие средства удаленного запуска программ не запускают программу с правами залогиненного пользователя.
Автор: el_verdugo
Дата сообщения: 31.10.2013 03:16
Lovec
Самый простой вариант - поставить Cron, удаленно отредактировать cron.tab (создать задание), подгрузить измененный кронтаб "cron.exe - reload". А чтобы напрямую от имени пользователя запустить программу - нужно знать пароль пользователя...
Автор: Lovec
Дата сообщения: 31.10.2013 10:50
el_verdugo
Какой смысл в кроне, если есть планировщик Windows и он нормально работает?
Для разового запуска программы - самое оно. Программу от имени пользователя он отлично запускает безо всякого пароля - есть такой параметр /RU.
Автор: Lovec
Дата сообщения: 01.11.2013 17:10
Обнаружил засаду - если на удаленной машине Windows 7 задание типа такого

Код:
Schtasks.exe /Create /S VirtualPC04 /RU VirtualPCUser /TR notepad.exe /TN Sample_Task /SC ONCE /F /ST 23:00
Автор: YNY
Дата сообщения: 01.11.2013 19:49

Цитата:
Обнаружил засаду

Скорее всего, но не факт, нет под рукой виртуалки, VirtualPCUser должно содержать полное доменное имя типа "домен\юзер" или через собаку вроде так: "юзер@домен"
Так же согласно мануалу , ключ S стоит посте программы, т.е.
синтаксис: schtasks/run /tn имя_задания [/s компьютер [/u [domain\]пользователь /p пароль]] /?"

В общем проверь синтаксис, возмона в ХР он отличается от W7

По ходу вот решение:
/V1 Создание задачи, видимой для платформ,
предшествовавших версии Vista.
Несовместим с параметром /XML.
т.к. у людей обратная твоей проблема) была
т.о. тебе нуна в твой вариант добавить эт ключ в нуное место!
Автор: el_verdugo
Дата сообщения: 06.11.2013 07:26
Lovec

Цитата:
Какой смысл в кроне...?


Цитата:
Обнаружил засаду...

В том и смысл, чтобы было без засад...
Автор: Lovec
Дата сообщения: 07.11.2013 16:00
YNY
До параметра /V1 ход попробовать не дошел, перестроил параметры запуска в той последовательности. что написано в msdn, добавил перед именем пользователя имя домена, убрал параметры /P /U - их Windows XP не воспринимала - и при запуске самой консоли от имени администратора домена все прокатывает!
И на Windows 7 и на Windows XP. Процесс запускается от нужного мне залогиненного пользователя.

Команда получилась такая:
Schtasks.exe /Create /TN Sample_Task /TR notepad.exe /SC ONCE /ST 23:00 /S <имя_компа> /RU <имя_домена>\<имя_залогиненного_пользователя_домена> /F

Все спасибо за мысли.
Автор: Lovec
Дата сообщения: 08.11.2013 17:14
[ALL]
Рановато я попрощался со всеми. Немного поторопился я со своими выводами, за что и прошу прощения...

Ошибка, о которой я писал выше - отказано в доступе на Windows XP - на самом деле никуда не делась, а только спряталась.
Всплыл еще один факт. Описанная мной строка запуска команды Schtasks.exe действительно работает, но только при условии что брандмауэр Windows XP ВКЛЮЧЕН. Если он ВЫКЛЮЧЕН - появляется ошибка "Отказано в доступе".
Именно в такой последовательности.
Добавление параметра /V1 в строку запуска при выключенном брандмауэре приводит не к отказу в доступе, а к вопросу "Введите пароль пользователя" (от чьего имени должно быть запущено задание и который мне как я писал неизвестен).

Вот тут мне и нужна подсказка знающих людей - как может ослабление безопасности, т.е. отключение брандмауэра Windows, отрицательно влиять на доступ к компьютеру в домене?!

Дополнительно: раньше я думал был глюк, но теперь уже так не думаю - было несколько машин с Windows 7, при ОТКЛЮЧЕНИИ брандмауэра на которых к ним тут же пропадал доступ - переставали идти пинги и вообще терялось управление ими.
Автор: vlary
Дата сообщения: 08.11.2013 22:25
Lovec
Цитата:
но только при условии что брандмауэр Windows XP ВКЛЮЧЕН. Если он ВЫКЛЮЧЕН - появляется ошибка "Отказано в доступе".
Именно в такой последовательности.
В этом нет ничего удивительного.
В Винде то, что брандмауэр выключен, вовсе не означает, что он не работает.
Потому его лучше не отключать, а правильно настраивать.
Автор: Lovec
Дата сообщения: 09.11.2013 09:40
vlary
То что его правильнее настраивать - согласен. Но это не отвечает на мой вопрос, почему при его выключении наступает блокировка.
Вот он включен и все работает - значит как-то он уже настроен на пропуск нужных пакетов, раз они через него проходят.
Вот я его выключил - от этого правила фильтрации пакетов не стали же жестче. Так чего он начал блокировать их?..
Автор: YNY
Дата сообщения: 11.11.2013 10:25

Цитата:
Так чего он начал блокировать их

Он не блокирует, просто посмотри, что у тебя в параметрах общего доступа: какой профиль активен и какие там параметры). - это для 7 и т.п.
Если на компе есть антивир с брандмаером, то при выкл виндового, могет он брать ответственность, а вообще доступ из сети без пароля ограничен, т.о. либо политики шерстить, либо создать юзера в домене с изв тебе паролем и правами нуного юзера и пусть задание зап он и в таком сл все будет гуд, если тебе в реестр не нуна вносить изм или в профиль юзера лезть!
Еще вариант - ваще не юзать кл /U /P тогда по мануалу должно с правами залог юзара запускаться.

Страницы: 1234567891011

Предыдущая тема: Не Работает сканер по сети HP 3055


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