[¡Ayuda!, beca en Juego] Que hace este script Netsh interface ... con condicional dependiente del errorlevel ?

juanitapregunta

Babea la almohada
16 Feb 2006
4,733
Código:
@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel==0 (
    Show mensaje_A
) else (
    Show mensaje_B
)
 
Última edición:
Muchachos esta es una pregunta de un examen de un muchacho campesino que le estoy colaborando con plantear la reclamacion.

Nota previa: Puede haber errores en la sintaxis exacta, porque no se tiene acceso al script (Por eso es que no tengo como ejecutarlo para poder hacer pruebas) , pero el abordaje es sobre la logica del asunto y la funcionaildad de Netsh.

El script era algo como :

Código:
@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel==0 (
    Show mensaje_A
) else (
    Show mensaje_B
)

Cual de estas 2 opciones va a pasar al ejecutar ? :

1. Mostrara el Mensaje_A cuando IPV4 e IPV6 estan habilitados
2. Mostrara el Mensaje_A si solo tiene habilitado IPV4

Muchas gracias


Lo que esta haciendo es ejecutando "netsh" en el contexto --> "interface" --> subcontexto "ipv6"

y en el subcontexto "ipv6" ejecutar el comando que debe mostrarle información de la interface con nombre "Ethernet"

el resultado de ese comando "show....." es el standard output que en el comando lo esta enviando a ">nul", osea descartando

pero al mismo tiempo el standard error "2" lo esta enviando al standard output ("1") así: "2>&1" pero como el estandar output lo estaba descartando a "nul", pues no hay error, eso quiere decir que asi haya error o un resultado del comando, nunca se va a mostrar nada .... porque esta descartando todo

Asumiendo que errorlevel representa si hay error o no en el comando ejecutado, pues entonces siempre sera mensaje A


https://stackoverflow.com/questions/10508843/what-is-dev-null-21

 
  • Me encanta
Reacciones: juanitapregunta
Muchachos esta es una pregunta de un examen de un muchacho campesino que le estoy colaborando con plantear la reclamacion.

Nota previa: Puede haber errores en la sintaxis exacta, porque no se tiene acceso al script (Por eso es que no tengo como ejecutarlo para poder hacer pruebas) , pero el abordaje es sobre la logica del asunto y la funcionaildad de Netsh.

El script era algo como :

Código:
@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel==0 (
    Show mensaje_A
) else (
    Show mensaje_B
)

Cual de estas 2 opciones va a pasar al ejecutar ? :

1. Mostrara el Mensaje_A cuando IPV4 e IPV6 estan habilitados
2. Mostrara el Mensaje_A si solo tiene habilitado IPV4

Muchas gracias


@Uranium @josd@
Pues sin saber exactamente como es el script complicado el tema de la respuesta, como comentaron arriba así tal como está el script siempre va a mostrar el mensaje A, porque el comando como tal devuelve es un texto mostrando la información ipv6 del adaptador y si no existe también es un mensaje, nunca va a sacar error.

Adicional de las opciones de respuesta no tienen sentido.
 
  • Me gusta
Reacciones: juanitapregunta
Asumiendo que errorlevel representa si hay error o no en el comando ejecutado, pues entonces siempre sera mensaje A


Aqui entiendo (No se si bien ) que una persona dice que el errorlevel 0 es cuando no hay error en el comando , pero otro le responde que en Netsh asi haya error en la sintaxis del comando , va a retornar 0 .

Tonces ? cual es ? :unsure:o_O




Pues sin saber exactamente como es el script complicado el tema de la respuesta, como comentaron arriba así tal como está el script siempre va a mostrar el mensaje A, porque el comando como tal devuelve es un texto mostrando la información ipv6 del adaptador y si no existe también es un mensaje, nunca va a sacar error.
La estructura logica del script si es seguro que es asi (El comando Netsh ese si esta literal como es) , en lo que si puede haber error es alguna comillas faltantes o que algo empieza en mayuscula o algo asi en la sintaxis.

Adicional de las opciones de respuesta no tienen sentido.

Si de hecho , demostrar que esas opciones de respuesta no dan respuesta a la pregunta , tambien sirve , porque anula la pregunta.
 

Aqui entiendo (No se si bien ) que una persona dice que el errorlevel 0 es cuando no hay error en el comando , pero otro le responde que en Netsh asi haya error en la sintaxis del comando , va a retornar 0 .

Tonces ? cual es ? :unsure:o_O





La estructura logica del script si es seguro que es asi (El comando Netsh ese si esta literal como es) , en lo que si puede haber error es alguna comillas faltantes o que algo empieza en mayuscula o algo asi en la sintaxis.



Si de hecho , demostrar que esas opciones de respuesta no dan respuesta a la pregunta , tambien sirve , porque anula la pregunta.
Aquí hay una respuesta que de pronto puede ayudar a aclarar las dudas del errorlevel

 
  • Me gusta
Reacciones: juanitapregunta
Aquí hay una respuesta que de pronto puede ayudar a aclarar las dudas del errorlevel

Ta bueno, aunque lastimosamente no listan que significa el errorlevel 0 en Netsh :unsure: que creo que es donde estaria el meollo del asunto.

Para mi la presunta respuesta correcta que es: "Mostrara el Mensaje_A cuando IPV4 e IPV6 estan habilitados" , no tiene sentido porque: "Netsh interface ipv6 show interface "Ethernet" > nul 2>&1" tengo entendido que no verifica si IPV4 e IPV6 estan habilitados
 
Ta bueno, aunque lastimosamente no listan que significa el errorlevel 0 en Netsh :unsure: que creo que es donde estaria el meollo del asunto.

Para mi la presunta respuesta correcta que es: "Mostrara el Mensaje_A cuando IPV4 e IPV6 estan habilitados" , no tiene sentido porque: "Netsh interface ipv6 show interface "Ethernet" > nul 2>&1" tengo entendido que no verifica si IPV4 e IPV6 estan habilitados
Exacto no tiene sentido para nada, porque como tal muestra es información del IPV6 del adaptador de red, sin importar si lo tiene o no. Mas no se está validando que tenga habilitado el IPV6 en el adaptador.

1702329716272.png
 
Exacto no tiene sentido para nada, porque como tal muestra es información del IPV6 del adaptador de red, sin importar si lo tiene o no. Mas no se está validando que tenga habilitado el IPV6 en el adaptador.

Ver el archivos adjunto 579900
Momentoooo!!! aqui acabo de probar desahibitando el IPV6 del adaptardor y luego corriendo :

Netsh interface ipv6 show interface "Ethernet"

y arroja:

"No se ha encontrado el elemento "


Sera que el errorlevel 0 se refiere a eso ??
 
ChatGPT dice:
El script proporcionado utiliza el comando Netsh para mostrar información sobre la interfaz IPv6 de Ethernet y luego verifica el nivel de error (errorlevel) para decidir qué mensaje mostrar. Sin embargo, la lógica puede ser confusa en este contexto debido a la forma en que está estructurado el script.

En este caso, la lógica del script sería más clara si se expresara de la siguiente manera:

Código:
@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel 1 (
    Show mensaje_B
) else (
    Show mensaje_A
)

Entonces, con esta corrección:

  1. Mostrará el mensaje_A cuando solo IPV4 está habilitado.
  2. Mostrará el mensaje_B si IPV6 está habilitado (ya que errorlevel 0 indica que no hay errores).
Espero que esto aclare la lógica del script.
 
  • Me gusta
Reacciones: juanitapregunta
ChatGPT dice:
El script proporcionado utiliza el comando Netsh para mostrar información sobre la interfaz IPv6 de Ethernet y luego verifica el nivel de error (errorlevel) para decidir qué mensaje mostrar. Sin embargo, la lógica puede ser confusa en este contexto debido a la forma en que está estructurado el script.

En este caso, la lógica del script sería más clara si se expresara de la siguiente manera:

Código:
@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel 1 (
    Show mensaje_B
) else (
    Show mensaje_A
)

Entonces, con esta corrección:

  1. Mostrará el mensaje_A cuando solo IPV4 está habilitado.
  2. Mostrará el mensaje_B si IPV6 está habilitado (ya que errorlevel 0 indica que no hay errores).
Espero que esto aclare la lógica del script.
Xtreme me enrede , en que parte estas hablando vos y en que parte ese engendro ? Podrias poner porfa citado la parte en que esta hablando chatgpt
 
Todo eso lo dice chatgpt:
No, pero entonces Chatgpt no entendio varias cosas :

1. No se pueden cambiar la opciones de repuestas como hizo, porque estas son fijas (Fue un examen).

2. Ignorando el punto anterior, y suponiendo que en Netsh el errorlevel 0 quiere decir que no hay error , y que el script se puede modificar, la conclusion al scritpt que propuso chatgpt no seria como dice (O al menos a mi no me cuadra, porque define que es errorlevel 0 pero que carajos es errorlevel 1 ? )

Le puedes promtear porfa que que indica errorlevel 0 en el comando Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
 
No, pero entonces Chatgpt no entendio varias cosas :

1. No se pueden cambiar la opciones de repuestas como hizo, porque estas son fijas (Fue un examen).

2. Ignorando el punto anterior, y suponiendo que en Netsh el errorlevel 0 quiere decir que no hay error , y que el script se puede modificar, la conclusion al scritpt que propuso chatgpt no seria como dice (O al menos a mi no me cuadra, porque define que es errorlevel 0 pero que carajos es errorlevel 1 ? )

Le puedes promtear porfa que que indica errorlevel 0 en el comando Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
Te recomiendo que pruebes chatGPT.

Escribí lo que me dijiste y esto dice:

Mis disculpas por la confusión. En el contexto de tu script, si Netsh interface ipv6 show interface "Ethernet" se ejecuta correctamente (sin errores), entonces errorlevel sería igual a 0. Entonces, la lógica del script es la siguiente:
  1. if errorlevel==0: Mostrará el mensaje_A si la interfaz IPv6 "Ethernet" está habilitada y funciona correctamente.
  2. else: Mostrará el mensaje_B si hay algún problema con la interfaz IPv6 "Ethernet" o si no está habilitada.
En resumen, la respuesta correcta sería:
  1. Mostrará el mensaje_A cuando la interfaz IPv6 "Ethernet" está habilitada y funciona correctamente.
  2. Mostrará el mensaje_B si hay algún problema con la interfaz IPv6 "Ethernet" o si no está habilitada.
Espero que esto aclare tu pregunta original sobre el script.
 
  • Me gusta
Reacciones: juanitapregunta
Te recomiendo que pruebes chatGPT.

Escribí lo que me dijiste y esto dice:

Mis disculpas por la confusión. En el contexto de tu script, si Netsh interface ipv6 show interface "Ethernet" se ejecuta correctamente (sin errores), entonces errorlevel sería igual a 0. Entonces, la lógica del script es la siguiente:
  1. if errorlevel==0: Mostrará el mensaje_A si la interfaz IPv6 "Ethernet" está habilitada y funciona correctamente.
  2. else: Mostrará el mensaje_B si hay algún problema con la interfaz IPv6 "Ethernet" o si no está habilitada.
En resumen, la respuesta correcta sería:
  1. Mostrará el mensaje_A cuando la interfaz IPv6 "Ethernet" está habilitada y funciona correctamente.
  2. Mostrará el mensaje_B si hay algún problema con la interfaz IPv6 "Ethernet" o si no está habilitada.
Espero que esto aclare tu pregunta original sobre el script.
Pero ahi se esta refiriendo al codigo original o al que chatgpt modifico ??

Actualizacion: No, ya segui la logica de chatgpt y se refiere al original
 
Ya tengo a la mano un compu con consola de windows, y acabo de crear un .bat con:

@echo off
Netsh interface ipv6 show interface "Ethernet" > nul 2>&1
if errorlevel==0 (
echo mensaje_A
) else (
echo mensaje_B
)
Nota1: Cambie show x echo , porque al parecer ese no es comando pa mostrar mensajes
Nota2: Cambie el nombre del adaptador de red de "Conexion de area local" x Ethernet

Y con IPV6 activo o inactivo siempre muestra el mensaje_A


1. Segun eso el mensaje que aparece cuando se ejecuta el comando Netsh con el ipv6 deshabilitado : "No se ha encontrado el elemento" no hace que cambie a un errorlevel diferente a 0 .

2. Tampoco escribiendo mal el comando en el .bat : "Netsh interface ipv6 how interface "Ethernet" > nul 2>& cambia a un errorlevel direfente a 0 . (Osea sigue mostrando el mensaje_A

3. La secuencia del script parece buena , porque cuando en el if se pone if errorlevel==22 (O cualquier numero) si muestra el mensaje_B

Cuando para Netsh hay un errorlevel diferente a 0 !! o_Oo_O ?

Estoy en un W7 Alguien puede por favor probar si en w10 o superior se comporta igual ? . Agradezco la ayuda , esta en juego una beca

Actualizacion: Ya probe en W10 y lo mismo

@aliricu , @Gotischer , @Xtremedandi
 
Última edición:
  • Me gusta
Reacciones: Hachico y aliricu
es que el tema es que netsh interface requiere que el nombre de la interfaz sea la misma que tiene en la máquina, por ejemplo ejecute el netsh interface show interface y ahí ve la lista de las que tiene disponibles (lo mismo que si ejecutara ncpa.cpl, ahí se ven los nombres de las interfaces también).
 
  • Me gusta
Reacciones: juanitapregunta

Los últimos temas