Re: Pasar o recoger salida de comandos a variables.
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 to: