Versions used on cable modem network: Difference between revisions
From D3xt3r01.tk
Jump to navigationJump to search
No edit summary |
m →HOW |
||
(One intermediate revision by the same user not shown) | |||
Line 23: | Line 23: | ||
</source> | </source> | ||
After running the script redirecting the output to a file .. I run this script to identify the versions and model name | After running the script redirecting the output to a file .. I run this script to identify the versions and model name ( I'm using php since it's easier to parse strings ): | ||
<source lang="php"> | |||
#!/usr/local/bin/php -f | |||
<?php | |||
if(!isset($argv[1]) || empty($argv[1])){ | |||
die("Usage is ".$argv[0]." input_file\n"); | |||
} | |||
if(!is_file($argv[1])){ | |||
die($argv[1]." isn't a file."); | |||
} | |||
$file = file_get_contents($argv[1]); | |||
$file = explode("\n", $file); | |||
foreach($file as $line){ | |||
if(stristr($line, 'arris')){ | |||
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9]+?) CM ([a-zA-Z0-9]+?) Cable Modem serial no\. ([0-9]+?), HW_Version ([0-9.\(\)\s]+?), SW_Version ([A-Z0-9.]+?), Bootloader_ver ([0-9.]+?), OS: ([A-Z0-9\s.]*)|is', $line, $out); | |||
if($out[3] == "Arris"){ | |||
$arris[$out[4]][$out[7]][$out[8]][$out[6]]++; | |||
}else{ | |||
echo "There's a problem here: ".$line."\n"; | |||
} | |||
}else if(stristr($line, 'motorola')){ | |||
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:<<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out); | |||
if($out[4] == "Motorola Corporation"){ | |||
$motorola[$out[7]][$out[6]][$out[5]][$out[3]]++; | |||
}else{ | |||
echo "There's a problem here: ".$line."\n"; | |||
} | |||
}else if(stristr($line, 'thomson')){ | |||
if(strstr($line, "E-MTA")){ | |||
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\-\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out); | |||
if($out[5] == "Thomson" && $out[3] == "Thomson PacketCable E-MTA"){ | |||
$thomson[$out[8]][$out[7]][$out[6]][$out[4]]++; | |||
}else{ | |||
echo "There's a problem here: ".$line."\n"; | |||
} | |||
}else{ | |||
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out); | |||
if($out[5] == "Thomson" && $out[3] == "Thomson DOCSIS Cable Modem"){ | |||
$thomson[$out[8]][$out[7]][$out[6]][$out[4]]++; | |||
}else{ | |||
echo "There's a problem here: ".$line."\n"; | |||
} | |||
} | |||
}else{ | |||
// echo $line."\n"; | |||
} | |||
} | |||
echo "ARRIS\n\n"; | |||
print_r($arris); | |||
echo "MOTOROLA\n\n"; | |||
print_r($motorola); | |||
echo "THOMSON\n\n"; | |||
print_r($thomson); | |||
?> | |||
</source> | |||
Hope this helps you upgrade. | |||
[[Category: Linux]] | [[Category: Linux]] | ||
[[Category: Cable Modem]] | [[Category: Cable Modem]] |
Latest revision as of 17:10, 30 June 2009
WHY
I need to upgrade the software version used on most of the modems so I first need to know what's out there. Here's what I did to find out
HOW
I'll get the version via snmp from the modems using this OID which should be available on most modems:
.1.3.6.1.2.1.1.1.0 ( sysDescr.0 )
I'll use BRAA to get the info fast from all the network using this script.
Note: I have modems on 10.0.0.0/21, 10.10.0.0/21, 10.200.0.0/21, 10.210.0.0/21 so feel free to modify to suit your needs !
#!/bin/bash
for i in {0,10,200,210} ; do
for j in `seq 0 9`; do
echo "Doing 10.$i.$j.0-255 now"
braa -d 50 public@10.$i.$j.0-10.$i.$j.255:161:.1.3.6.1.2.1.1.1.0
done
done
After running the script redirecting the output to a file .. I run this script to identify the versions and model name ( I'm using php since it's easier to parse strings ):
#!/usr/local/bin/php -f
<?php
if(!isset($argv[1]) || empty($argv[1])){
die("Usage is ".$argv[0]." input_file\n");
}
if(!is_file($argv[1])){
die($argv[1]." isn't a file.");
}
$file = file_get_contents($argv[1]);
$file = explode("\n", $file);
foreach($file as $line){
if(stristr($line, 'arris')){
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9]+?) CM ([a-zA-Z0-9]+?) Cable Modem serial no\. ([0-9]+?), HW_Version ([0-9.\(\)\s]+?), SW_Version ([A-Z0-9.]+?), Bootloader_ver ([0-9.]+?), OS: ([A-Z0-9\s.]*)|is', $line, $out);
if($out[3] == "Arris"){
$arris[$out[4]][$out[7]][$out[8]][$out[6]]++;
}else{
echo "There's a problem here: ".$line."\n";
}
}else if(stristr($line, 'motorola')){
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:<<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
if($out[4] == "Motorola Corporation"){
$motorola[$out[7]][$out[6]][$out[5]][$out[3]]++;
}else{
echo "There's a problem here: ".$line."\n";
}
}else if(stristr($line, 'thomson')){
if(strstr($line, "E-MTA")){
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\-\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
if($out[5] == "Thomson" && $out[3] == "Thomson PacketCable E-MTA"){
$thomson[$out[8]][$out[7]][$out[6]][$out[4]]++;
}else{
echo "There's a problem here: ".$line."\n";
}
}else{
preg_match('|([0-9.]+?):([0-9]+?)ms:.1.3.6.1.2.1.1.1.0:([a-zA-Z0-9\s]+?) <<HW_REV: ([0-9.]+?); VENDOR: ([a-zA-Z0-9\s]+?); BOOTR: ([a-zA-Z0-9.]+?); SW_REV: ([a-zA-Z0-9\-.]+?); MODEL: ([a-zA-Z0-9.]+?)>>|is', $line, $out);
if($out[5] == "Thomson" && $out[3] == "Thomson DOCSIS Cable Modem"){
$thomson[$out[8]][$out[7]][$out[6]][$out[4]]++;
}else{
echo "There's a problem here: ".$line."\n";
}
}
}else{
// echo $line."\n";
}
}
echo "ARRIS\n\n";
print_r($arris);
echo "MOTOROLA\n\n";
print_r($motorola);
echo "THOMSON\n\n";
print_r($thomson);
?>
Hope this helps you upgrade.