Converter saída de comando para csv, com registro de data e hora

1

Eu quero testar uma conexão de velocidade com o comando do terminal:

./speedtest-cli

E isso retorna:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Moscow, Russia (77.50.8.74)...
Selecting best server based on latency...
Hosted by East Telecom Ltd (Mytishchi) [10.81 km]: 7.433 ms
Testing download speed........................................
Download: 38.06 Mbit/s
Testing upload speed..................................................
Upload: 23.52 Mbit/s

Eu quero transformar isso em linha csv como:

12-12-2016 12:01 ; 38.06 ; 23.52 ;
12-12-2016 12:11 ; 39.00 ; 21.12 ;
12-12-2016 12:21 ; 37.06 ; 25.00 ;

Estou tentando usar a função grep simples para isso:

grep 'Upload:' test.txt | sed 's/^.*: //'  >> test_res.txt

Mas isso é apenas para obter o número de velocidade do arquivo e apenas reescrever um dos parâmetros. Como gravar a transformação exata no formato necessário. Sou bastante novo no script do bash.

    
por Altenrion 03.06.2016 / 12:37

2 respostas

1
awk  -v date="$(date +%d-%m-%Y\ %H:%M)" -v OFS=';' '/Download:/ { d=$2; }
     /Upload:/ { print date, d, $2, ""; d="" }' speedtest
    
por 03.06.2016 / 12:46
0

Aqui está uma solução pronta: Faça o download do script speedtest-csv e dê permissão de execução:

wget -O speedtest-csv https://raw.githubusercontent.com/HenrikBengtsson/speedtest-cli-extras/master/bin/speedtest-csv

chmod +x speedtest-csv

Próximo passo speedtest-csv para / usr / bin /

mv speedtest-csv /usr/bin/

Gerar cabeçalho de CSV

speedtest-csv --header >> /var/www/html/speedtest.csv

Em seguida, modifique a saída de acordo com suas necessidades, por exemplo, altere a última linha para:

echo $start ";" $upload ";" $download
or
echo $start "Upload:" $upload "Download" $download

UPDATE

Estou anexando um script modificado que resulta no seguinte:

bash speedtest-csv
2016-06-03 14:12:21 Upload: 258.19 Mbit/s Download 242.71 Mbit/s

insira a descrição do link aqui

    
por 03.06.2016 / 12:53