#!/usr/bin/perl -w # From: Dean Gaudet # # cheap hack that sits in a pipeline to do bandwidth limiting... # use it for stuff like: # # tar cf - . | throttle 12 1024 | ssh remote 'cd dest; tar xBf -' use strict; $#ARGV == 1 || die "usage: $0 kbytes-per-sec buffer-size\n"; my $kbytes = shift; my $bufsiz = shift; my $interpacket_delay = ($bufsiz/1024.0)/$kbytes; my $buf; my $total = 0; while (sysread(STDIN, $buf, $bufsiz) > 0) { while ($buf ne '') { my $amt = syswrite(STDOUT, $buf); defined($amt) || die "error writing: $!\n"; $total += $amt; printf STDERR "%15u\r", $total; $buf = substr($buf,$amt); } select(undef, undef, undef, $interpacket_delay); }