Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kriminal_27 en 27 Abril 2013, 17:09 pm



Título: Ayuda con batch
Publicado por: kriminal_27 en 27 Abril 2013, 17:09 pm
Muchas gracias por su atencion! estoy en la necesidad de crear un bat que realice lo siguiente:
Entorno: dominio
Consulta: buscar un usuario
Resultado: poder realizarle un logoff

En si lo que hace el script es, pedirle al quien lo ejecute, que escriba el nombre del usuario , hace una busqueda ( con query session o query user ) en los servidores que ya les seteo dentro del bat y devuelve el resultado "el usuario esta logeado en X equipo".
Luego deberia darme las opciones por ejemplo para hacerle un logoff a ese usuario o bien hacer una nueva busqueda.

La primera parte, ya la realice , se me esta complicando para crear una variable que me permita poder hacer el "logoff"

Les comparto lo precario y novato que arme pero que funciona :)

Código
  1. :inicio
  2. @echo off
  3. set srv01=%Temp%\srv01.txt
  4. set /p User=Ingrese Nombre o Apellido de Usuario :
  5. echo Consultando...
  6. query session /server:SERVER | find /i "%User%" > %srv01%
  7. @echo off
  8. findstr "%User%" "%srv01%"
  9. if %errorlevel%==0 (echo El usuario "%User%" esta logeado en SERVER01 ) else (echo No se encontro "%User%" logeado en SERVER01 )
  10. @echo off
  11. echo Seleccione una opcion
  12. echo --------------------
  13. echo A. Realizar Logoff
  14. echo B. Buscar otro Usuario
  15. echo C. Salir
  16. choice /c:abc /n /M "Que desea hacer?"
  17. if errorlevel 2 goto Inicio
  18. if errorlevel 1 goto Logoff
  19.  
  20.  
  21. :Salir
  22.  
  23. :logoff
  24. ACAA COMO HAGOO
  25.  
  26. goto inicio


Lo que devuelve el "query session" en el .txt es lo siguiente:

 rdp-tcp#1         Usuario                    3  Active  rdpwd            

Donde el el "rdp-tcp#1" (session name) es lo que varia junto a  "3" ( id )

Yo necesitaria unir ese "session name" a "Usuario" y poder hacer un "logoff SESSIONNAME /server:SERVER01"

No se si me exprese bien, pero desde ya agradezco el tiempo de vosotros


Título: Re: Ayuda con batch
Publicado por: Meine programmen en 27 Abril 2013, 17:54 pm
Si no entiendo mal, lo que buscas es meter en una variable el session name, y a partir de ahi tu ya sabes hacer el logoff, ¿no? De ser así, el codigo quedaria mas o menos asi:

Código:
@echo off
:inicio
cd\
echo.
set srv01=%Temp%\srv01.txt
set /p User=Ingrese Nombre o Apellido de Usuario :
echo.
echo Consultando...
echo.
query session /server:SERVER | find /i "%User%" > %srv01%
echo.
findstr "%User%" "%srv01%">>nul
if %errorlevel%==0 (echo El usuario "%User%" esta logeado en SERVER01 ) else (echo No se encontro "%User%" logeado en SERVER01 )
echo.
echo Seleccione una opcion
echo --------------------
echo.
echo A. Realizar Logoff
echo B. Buscar otro Usuario
echo C. Salir
echo.
choice /c:abc /n /M "Que desea hacer?"
if errorlevel 3 goto Salir
if errorlevel 2 goto Inicio
if errorlevel 1 goto Logoff


:Salir
exit

:logoff
for /f "tokens=1" %%a in ('type "%srv01%"') DO (set Sessionname=%%A)
(En esta linea introduces el comando para hacer el logoff)
pause
cls
goto inicio

Esto seria en caso de que el Session name no pudiera llevar espacios. Si llevase espacios habria que calentarse un poco mas la cabeza pero se podria hacer.


Título: Re: Ayuda con batch
Publicado por: kriminal_27 en 27 Abril 2013, 20:21 pm
Muchas gracias capo, la verdad que estoy un paso mas cerca, estoy investigando un poco porque el resultado que se guarda en el txt empieza justamente con 1 espacio en blanco y luego sigue el resto  :(
estoy viendo la posibilidad de en alguna parte del codigo meterle algo que "busque" el espacio en blanco y lo borre
otra cosa, mira asi es como me devuelve el query user:

 usuario                                  73  Disc         1:17  27/04/2013 07:59 a.m.

con el tokens y delim puedo hacer que me leea el "73" ?? y pueda hacer un "logoff %var% donde el var corresponde al 73??

Chas graciasss


Título: Re: Ayuda con batch
Publicado por: kriminal_27 en 27 Abril 2013, 21:01 pm
listo Meine programmen !!! ya funciona okkk !! le cambie que busque el numero de sesion mas que nombre de sesion.

quedo asi:

Código
  1. for /f "tokens=2" %%a in ('type "%srv01%"') do (set SessionID=%%a)
  2. logoff %SessionID% /server:serv01

Muchas gracias!



Título: Re: Ayuda con batch
Publicado por: Eleкtro en 30 Abril 2013, 12:18 pm
@Kriminal_27
Lee las indicaciones de mi firma para no estar editando todos tus mensajes.

Un saludo!