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 

Responder a