#!/usr/bin/perl use lib "/usr/local/lib/perl"; use Wireless; use SystemInfo; use Sitecard2; use strict; use POSIX; my $wlaninfo = Wireless::currentState(); my $sysinfo = new SystemInfo; # Získání jména APčka open DESCRIPTION, "/etc/default/description"; my $apname = $1 if (join ("\n", ) =~ /ap_name="(.*)"/); my $datetime = localtime; my $table_style = "evenactive"; #------------ Prolog stranky ---------------- print < $apname: Přehled bezdrátových spojení

Klfree.Net, $apname

provozuje
Sdružení Klfree.Net P.O. Box 128, 272 80 Kladno 1

Naposledy aktualizováno: $datetime

Bezdrátové sítě

HEAD ; #-------------------------------------------- # Získání seznamu karet my @ifaces = sort $wlaninfo->devices(); foreach my $iface (@ifaces) { my $wl = $wlaninfo->deviceData($iface); my ($essid, $bssid, $mode, $channel, $freq, $signal, $noise, $rate); $essid = $wl->{essid}; $bssid = $wl->{ap}; $mode = $wl->{mode}; $freq = $wl->{freq}; $channel = $wlaninfo->channelNumber($iface, $freq); $signal = $wl->{signal}; $noise = $wl->{noise}; $rate = $wl->{bitrate}; my ($rxBytes, $txBytes) = Sitecard2::WirelessData($iface); #------------- RADEK TABULKY WIFI KARET -------------- print < ROW ; if ($table_style eq "evenactive") { $table_style = "oddactive";} else {$table_style = "evenactive";} } print <

Připojené stanice

SECTION2 ; # Projití všech síťovek a zjištění, zda jsou typu ap nebo Master, pokud ano, vypíšou se její klienti foreach my $iface (@ifaces) { my $wl = $wlaninfo->deviceData($iface); my $iface_type = $wl->{mode}; my $essid = $wl->{essid}; # pokud je $iface_type ap nebo Master, budeme pokračovat if ($iface_type eq "ap" || $iface_type eq "Master") { $table_style = "evenactive"; my %stations = %{$wlaninfo->clients($iface)}; my $count = scalar keys %stations; my $devices = 0; map { $devices += scalar $sysinfo->ipsForMac($_); } keys %stations; print <Vysílač: $essid, $count stanic(e), $devices zařízení
Síťová karta ESSID BSSID Režim Kanál Rychlost SNR Přijato Odesláno
$iface$essid$bssid$mode $channel ($freq GHz)$rate Mbit/s$signal / $noise$rxBytes$txBytes
CLIENTS_HEAD ; # Projití všech klientů foreach my $mac (keys %stations) { my $sta = $stations{$mac}; my @ips; my @hosts; my @conntrack; @ips = ( $sysinfo->ipsForMac($mac) ); # Načítání všech položek my $obscured_mac = substr($mac, 0, 9) . "xx:xx:xx"; my $upload = 0; my $download = 0; open BYTES, "/proc/net/ipt_account/$iface"; while(my $radek = ) { foreach my $ip(@ips) { if($radek =~ /ip = $ip bytes_src = ([\d]+) packets_src = [\d]+ bytes_dest = ([\d]+) packets.*/) { $download += $2; $upload += $1; } } } close BYTES; my $sdownload; if($download < 1024) { $sdownload = "$download B"; } elsif($download < 1024*1024) { $sdownload = floor($download / 1024) ." kB"; } elsif($download < 1024*1024*1024) { $sdownload = floor($download /(1024*1024)) . " MB"; } else { $sdownload = floor($download / (1024*1024*1024)) . " GB"; } my $supload; if($upload < 1024) { $supload = "$upload B"; } elsif($upload < 1024*1024) { $supload = floor($upload / 1024) . " kB"; } elsif($upload < 1024*1024*1024) { $supload = floor($upload / (1024*1024)) . " MB"; } else { $supload = floor($upload / (1024*1024*1024)) . " GB"; } my $last_download = 0; my $last_upload = 0; open STATS, "/tmp/$iface"; while(my $radek = ) { foreach my $ip(@ips) { if($radek =~ /ip = $ip bytes_src = ([\d]+) packets_src = [\d]+ bytes_dest = ([\d]+) packets.*/) { $last_download += $2; $last_upload += $1; } } } close STATS; my $speed_down = 0; my $speed_up = 0; $speed_down = ($download - $last_download) / 60; $speed_up = ($upload - $last_upload) / 60; my $sspeed_down; my $sspeed_up; if($speed_down < 1024) { $sspeed_down = floor($speed_down) . " B/s"; } elsif($speed_down < 1024*1024) { $sspeed_down = floor($speed_down / 1024) . " kB/s"; } else { $sspeed_down = floor($speed_down / (1024*1024)) . " MB/s"; } if($speed_up < 1024) { $sspeed_up = floor ($speed_up) . " B/s"; } elsif($speed_up < 1024*1024) { $sspeed_up = floor($speed_up / 1024) . " kB/s"; } else { $sspeed_up = floor($speed_up / (1024*1024)) . " MB/s"; } my $rowspan = (scalar @ips) || 1; my $snr = $sta->{rssi}; my $max_quality = $sta->{maxQuality}; my $signal_percent = ($snr * 100) / $max_quality; my $rest_percent = 100 - $signal_percent; my $txRate = $sta->{tx_rate}; my $rxRate = $wl->{bitrate}; @hosts = map { $sysinfo->hostName($_); } @ips; @conntrack = map { $sysinfo->totalConnections($_); } @ips; `cp "/proc/net/ipt_account/$iface" "/tmp/wewimo_$iface"`; print < CLIENT ; if (($ips[0] eq "") || ($ips[0] eq"-") || (@ips == 0)) { print < - NO_IPS ; if ($table_style eq "evenactive") { $table_style = "oddactive"; } else { $table_style = "evenactive"; } next; } # No IPs my $counter = 0; my $host_conntrack; foreach my $ip (@ips) { print "" if $counter; my $first = 0; my $hostname = $hosts[$counter]; $host_conntrack = $conntrack[$counter]; if ($host_conntrack eq "") {$host_conntrack= "-";} if (($ip ne '') || ($hostname ne '')) { print < $host_conntrack IPS ; } $counter++; } if ($table_style eq "evenactive") { $table_style = "oddactive";} else {$table_style = "evenactive";} } print < CLIENTS_TAIL ; } } print < (c) Copyright 2005 Belgarat (at) klfree.net, K15 (at) klfree.net, Jan Krajdl. Použití se řídí Licencí Klfree-Debian. TAIL ;
Přijímač Signál Příjem Vysílání Upload Rychlost uploadu Download Rychlost downloadu Počet spojení Název IP adresa
$obscured_mac
$snr/$max_quality
   
$rxRate Mbit/s $txRate Mbit/s $supload $sspeed_up $sdownload $sspeed_down - -
$hostname $ip