ssh para o dispositivo remoto e puxando o contador de perda de pacotes.
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
Saída do comando acima:
Tot Pkt Lost : 1083761951
Preciso de um comando que extraia apenas números perdidos do Tot Pkt.
Responder1
Se você tiver GNU grep
, você pode fazer:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -oP 'Tot Pkt Lost\s*:\s*\K\d+'
1083761951
Mas awk
pode ser mais simples e portátil aqui:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
awk '/Tot Pkt Lost/{print $NF}'
1083761951
Responder2
Não há necessidade de usar -E
with grep
nesse caso, pois você não usa uma expressão regular estendida. Você também expande o padrão globbing na máquina local em vez de no sistema remoto, o que pode gerar resultados errados.
Seu comando deve, portanto, ser reescrito como
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost'
Estou usando -F
with grep
aqui porque estou combinando com uma string, não com uma expressão regular. Também estou citando o comando que deve ser executado no host remoto para que o padrão global seja expandido lá, não localmente.
Isso deve fornecer a mesma saída:
Tot Pkt Lost : 1083761951
Para obter apenas dígitos disso, basta passá-lo grep -E -o '[[:digit:]]+'
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost' |
grep -E -o '[[:digit:]]+'
Alternativamente, com sed
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
sed -n 's/^Tot Pkt Lost.*: //p'
Isso corresponderia à Tot Pkt Lost
string no início de cada linha e :
depois dela. Isso excluiria a string correspondente e imprimiria o restante da linha. Todos os outros dados são descartados.