Что нового

Запуск Команд Dos/Cmd смена ip/dns/gateway ,отключение службы "сервер"

black1

C++,Pic
Сообщения
39
Репутация
0
Всем добрый день!
На работе статистический адрес, обходился BAT ip/dns/gateway, но решил сделать.
Дома выдается автоматом dhcp , тоже делал через BAT
получилось так. в авто запуск ехе поместил
Код:
;msgbox(0,"",@UserName &" | "&@LogonDomain &" | "&@ComputerName  &" | "&@LogonServer)
               ;11        |     221           |        33           |    \\441
               ;11        |     222           |        33           |    \\442
	#include <Process.au3>
	 
if @LogonDomain = "221" Then
 msgbox(0,"","домrun",1)
 _RunDos('netsh interface ip set address name="wifilan" source=dhcp') 
 _RunDos('netsh interface ip set dns "wifilan" source=dhcp')
 msgbox(0,"","домexit",1)
    
	Endif
 

if @LogonDomain = "222" Then
 msgbox(0,"","работаrun",1)
 _RunDos('netsh interface ip set address name="wifilan" static 172.24.161.169 255.255.0.0 172.24.161.1 172.24.161.10') 
 _RunDos('netsh interface ip set dns "wifilan" static 172.24.161.10')
 msgbox(0,"","работаexit",1)
    Endif


но вот с отключением службы "Сервер" столкнулся с проблемой
Код:
@echo off
net stop ᦠ¥
кодировка для cmd хм oem 866 отображается в скрипте как ?? правильно ли это не известно...
запускаю скрипт не чего не происходит.. скрипт завершается...
также на BAT приходилось подтверждать мол хотите ли вы отключить службу грим Y потом ENTER
Код:
_RunDos('net stop ??')

может как то еще сделать? но хотелось бы разобраться с кириллицей и как передать какиенть клавиши нажатия в _RunDos
попробовал Run("net stop Сервер",@SW_HIDE) но думаю ошибка в кириллице
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
а так?
Код:
$text = "net stop " & ChrW(0x19a0) & ChrW(0x00a5)
MsgBox(0, "Unicode command", $text)
_RunDos($text)
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
black1
Может, я не про тот сервер думаю, но у службы Сервер внутреннее имя LanmanServer, то есть:

Код:
Run("net stop lanmanserver,"",@SW_HIDE)
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
Re: Запуск Команд Dos/Cmd смена ip/dns/gateway ,отключение службы \"сервер\"

Попробвл через WMI но чет не работает, и прошу поделитесь инфой по изучению WMI хотелось бы сделать удаленно отключение-включение служб в будущем... на сокетах пока сделал..
Код:
$strComputer = @ComputerName
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE State = 'Running'  ")
ConsoleWrite ("-------- Запущенные службы: --------" & @CRLF)
For $objItem in $colItems

	if $objItem.DisplayName = "Сервер" Then
      ConsoleWrite($objItem.DisplayName &" name:"&$objItem.Name & @CRLF)
	  $objItem.StopService($objItem.Name) ;"LanmanServer"
	  $objItem.StopService($objItem.DisplayName) ;"Сервер"	  
	EndIf
 Next


Да, попробовал так))) узрил что имя службы в WMI другое... а отображается "Сервер"
но дело в том что скрипт весит, скорей всего!, там требуется подтверждение мол
Код:
  Обозреватель компьютеров

Продолжить операцию? (Y-да/N-нет) [N]: и вот тут требует Y и Enter
Код:
_RunDos('net stop LanmanServer')


хм ошибся работает!! видимо система повисла ранее...
Код:
_RunDos('net stop LanmanServer')

вопрос если делать через CMD то там подтверждение требуется а тут как?
ии с WMI хелп)



Добавлено:
Сообщение автоматически объединено:

вот результат работает на XP, одна и таже учет запись пользователя, только домен различный...
Код:
;msgbox(0,"",@UserName &" | "&@LogonDomain &" | "&@ComputerName  &" | "&@LogonServer)
               ;11        |     221           |        33           |    \\441           (Дома Пользователь от домена(обычный вход) к примеру 221 )
               ;11        |     222           |        33           |    \\442           (на работе Пользователь от домена к примеру 222)
	#include <Process.au3>
;#comments-start

if @LogonDomain = "221" Then
 msgbox(0,"","домrun",1)
 _RunDos('netsh interface ip set address name="wifilan" source=dhcp') 
 _RunDos('netsh interface ip set dns "wifilan" source=dhcp')
 msgbox(0,"","домexit",1)
    
	Endif
 

if @LogonDomain = "222" Then
 msgbox(0,"","работаrun",1)
 _RunDos('netsh interface ip set address name="wifilan" static 172.24.161.169 255.255.0.0 172.24.161.1 172.24.161.10') 
 _RunDos('netsh interface ip set dns "wifilan" static 172.24.161.10')
 _RunDos('net stop LanmanServer')
 msgbox(0,"","работаexit",1)
    Endif
;#comments-end
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
Хммм вопрос про WMI глянул http://ru.wikipedia.org/wiki/WMI
но не могу понять какой Com обьект используется $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
где посмотреть параметры ?и об параметрах? IDispatch в oleview где он?))
и ктонть может разъяснить что это %SystemRoot%\System32\WBEM\Repository\FS
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
Run('sc stop lanmanserver','',@SW_HIDE)

Sc работает с сервисами на локальной и удалённой машинах.
Код:
Run('sc ')
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
sngr сказал(а):
не знал об этом. пошел искать инф)) cmd -> sc help много всего)
чет не понял как эт работает? как доступ осуществляется пароли открыто передаются? или как то через серв домен...
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Если у тебя домен, запусти через Runas и будет достаточно 'sc stop lanmanserver'(и имя удалённого компутера если необходимо).
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
нет, 1 строчкой
Код:
_RunDos('net stop LanmanServer')
не обойтись
скрипт висит в процессах, заним cmd , net ,net1.exe то есть наверное там требует ввода подтверждения Y и Enter
хм, не делал с cmd ввод в AutoIt подскажите как можн.. я предполагаю послать сообщение этих клавиш но над еще момент поймать хм
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
пока сделал так ...
Код:
ShellExecute("C:\WINDOWS\system32\net.exe", "stop LanmanServer", "", "open")
 
Верх