Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Правка файла hosts c правами администратора

Ответить
Настройки темы
CMD/BAT - [решено] Правка файла hosts c правами администратора

Аватара для James Marsh

Ветеран


Сообщения: 1594
Благодарности: 235


Конфигурация

Профиль | Отправить PM | Цитировать


Ситуация.

Нужно на 63 компах в файл hosts дописать сайт интрасети. Как вызвать консоль с правами администратора понятно. А как все впихнуть в один cmd?

1й кусок:
Код: Выделить весь код
runas /profile /user:SMCMD\time_adm 12345 cmd
2й кусок:
Код: Выделить весь код
echo 192.168.2.252 smcmd.net >> c:\windows\system32\drivers\etc\hosts
Заранее спасибо.

-------
Благими намірами вистелений шлях у пекло


Отправлено: 23:00, 02-12-2010

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


напиши между кусками /k

для справки:
Код: Выделить весь код
cmd /?

Отправлено: 20:27, 03-12-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Цитата James Marsh:
Нужно на 63 компах в файл hosts дописать сайт интрасети. Как вызвать консоль с правами администратора понятно. А как все впихнуть в один cmd? »
1. Ну лично мне, к превеликому сожалению, непонятно как запустить консоль с правами админа, указывая пароль через скрипт (да и не безопасно это).

2. Предполагаю, что команду запуска "RunAs" Вы подправите, так же не забудте подправить содержимое переменной "AddText", ну и на выходе имеете рядом со скриптом текстовик со списком компов, где скрипт попытался внести корекции.

3. Скрипт проверяет на наличие в файле "hosts" добавляемой строки (чтобы не добавлять их по десять раз), но при этом делает весьма посредственное сравнение и замена пробела на табулятор или на несколько пробелов приведут к тому, что строка найдена не будет и заново добавится, но уже с другими разделителями.

4. Список компов берется перебором всех IP имеющихся на компе подсетей.

Код: Выделить весь код
@Echo off
if "%1"=="proceed" goto :Proceed
runas /profile /user:SMCMD\time_adm 12345 ""%ComSpec%" /c "%~0" proceed"
exit

:Proceed
setLocal EnableExtensions

rem ===============================
set AddText=192.168.2.252 smcmd.net
rem ===============================


set LAN=0&set Mask=0&set Addr=0&set Max=0
set tmp="%TEMP%\%~n0%random%%time:~-2%.tmp"

rem Ищем подсети:
(for /f "tokens=1,2,4" %%A in ('route print^|findstr /rc:"^ "^|findstr /vc:" 0.0.0.0" /c:"255.255.255.255" /c:"240.0.0.0" /c:"127.0.0.1"') do echo %%A %%B %%C)>%tmp%
for /f "tokens=1-3" %%A in ('findstr /rc:"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\ [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\ [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" %tmp%') do call :ChkIP %%A %%B %%C
del %tmp%
exit

rem Проверяем найденные адреса и пингуем подсети (ищем компы)
:ChkIP
set LAN=%1
set Mask=%2
set Addr=%3
call :AddrStr2Bin LAN %LAN:.= %
call :AddrStr2Bin Mask %Mask:.= %
call :AddrStr2Bin Addr %Addr:.= %
set /a "A=Addr & Mask"
if not "%A%"=="%LAN%" exit /b
rem echo %LAN% %Mask%
set /a "Max=(Mask^-1)-1"

for /l %%A in (1,1,%Max%) do call :Ping %%A
exit /b

rem Пингуем комп, при этом на пинг он может не отвечать, но его MAC появится в Arp-таблице
:Ping
set /a Addr=%LAN%+%1
call :AddrBin2Str Addr %Addr%
title Look for %Addr%
arp -d
ping -n 1 -w 100 %Addr%>nul 2>nul
for /f "tokens=1 delims=" %%R in ('arp -a %Addr%^|findstr /c:"%Addr%"^|findstr /vc:"00-00-00-00-00-00"') do call :ChkPC
exit /b

rem Пытаемся добраться до файла "hosts" на найденном ресурсе, если он есть - добавляем строку %AddText%
:ChkPC
pushd "\\%Addr%\ADMIN$\system32\drivers\etc\"||exit /b
if exist hosts for /f "tokens=2 delims=:" %%C in ('find /c "%AddText%" hosts') do if /i %%C equ 0 (
echo %AddText%>>hosts
echo Proceed %Addr%>>"%~dpn0.txt"
)
popd
exit /b

:AddrStr2Bin
set AddrStr2BinV=%1
set %AddrStr2BinV%=0
:AddrStr2Bin1
shift
if "%1"=="" exit /b
set /a "%AddrStr2BinV%=(%AddrStr2BinV%<<8)+%1"
goto :AddrStr2Bin1

:AddrBin2Str
set AddrBin2StrV=%1
set /a "AddrBin2StrV4=%2&255,AddrBin2StrV3=(%2>>8)&255,AddrBin2StrV2=(%2>>16)&255,AddrBin2StrV1=(%2>>24)&255"
set %AddrBin2StrV%=%AddrBin2StrV1%.%AddrBin2StrV2%.%AddrBin2StrV3%.%AddrBin2StrV4%
exit /b

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 23:36, 06-12-2010 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Правка файла hosts c правами администратора

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Права администратора - доступ к файлу hosts R123 Microsoft Windows 7 5 19-06-2012 12:20
Ошибка - Профиль администратора с ограниченными правами crow1984 Microsoft Windows 2000/XP 8 06-01-2010 19:49
Пользователь с правами администратора treiber Microsoft Windows 2000/XP 2 06-03-2007 20:13
ICQ с правами Администратора n3rf Microsoft Windows 2000/XP 17 07-12-2004 12:07
Запуск програм с правами администратора Harkalada Программирование и базы данных 1 17-10-2003 09:54




 
Переход