Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: VivaElPirateo en 28 Mayo 2012, 03:17 am



Título: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 28 Mayo 2012, 03:17 am
Buenas:

    Intento cambiarle el nombre a un localgroup de Windows Server 2003 a través de un batch.
Me genera error y no logro realizar lo que quiero hacer.

    Dejo el código para que me ayuden, por favor:


Código:
:cambiarnombre
echo.

set /p nus=                   Ingrese grupo :
echo.

set /p nux=                   Ingrese NUEVO nombre al grupo :
echo.

net localgroup %nus% /fullname:"%nux%"
echo.
pause
goto grupos


Se agradece cualquier ayuda.


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: $Edu$ en 28 Mayo 2012, 03:27 am
Fijate si lo haces sin poner las comillas en /fullname:"%nux%"


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 28 Mayo 2012, 04:10 am
Parece que solo permite añadir un grupo, eliminar un grupo, o expandir (Añadir usuarios al grupo), Pero no modificar el nombre de un grupo....

Lo que puedes hacer es obtener la lista de los usuarios del grupo, Eliminar el grupo, y crearlo de nuevo con el nombre que quieras, y los usuarios que estaban.

http://technet.microsoft.com/en-us/library/cc725622%28v=ws.10%29.aspx

Cita de: Microsoft
<GroupName>
    Specifies the name of the local group to add, expand, or delete.


Además... :
Código:
C:\>net localgroup /?
La sintaxis de este comando es:

NET LOCALGROUP
[grupo [/COMMENT:"texto"]] [/DOMAIN]
              grupo {/ADD [/COMMENT:"texto"] | /DELETE}  [/DOMAIN]
              grupo nombre [...] {/ADD | /DELETE} [/DOMAIN]


PD: Prueba a hacerlo desde el gpetid.msc, Si desde ahí tampoco se puede, Olvídate.

Saludos


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 28 Mayo 2012, 04:54 am
Gracias socitos!!!!!!!!!!!!

Lo que yo hice ahora para solucionar el problema del cambio de nombre (parece que en realidad no se puede hacer), es darle una solución alternativa:


Código:
:cambiarnombre
set /p nus=Ingrese nombre del Grupo al que va a cambiar de nombre:
echo.
set /p nux=ingrese nuevo nombre:
echo.
net group %nus% /delete
net group %nux% /add /domain
echo.
pause
cls
goto grupos

Con esto, borro el grupo exitente (por ponerle un nombre: alfa, y crea otro nuevo grupo llamado beta), pero lo de reintegrar a los usuarios del grupo alfa al beta, eso quedé en tragedia.

 :huh:


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 28 Mayo 2012, 05:27 am
copiame el output de este comando (No tengo grupo yo para mirarlo :P):

Código:
net LOCALGROUP alfa

Y con un FOR hago el resto.

PD: Si ese comando no lista los miembros del grupo, prueba con otra opcion (NEt /?)...

Saludos


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 30 Mayo 2012, 00:50 am
Buenas:

Me imagino que log te refieres a cuando ingresas en línea de comandos y escribes net users, no???

Acá está:

Se llama alfa1 el usuario


Código:
Microsoft Windows [Versión 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrador>net localgroup alfa1
Nombre de alias      alfa1
Comentario

Miembros

-------------------------------------------------------------------------------
bullalbo1
johnritter1
panzer1
Se ha completado el comando correctamente.




Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 30 Mayo 2012, 10:28 am
Mira a ver si todo está en orden :P, Quizás he cometido algún error pues no puedo probar nada con grupos locales:

Código
  1. @Echo off
  2.  
  3. set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
  4. set /p add=ingrese nuevo nombre:
  5.  
  6. :: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
  7. net localgroup "%del%">"%temp%\%del%_usuarios.txt"
  8.  
  9. :: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
  10. For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias"') do (
  11.        REM Echo Comando: net group "%add%" /add "%%a"
  12. net group "%add%" /add "%%a"
  13. )
  14.  
  15. :: Eliminamos el grupo anterior
  16. net group "%del%" /delete
  17.  


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 3 Junio 2012, 01:14 am
Con respecto a lo anterior:

Le modifiqué lo de group y lo dejé como localgroup.


Código:
@Echo off
 
set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
set /p add=ingrese nuevo nombre:

:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"

:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias"') do (
        REM Echo Comando: net localgroup "%add%" /add "%%a"
net localgroup "%add%" /add "%%a"
)

:: Eliminamos el grupo anterior
net localgroup "%del%" /delete
 
pause
exit




Me elimina el grupo, pero no me crea nada más.

Este es el log:


Ingrese nombre del Grupo al que va a cambiar de nombre:curajolo.cl
ingrese nuevo nombre: curita123
La sintaxis de este comando es:


NET LOCALGROUP
[nombregrupo [/COMMENT:"texto"]] [/DOMAIN]
              nombregrupo {/ADD [/COMMENT:"texto"] | /DELETE}  [/DOMAIN]
              nombregrupo nombre [...] {/ADD | /DELETE} [/DOMAIN]

Se ha completado el comando correctamente.

Presione una tecla para continuar . . .


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 3 Junio 2012, 04:34 am
Ya esta, He echo el code testeandolo en una máquina virtual (En mi pc como ya dije, no puedo).

Aqui lo tienes:

Código
  1. @Echo off
  2.  
  3. :Select
  4. Echo Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE
  5. set /p del=^>^>
  6. If not defined del (goto :select)
  7. Net localgroup "%DEL%" >nul 2>&1 || (Echo. El grupo "%DEL%" no existe! | MORE & Set "Del=" & Goto :Select)
  8.  
  9. Echo+ & Echo ingrese nuevo nombre: | MORE
  10. set /p add=^>^>
  11. If not defined add (goto :select)
  12.  
  13. :: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
  14. net localgroup "%del%">"%temp%\%del%_usuarios.txt"
  15.  
  16. :: Creamos el nuevo grupo:
  17. net localgroup "%add%" /add >nul
  18.  
  19. :: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
  20. For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (
  21. net localgroup "%add%" /add "%%a" >NUL
  22. )
  23.  
  24. CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE
  25. Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE
  26. Choice /M "Todo OK?"
  27. If %Errorlevel%==1 (
  28. :: Eliminamos el grupo anterior y el backup de los usuarios.
  29. net localgroup "%del%" /delete >NUL
  30. Del /Q "%temp%\%del%_usuarios.txt"
  31. ) ELSE (
  32. :: Mostramos el backup de los usuarios para deshacer los cambios manualmente xD.
  33. notepad "%temp%\%del%_usuarios.txt"
  34. )
  35.  
  36.  

Output:
(http://img571.imageshack.us/img571/1623/prtscrcaptureq.jpg)

Saludos.



Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 4 Junio 2012, 06:18 am
Wow, que maravilla!!!!!!!!!!!!!

Te felicito master!!!!!!!!!!


Después del "Todo OK?" S-N  Se cae el programa.

Lo que no resulta es que el grupo anterior no se borra:

Se crea el nuevo grupo y se traspasan los usuarios de éste al nuevo, pero sigue dejando el grupo antiguo intacto.




Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 4 Junio 2012, 10:18 am
@VivaelPirateo

Debe ser causa de la versión de Windows, En windows 7 funciona todo como debe funcionar.

No puedo buscar la causa del choice ni del error porque no tengo a mano WinServer 2008 xD,
Pero lo puedes hacer tú mismo, dices que no se elimina el grupo, Pues sespues del "Todo ok?(s)" abre la consola y usa directamente este comando, y así ves el error de porque no se ha podido borrar:

Código
  1. net localgroup "NOMBRE DEL GRUPO" /delete

saludos


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 5 Junio 2012, 07:08 am
Puse ese comando en la consola y borra el grupo sin ningún problema.

Cuando ejecuto el script y sale lo del "todo ok"  presiono la s  y alcanzo a ver que sale algo así como:

"la sintaxis del comando..."


Creo que acá debe haber un error en estas líneas de código:

Código:
Choice /M "Todo OK?"
If %Errorlevel%==1 (

:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"

) ELSE (
:: Mostramos el backup de los usuarios para deshacer los cambios manualmente xD.

notepad "%temp%\%del%_usuarios.txt"

)
 
exit


Si logro resolver esto luego, posteo.

Salu2





Lo tuve que dejar de la siguiente forma:

Código:
@Echo off

 
:Select
Echo Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE

set /p del=^>^>

If not defined del (goto :select)

Net localgroup "%DEL%" >nul 2>&1 || (Echo. El grupo "%DEL%" no existe! | MORE & Set "Del=" & Goto :Select)

 
Echo+ & Echo ingrese nuevo nombre: | MORE

set /p add=^>^>
If not defined add (goto :select)


:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"


:: Creamos el nuevo grupo:
net localgroup "%add%" /add >nul


:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (

net localgroup "%add%" /add "%%a" >NUL

)
 
CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE

Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE


:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"
echo.
echo.
echo          El nombre del grupo se ha modificado correctamente!!!
echo.
echo.
pause
cls
Goto :select


Gracias y millón de bendiciones Elektro Hacker!!!!



A todo esto:

Existe alguna forma de que no se caiga el programa al insertar un espacio o signos como " espacios & ???




Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 11 Junio 2012, 00:52 am
A todo esto:

Existe alguna forma de que no se caiga el programa al insertar un espacio o signos como " espacios & ???

Ya empezamos...  :xD  :P

Pues sí, Usa findstr tal y como te lo expliké en otra duda tuya.

Código
  1. PREGUNTA
  2. Echo "%PREGUNA%" | FINDSTR...

PD: Prueba, Si no te sale, te ayudo.

Saludos



Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 13 Junio 2012, 07:04 am
Hola Elektro H@cker:

He realizado algunos cambios al script:

Código:
@echo off

:cambiarnombregrupo

echo.
echo.
echo                Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE


set /p del=               ^>^>


Set "del=%del:^"=%" & REM "

echo.
echo.

Net localgroup "%DEL%" >nul 2>&1 || (Echo.               El grupo ingresado no existe! | MORE & Set "Del=" & Goto :cambiarnombregrupo)

echo.
echo.
Echo+ & Echo                ingrese nuevo nombre: | MORE

set /p add=               ^>^>


If not defined add (goto :cambiarnombregrupo)


:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"


:: Creamos el nuevo grupo:
net localgroup "%add%" /add >nul


:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (

net localgroup "%add%" /add "%%a" >NUL

)
 
CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE

Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE


:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"
echo.
echo.
echo          El nombre del grupo se ha modificado correctamente!!!
echo.
echo.
pause
cls
Goto :cambiarnombregrupo


Todo bien por el momento, pero en la parte que dice: "Ingrese nuevo nombre", me da errores si pongo comillas o signo igual, me da esos errores.


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 13 Junio 2012, 08:50 am
me da errores si pongo comillas o signo igual

Esto arregla lo de las comillas:
Código
  1. Set "del=%del:"=%" & REM "

El signo = no debería dar error al setear mostrar la variable (Ni antes ni ahora xD).

Saludos


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 13 Junio 2012, 19:59 pm
Fenomenal master!!!

Me ha resultado súper bien.

Millón de felicitaciones y millón de gracias por tu incondicional ayuda, Elektro H@cker!!!!!!!

Abrazos!!!


Otra duda:

Cómo soluciono para que, cuando aprete ENTER, no me de errores y me devuelva al inicio de esto???

Código:
ngrese nuevo nombre: | MORE


set /p add=               ^>^>


Set "add=%add:"=%" & REM "


If not defined add (goto :cambiarnombregrupo)

Así dejé el código y con esto solucioné lo de las comillas y espacios en blanco.


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: Eleкtro en 14 Junio 2012, 10:25 am
No queda muy limpio el code por la triple comprobación, pero funciona:

Código
  1. @Echo OFF
  2.  
  3. :cambiarnombregrupo
  4. echo Ingrese nuevo nombre: | MORE
  5.  
  6. set /p ADD=                   ^>^>
  7.  
  8. If not defined ADD (goto :cambiarnombregrupo)
  9. iF DEFINED ADD (Set "add=%add:"=%") & REM "
  10. If not defined ADD (goto :cambiarnombregrupo)
  11.  
  12. rem PD: No pongas el "if defined" arriba del primer "if not defined" ;)
  13.  
  14.  


Título: Re: Problema con cambiarle el nombre a un grupo (vía Batch)
Publicado por: VivaElPirateo en 15 Junio 2012, 15:18 pm
Millón de gracias nuevamente master!!!!!!!!!!

Lo pruebo y luego te cuento!!!