Test Foro de elhacker.net SMF 2.1

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:


: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:\>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:


: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):

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


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 (dos) [Seleccionar]
@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 group "%add%" /add "%%a"
net group "%add%" /add "%%a"
)

:: Eliminamos el grupo anterior
net group "%del%" /delete

pause
exit
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.


@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 (dos) [Seleccionar]
@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
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


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 (dos) [Seleccionar]
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:

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:


@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
Cita de: VivaElPirateo en  5 Junio 2012, 07:08 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 (dos) [Seleccionar]
PREGUNTA
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:

@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
Cita de: VivaElPirateo en 13 Junio 2012, 07:04 AM
me da errores si pongo comillas o signo igual

Esto arregla lo de las comillas:
Código (dos) [Seleccionar]
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???

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 (dos) [Seleccionar]
@Echo OFF

:cambiarnombregrupo
echo Ingrese nuevo nombre: | MORE

set /p ADD=                   ^>^>

If not defined ADD (goto :cambiarnombregrupo)
iF DEFINED ADD (Set "add=%add:"=%") & REM "
If not defined ADD (goto :cambiarnombregrupo)

rem PD: No pongas el "if defined" arriba del primer "if not defined" ;)

Pause

Exit
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!!!