Ich habe versucht, dies selbst zu tun, und habe es mir ausgedacht. Wahrscheinlich gibt es einen einfacheren Weg, aber das habe ich mir ausgedacht.
Bereiten Sie zunächst Pipes vor, mit denen das Benchmarking-Programm über die SSH-Verbindung kommuniziert.
$ mkfifo /tmp/up /tmp/down
Stellen Sie dann im ControlMaster-Modus eine Verbindung her, ohne einen Remote-Befehl auszuführen. Auf diese Weise können wir uns interaktiv beim Host authentifizieren. Nachdem die Verbindung hergestellt wurde, "hängt" SSH hier im Vordergrund.
$ ssh $HOST -N -M -S /tmp/control
Führen Sie cat
in einem parallelen Terminal remote im Hintergrund aus. Es wird unser Echoserver sein, dessen Latenz wir messen werden. Ein- und Ausgänge sind mit FIFOs verbunden:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
Und dann ein kleines Programm benchmarken (ein Byte an up
FIFO senden , ein Byte vom down
FIFO empfangen ):
$ python -m timeit -s 'import os' \
'os.write(3, "z"); z=os.read(4, 1); assert z=="z", "got %s" % z' \
3>/tmp/up 4</tmp/down
10 loops, best of 3: 24.6 msec per loop
Das Maß zeigt offensichtlich die Round-Trip-Latenz. Wenn Sie den Test wiederholen müssen, führen Sie die letzten beiden Befehle ( ssh
und python
) erneut aus.
Wenn etwas schief zu gehen scheint, verwenden Sie das SSH- -v
Flag, um mehr Debugging-Ausgaben zu erhalten.