¿Cómo get el time de ejecución de SCP en milisegundos?

Tengo un script en el que estoy leyendo la dirección IP de origen y destino de un file csv y el time en milisegundos que está tardando en copyr el file desde el origen hasta el destino (usando scp). A continuación está mi script.

#!/bin/bash while IFS="," read f1 f2 do echo "Source IP : $f1" echo "Destination IP : $f2" export sourceIP=$f1 export destIP=$(echo "$f2" | tr -d '\n') ssh -t -t sjain@$f1 'bash -s' <<ENDSSH #Start copying 100MB File startTime=$(($(date '+%s%N')/1000000)) echo \$startTime scp MB_100.txt sjain@$destIP:/home/sjain endTime=$(($(date '+%s%N')/1000000)) echo \$endTime printf 'Elapsed time in copying 33KB file: %s\n' \$((endTime-startTime)) #Write the stats to the file echo $sourceIP','$destIP',33KB,'\$((endTime-startTime)) >> report.txt exit ENDSSH #Write the stats to the file #echo '10.234.0.9,10.234.0.19,33KB,'\$((endTime-startTime)) >> report.txt done < ipaddress.csv 

Salida

 [sjain@XYZ ~]$ #Start copying 100MB File [sjain@XYZ ~]$ startTime=1394659673854 [sjain@XYZ ~]$ echo $startTime 1394659673854 [sjain@XYZ ~]$ scp MB_100.txt sjain@10.XXX:/home/sjain MB_100.txt 100% 100MB 100.0MB/s 00:00 [sjain@XYZ ~]$ endTime=1394659673855 [sjain@XYZ ~]$ echo $endTime 1394659673855 ndTime-startTime)) D01 ~]$ printf 'Elapsed time in copying 33KB file: %s\n' $((e Elapsed time in copying 33KB file: 1 [sjain@XYZ ~]$ #Write the stats to the file Time)) >> report.txt01 ~]$ echo 10.YYY','10.XXX',33KB,'$((endTime-start [sjain@XYZ ~]$ exit exit Connection to 10.YYY closed. 

El problema que estoy enfrentando en este momento, no me está devolviendo el time en milisegundos (creo), está dando en segundos.

Por favor ayuda a solucionar este problema.

Será mejor que uses el time .

Por ejemplo

 TMP=$(mktemp) time (scp yourfile user@otherhost:/path/ ) 2>$TMP awk -F'[ ms]+' '/^real/ {print "copy time: "1000*$2"ms"}' $TMP rm $TMP 

Puede usar el scp en modo detallado y tomar las statistics de time. Reemplace su línea de scp de la siguiente manera:

 scp -v src dest 2>&1 | grep 'Transfernetworking' | awk '{print $(NF - 1) * 1000}' 

Editar: Esto puede no ser preciso al milisegundo.

Con Python, uno puede get una precisión de nivel de microsegundos, por ejemplo.

 #!/usr/bin/env python import subprocess import datetime a=datetime.datetime.now() subprocess.call(["scp", "-r", "a-dir/", "username@machine.name:~/"]) b=datetime.datetime.now() print (ba).microseconds