summaryrefslogtreecommitdiffstats
path: root/openbsc/tools
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/tools')
-rwxr-xr-xopenbsc/tools/hlrstat.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/openbsc/tools/hlrstat.pl b/openbsc/tools/hlrstat.pl
new file mode 100755
index 000000000..a3fd2b81e
--- /dev/null
+++ b/openbsc/tools/hlrstat.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+use strict;
+use DBI;
+my $dbh = DBI->connect("dbi:SQLite:dbname=hlr.sqlite3","","");
+
+
+my %mcc_names;
+my %mcc_mnc_names;
+
+sub read_networks($)
+{
+ my $filename = shift;
+ my $cur_name;
+
+ open(INFILE, $filename);
+ while (my $l = <INFILE>) {
+ chomp($l);
+ if ($l =~ /^#/) {
+ next;
+ }
+ if ($l =~ /^\t/) {
+ my ($mcc, $mnc, $brand, $r) = split(' ', $l, 4);
+ #printf("%s|%s|%s\n", $mcc, $mnc, $brand);
+ $mcc_mnc_names{"$mcc-$mnc"} = $brand;
+ $mcc_names{$mcc} = $cur_name;
+ } elsif ($l =~ /^(\w\w)\t(.*)/) {
+ #printf("%s|%s\n", $1, $2);
+ $cur_name = $2;
+ }
+ }
+ close(INFILE);
+}
+
+read_networks("networks.tab");
+
+my %oper_count;
+my %country_count;
+
+my $sth = $dbh->prepare("SELECT imsi FROM subscriber");
+
+$sth->execute();
+
+while (my $href = $sth->fetchrow_hashref) {
+ my ($mcc, $mnc) = $$href{imsi} =~ /(\d{3})(\d{2}).*/;
+ #printf("%s %s-%s \n", $$href{imsi}, $mcc, $mnc);
+ $oper_count{"$mcc-$mnc"}++;
+ $country_count{$mcc}++;
+}
+
+
+foreach my $c (keys %country_count) {
+ printf("%s: %d\n", $mcc_names{$c}, $country_count{$c});
+}
+ foreach my $k (keys %oper_count) {
+ printf("\t%s: %d\n", $mcc_mnc_names{$k}, $oper_count{$k});
+ }
+#//}