Назад | Перейти на главную страницу

Один вопрос оболочки с ssh

Я обнаружил, что одна команда оболочки может отправлять большие данные на целевой хост:

dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'

Я думаю, что могу использовать это для проверки пропускной способности сети, но он не может отображать статус процесса.

Хорошо, если ты все это обернешь time:

time sh -c "dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'"

это даст вам время, необходимое для завершения передачи. Разделите переданные байты на время, и это ваша пропускная способность.

Для индикатора прогресса вы можете использовать pv, что избавляет от необходимости использовать время (1):

dd if=/dev/zero bs=1024 count=10000 | pv --size 10240000 | ssh user@ip 'cat > /dev/null'

что даст вам хороший индикатор прогресса, особенно если вы загрузите --size аргумент с общим размером перевода.

Если вы хотите проверить пропускную способность сети, есть более прямые способы сделать это.

Проверять ttcp или его замена: nuttcp

[tla ~]$ nuttcp -S

michael@challenger:~$ nuttcp -4 -r tla
   41.5574 MB /  10.46 sec =   33.3336 Mbps 2 %TX 4 %RX
michael@challenger:~$ nuttcp -4 -t tla
   15.4347 MB /  10.13 sec =   12.7821 Mbps 1 %TX 2 %RX 0 retrans 3.30 msRTT

Отправка SIGUSR1 к dd заставит его выводить свой прогресс. Вы можете рассчитать разницу между последующими вызовами, чтобы получить приблизительную скорость.

ты можешь использовать iperf если вы действительно хотите детально проверить возможность подключения.

В противном случае,

Создайте тестовый файл размером 100 МБ

dd if=/dev/urandom of=./test.bin bs=1024000 count=100

затем scp этот файл, чтобы проверить производительность загрузки

scp test.bin x.x.x.x:.

или scp с другой стороны, чтобы проверить производительность загрузки

Обычно для проверки пропускной способности лучше использовать iperf, поскольку в нем нет накладных расходов на шифрование, но вы можете вставить pv между dd и ssh, чтобы увидеть скорость передачи в реальном времени:

dd if=/dev/random | pv | ssh somehost 'cat > /dev/null'

Кроме того, во FreeBSD вы можете отправить SIGINFO на dd, нажав Ctrl + T, после этого будет отображаться некоторая статистика (включая скорость).