first commit
This commit is contained in:
96
openwrt/source_analyse.pl
Normal file
96
openwrt/source_analyse.pl
Normal file
@@ -0,0 +1,96 @@
|
||||
use Mojo::UserAgent;
|
||||
use Data::Printer;
|
||||
use File::Slurp;
|
||||
use JSON;
|
||||
|
||||
my $ua = Mojo::UserAgent->new;
|
||||
$ua->max_redirects(1);
|
||||
|
||||
my $openwrtversion = '24.10.0-rc2';
|
||||
my @routers = (
|
||||
{
|
||||
ip => '192.168.2.1',
|
||||
name => 'HWR',
|
||||
router => 'wr3000'
|
||||
},
|
||||
{
|
||||
ip => '192.168.2.142',
|
||||
name => 'DACH',
|
||||
router => 'x5000r'
|
||||
}
|
||||
);
|
||||
my $sources = {
|
||||
x5000r => [
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/targets/ramips/mt7621/packages/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/mipsel_24kc/base/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/mipsel_24kc/luci/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/mipsel_24kc/packages/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/mipsel_24kc/routing/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/mipsel_24kc/telephony/Packages.manifest"
|
||||
],
|
||||
wr3000 => [
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/targets/mediatek/filogic/packages/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/aarch64_cortex-a53/base/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/aarch64_cortex-a53/luci/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/aarch64_cortex-a53/packages/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/aarch64_cortex-a53/routing/Packages.manifest",
|
||||
"https://downloads.openwrt.org/releases/$openwrtversion/packages/aarch64_cortex-a53/telephony/Packages.manifest"
|
||||
],
|
||||
};
|
||||
|
||||
my $json = {};
|
||||
|
||||
for my $router ( keys %{$sources} ) {
|
||||
$json->{$router} = {};
|
||||
for my $t ( @{$sources->{$router}} ) {
|
||||
my $tx = $ua->get($t)->result->body;
|
||||
my @packages = $tx =~ /Package: (.*)/g;
|
||||
my @size = $tx =~ /Size: (.*)/g;
|
||||
my @version = $tx =~ /Version: (.*)/g;
|
||||
|
||||
my $cnt = 0;
|
||||
for my $tr ( @packages ) {
|
||||
$json->{$router}->{$tr} = {
|
||||
version => $version[$cnt],
|
||||
size => $size[$cnt],
|
||||
};
|
||||
$cnt ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for my $r ( @routers ) {
|
||||
my $name = $r->{name};
|
||||
my $namerouter = $r->{router};
|
||||
my $ip = $r->{ip};
|
||||
|
||||
my $newpack = "$namerouter\_new_packages_$name.txt";
|
||||
my $missingpack = "$namerouter\_missing_packages_$name.txt";
|
||||
|
||||
my $l = `ssh root\@$ip "opkg list-installed"`;
|
||||
my @routerdata = split(/\n/, $l);
|
||||
|
||||
my $maxsize = 0;
|
||||
write_file($newpack, '-uboot-envtools');
|
||||
write_file($missingpack, '');
|
||||
|
||||
my $newpackage = {};
|
||||
|
||||
for my $pac ( @routerdata ) {
|
||||
chomp $pac;
|
||||
my ( $paket ) = split( ' - ', $pac );
|
||||
|
||||
if ( $newpackage->{$paket} ) {
|
||||
print "$paket: already in source\n";
|
||||
} else {
|
||||
|
||||
if ( $json->{$namerouter}->{$paket} ) {
|
||||
$newpackage->{$paket} = 1;
|
||||
$maxsize = $maxsize + $json->{$namerouter}->{$paket}->{size};
|
||||
append_file($newpack, " $paket\n");
|
||||
} else {
|
||||
append_file($missingpack, " $paket\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user