<?php $interface="eth0"; // $server="my-host.no-ip.org -p 1022 -i /home/user/.ssh/my-key"; // $logfile="/usr/local/logs/trafic-balancer.log"; // , logrotate $curdate=0; function echolog($str) { global $logfile; file_put_contents($logfile, $str, FILE_APPEND); echo($str); } echolog("\n".date('r')." \t\n"); while(true) { $f=@fopen("/proc/net/dev", "r"); $stat=null; while($str=fgets($f)) { if(strpos($str, $interface)!==false) { $stat=$str; break; } } fclose($f); if($stat) { $stat=preg_replace("/\s+/", " ", $stat); $nums=explode(" ", $stat); // $rx_g=round($nums[2]/1024/1024); $tx_g=round($nums[10]/1024/1024); $delta_g=$rx_g*4-$tx_g; // if($curdate!=date('j')) // { if($curdate) echolog("\n".date('r')." \t $curdate : RX:$rx_d Mb, TX:$tx_d Mb, : $delta_d Mb\n"); $curdate=date('j'); $rx_d=0; $tx_d=0; $rx_s=$rx_g; $tx_s=$tx_g; } $rx_d=$rx_g-$rx_s; $tx_d=$tx_g-$tx_s; $delta_d=$rx_d*4-$tx_d; $delta=max($delta_g, $delta_d); if(($delta>0)&&(date('G')>8)) { if($delta>1000) // 1, $size=round(rand(1000, min($delta/2, 5000))); // , else $size=round(rand($delta*2, $delta*3)); // echolog("\n".date('r')." \t: : $delta_g Mb, : $delta_d Mb, $size Mb\n"); passthru("dd if=/dev/zero bs=1M count=$size | ssh $server 'cat > /dev/null'"); } else echolog('.'); } else echolog("\n".date('r')." \t !\n"); sleep(round(rand(10, 600))); } ?>
Source: https://habr.com/ru/post/140697/
All Articles