Gostaria de exibir periodicamente meu resultado da velocidade de download do speedtest no indicador-sysmonitor .
O speedtest-cli possui uma saída um pouco aparada se você executar
$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s
Existe alguma maneira de cortar ainda mais a saída, até o número da velocidade de download?
--no-upload
opção para não exibir o upload também.Respostas:
Como
speedtest-cli
é um programa e uma biblioteca python, é bastante fácil criar um programa alternativo mínimo que apenas realiza um teste de download e imprime a saída.Abra um editor, salve como
dl-speedtest.py
correr com
python dl-speedtest.py
Isso fornece o resultado em
bps, como um número de ponto flutuanteMbps arredondado para um decimal, conforme solicitadoA versão mínima do speedtest-cli para que isso funcione é a 1.0.0, eu acho, você pode precisar usar
pip install speedtest-cli --upgrade
para atualizar.fonte
Esse é um trabalho para
awk
:Explicações
NR==2
- pegue a linha2
{print$2}
- imprime a segunda coluna (separada por espaço){print$2" "$3}
- imprime a segunda coluna seguida por um espaço e a terceiraCom
sed
isso é um pouco mais complicado:Explicações
/D/!d
- procure linhas que contenhamD
e não (!
) asd
excluam, mas todas as outras linhass/A/B/
-s
ubstituteA
comB
.*
- pegue tudo[^ ]*
- pegue tudo o que não é (^
) um espaço␣
(caractere de espaço) - um espaço literal\(…\)
- leve tudo para dentro e salve-o como um grupo\1
- obtenha o conteúdo do grupo 1fonte
Isso também funcionará:
fonte
Você pode tentar isso:
fonte
grep
combinado comsed
, você pode simplesmente usarsed -n
e acrescentarp
no final da expressão, comospeedtest-cli --simple | sed -nr 's/Download:\s*//p'
.E depois há:
Como a primeira opção da sobremesa, embora sem o seletor de linha.
fonte
grep ... | awk
-speedtest-cli --simple | awk '/Download/{print $2}'