ssh al dispositivo remoto y extrayendo el contador de pérdida de paquetes.
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
Salida del comando anterior:
Tot Pkt Lost : 1083761951
Necesito un comando que extraiga solo los números perdidos de Tot Pkt.
Respuesta1
Si tienes GNU grep
, puedes hacer:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -oP 'Tot Pkt Lost\s*:\s*\K\d+'
1083761951
Pero awk
aquí podría ser más simple y más portátil:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
awk '/Tot Pkt Lost/{print $NF}'
1083761951
Respuesta2
No es necesario utilizar -E
with grep
en ese caso ya que no se utiliza una expresión regular extendida. También expande el patrón global en la máquina local en lugar de en el sistema remoto, lo que puede generar resultados incorrectos.
Por lo tanto, su comando debe reescribirse como
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost'
Estoy usando -F
aquí grep
porque estoy haciendo coincidir una cadena, no una expresión regular. También cito el comando que debe ejecutarse en el host remoto para que el patrón global se expanda allí, no localmente.
Esto debería darte el mismo resultado:
Tot Pkt Lost : 1083761951
Para obtener solo dígitos de esto, simplemente páselo por grep -E -o '[[:digit:]]+'
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost' |
grep -E -o '[[:digit:]]+'
Alternativamente, con sed
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
sed -n 's/^Tot Pkt Lost.*: //p'
Esto coincidiría con la Tot Pkt Lost
cadena al principio de cada línea y la :
siguiente. Eliminaría la cadena coincidente e imprimiría el resto de la línea. Todos los demás datos se descartan.