Difference between revisions of "Grab.pl"
Jump to navigation
Jump to search
| Line 1: | Line 1: | ||
| + | ==Description== | ||
| + | This script converts the output of ibnetdiscover, which is in turn a script that does a mapping of an infiniband network, into a format suitable for inputting into the ''dot'' program. This then generates a GIF image of the mappings. | ||
| + | ==Code== | ||
<pre> | <pre> | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
Latest revision as of 17:00, 21 February 2008
Description
This script converts the output of ibnetdiscover, which is in turn a script that does a mapping of an infiniband network, into a format suitable for inputting into the dot program. This then generates a GIF image of the mappings.
Code
#!/usr/bin/perl
$tmpfile = "/tmp/ib.txt";
open(OUT, ">test.dot");
@output = `ssh -x submit ibnetdiscover --switch-map ib.map`;
for ($i=0; $i<=$#output; $i++) {
@fields = split(/\s+/, @output[$i]);
@vendid = split(/=/, @fields[0]);
if (@fields[0] eq 'Switch') {
$n1 = @fields[4];
$switch=1;
next;
}
if (@vendid[0] eq 'vendid') {
$switch=0;
$n1 = "";
}
if ($switch && @fields[3]) {
$n2 = @fields[3];
$n1 =~ s/\"//g;
$n2 =~ s/\"//g;
$n1 =~ s/\-/_/g;
$n2 =~ s/\-/_/g;
@n1 = split(/\./, $n1);
@n2 = split(/\./, $n2);
if (@n1[0] && @n2[0]) {
print OUT "\t" . @n1[0] . " -> " . @n2[0] . ";\n";
}
}
}
close(OUT);
system ("cat test.dot | sort -r | uniq > test.sorted");
open (OUT, ">test.dot");
print OUT "digraph G {\n";
print OUT "\trankdir = LR;\n";
print OUT "\tranksep = \"2.0\";\n";
print OUT "\t{ rank = same;\n";
print OUT "\t \"ib9601\"; \"ib9602\";\n";
print OUT "\t};\n";
close (OUT);
system ("cat test.sorted >> test.dot");
system ("echo '}' >> test.dot");
system ("dot -Tgif test.dot -o graph.gif");
system ("rm test.dot test.sorted");