Pasar o recoger salida de comandos a variables.

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Pasar o recoger salida de comandos a variables.

Ramses II
Buenos días,

Cuando he necesito recoger la salida de un comando para después tratarla, lo he hago siempre así:

# PRUEBA=$(ls -la)

No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo el contenido.

Pero me he he encontrado con una curiosidad con NetCat.

Si hago un:

# PRUEBA=$(nc -z -v -w5 80.80.80.80 22)

Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra la variable vacía.

¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo para recoger la salida en una variable?


Saludos y gracias,

Ramsés

Reply | Threaded
Open this post in threaded view
|

Re: [SOLUCIONADO] Pasar o recoger salida de comandos a variables.

Ramses II
El 10 de mayo de 2020 10:04:36 CEST, Ramses <[hidden email]> escribió:

>Buenos días,
>
>Cuando he necesito recoger la salida de un comando para después
>tratarla, lo he hago siempre así:
>
># PRUEBA=$(ls -la)
>
>No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo
>el contenido.
>
>Pero me he he encontrado con una curiosidad con NetCat.
>
>Si hago un:
>
># PRUEBA=$(nc -z -v -w5 80.80.80.80 22)
>
>Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra
>la variable vacía.
>
>¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo
>para recoger la salida en una variable?
>
>
>Saludos y gracias,
>
>Ramsés

Buenas, me respondo yo mismo.

Se ve que NetCat está sacando la salida por STDERR en vez de por STDOUT, por lo que se puede solucionar así:

# PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2 >&1)


Saludos,

Ramsés

Reply | Threaded
Open this post in threaded view
|

Re: Pasar o recoger salida de comandos a variables.

Camaleón
In reply to this post by Ramses II
El 2020-05-10 a las 10:04 +0200, Ramses escribió:

> Buenos días,
>
> Cuando he necesito recoger la salida de un comando para después tratarla, lo he hago siempre así:
>
> # PRUEBA=$(ls -la)
>
> No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo el contenido.
>
> Pero me he he encontrado con una curiosidad con NetCat.
>
> Si hago un:
>
> # PRUEBA=$(nc -z -v -w5 80.80.80.80 22)
>
> Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra la variable vacía.
>
> ¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo para recoger la salida en una variable?

Ni idea... ¡esto es linux avanzado! :-P

La explicación la tienes aquí:

****
passing output of a netcat command to a variable or piping through read
utility
<https://stackoverflow.com/questions/55889713/passing-output-of-a-netcat-command-to-a-variable-or-piping-through-read-utility>
****

Y ciertamente, enviar a la salida estándar funciona:

sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA
80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN) [80.80.80.80] 22 (ssh) : Connection timed out

sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA > Escritorio/prueba.txt
sm01@stt008:~$ cat Escritorio/prueba.txt
80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN) [80.80.80.80] 22 (ssh) : Connection timed out

Saludos,

--
Camaleón

Reply | Threaded
Open this post in threaded view
|

Re: Pasar o recoger salida de comandos a variables.

Ramses II
El 10 de mayo de 2020 11:45:45 CEST, "Camaleón" <[hidden email]> escribió:

>El 2020-05-10 a las 10:04 +0200, Ramses escribió:
>
>> Buenos días,
>>
>> Cuando he necesito recoger la salida de un comando para después
>tratarla, lo he hago siempre así:
>>
>> # PRUEBA=$(ls -la)
>>
>> No me muestra la salida por Consola pero con un "echo $PRUEBA"
>imprimo el contenido.
>>
>> Pero me he he encontrado con una curiosidad con NetCat.
>>
>> Si hago un:
>>
>> # PRUEBA=$(nc -z -v -w5 80.80.80.80 22)
>>
>> Me muestra la salida por Consola y si hago un "echo $PRUEBA" me
>muestra la variable vacía.
>>
>> ¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que
>hacerlo para recoger la salida en una variable?
>
>Ni idea... ¡esto es linux avanzado! :-P
>
>La explicación la tienes aquí:
>
>****
>passing output of a netcat command to a variable or piping through read
>
>utility
><https://stackoverflow.com/questions/55889713/passing-output-of-a-netcat-command-to-a-variable-or-piping-through-read-utility>
>****
>
>Y ciertamente, enviar a la salida estándar funciona:
>
>sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA
>80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN)
>[80.80.80.80] 22 (ssh) : Connection timed out
>
>sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA
>> Escritorio/prueba.txt
>sm01@stt008:~$ cat Escritorio/prueba.txt
>80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN)
>[80.80.80.80] 22 (ssh) : Connection timed out
>
>Saludos,

Sí, sí, ya había encontrado esa solución.

Nos hemos cruzado el correo por el camino...


Gracias,

Ramsés

Reply | Threaded
Open this post in threaded view
|

Re: [SOLUCIONADO] Pasar o recoger salida de comandos a variables.

Suso Gonzalez
In reply to this post by Ramses II
UNSUSCRIBE


From: Ramses <[hidden email]>
Sent: Sunday, May 10, 2020 11:33:36 AM
To: Lista-Debian <[hidden email]>
Subject: Re: [SOLUCIONADO] Pasar o recoger salida de comandos a variables.
 
El 10 de mayo de 2020 10:04:36 CEST, Ramses <[hidden email]> escribió:
>Buenos días,
>
>Cuando he necesito recoger la salida de un comando para después
>tratarla, lo he hago siempre así:
>
># PRUEBA=$(ls -la)
>
>No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo
>el contenido.
>
>Pero me he he encontrado con una curiosidad con NetCat.
>
>Si hago un:
>
># PRUEBA=$(nc -z -v -w5 80.80.80.80 22)
>
>Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra
>la variable vacía.
>
>¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo
>para recoger la salida en una variable?
>
>
>Saludos y gracias,
>
>Ramsés

Buenas, me respondo yo mismo.

Se ve que NetCat está sacando la salida por STDERR en vez de por STDOUT, por lo que se puede solucionar así:

# PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2 >&1)


Saludos,

Ramsés

Reply | Threaded
Open this post in threaded view
|

Re: Pasar o recoger salida de comandos a variables.

Suso Gonzalez
In reply to this post by Ramses II
UNSUSCRIBE


From: Ramses <[hidden email]>
Sent: Sunday, May 10, 2020 10:04:36 AM
To: Lista-Debian <[hidden email]>
Subject: Pasar o recoger salida de comandos a variables.
 
Buenos días,

Cuando he necesito recoger la salida de un comando para después tratarla, lo he hago siempre así:

# PRUEBA=$(ls -la)

No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo el contenido.

Pero me he he encontrado con una curiosidad con NetCat.

Si hago un:

# PRUEBA=$(nc -z -v -w5 80.80.80.80 22)

Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra la variable vacía.

¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo para recoger la salida en una variable?


Saludos y gracias,

Ramsés

Reply | Threaded
Open this post in threaded view
|

Re: [SOLUCIONADO] Pasar o recoger salida de comandos a variables.

Daniel Cialdella Converti
In reply to this post by Suso Gonzalez
Quizás les sirva.
Dejo los links. Disculpen los errores cometidos, estoy todavía aprendiendo como hacer estos videos.


Intro

Uso diario de Xubuntu

On Sun, May 10, 2020 at 11:48 PM Suso Gonzalez <[hidden email]> wrote:
UNSUSCRIBE


From: Ramses <[hidden email]>
Sent: Sunday, May 10, 2020 11:33:36 AM
To: Lista-Debian <[hidden email]>
Subject: Re: [SOLUCIONADO] Pasar o recoger salida de comandos a variables.
 
El 10 de mayo de 2020 10:04:36 CEST, Ramses <[hidden email]> escribió:
>Buenos días,
>
>Cuando he necesito recoger la salida de un comando para después
>tratarla, lo he hago siempre así:
>
># PRUEBA=$(ls -la)
>
>No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo
>el contenido.
>
>Pero me he he encontrado con una curiosidad con NetCat.
>
>Si hago un:
>
># PRUEBA=$(nc -z -v -w5 80.80.80.80 22)
>
>Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra
>la variable vacía.
>
>¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo
>para recoger la salida en una variable?
>
>
>Saludos y gracias,
>
>Ramsés

Buenas, me respondo yo mismo.

Se ve que NetCat está sacando la salida por STDERR en vez de por STDOUT, por lo que se puede solucionar así:

# PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2 >&1)


Saludos,

Ramsés



--
               \\- -//
               ( @ @ )
????????????oOOo-(_)-oOOo?????????????????
?                                        ?
? From my TI 99 4/a - a bit delayed      ?
? During delivery no animals harmed      ?
?                                        ?
? Linkedin / URL / DEBIAN / BLOG ?
? ?
? https://www.youtube.com/user/dcialdella
? https://es.linkedin.com/in/dcialdella
?
? https://dockertips.com ?
? https://itprofesionales.blogspot.com ?
? https://www.debian.org/consultants/#ES ?
? ?
????????????oOOo-(_)-oOOo?????????????????
??????????????oOoOoOoOo???????????????????
Changed 2017-07.