From 1c2c7ea06c9909037f0644791e151c9d7100ef8f Mon Sep 17 00:00:00 2001 From: Cahit Ugur Date: Sun, 28 Aug 2016 15:23:42 +0200 Subject: [PATCH] added switchport.pl --- tools/switchport.pl | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 tools/switchport.pl diff --git a/tools/switchport.pl b/tools/switchport.pl new file mode 100755 index 0000000..e5eceba --- /dev/null +++ b/tools/switchport.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +#Used to switch off or on a given port of a hub within Trbnet + +$address = $ARGV[0]; +$portnum = $ARGV[1]; +$onoff = $ARGV[2]; +$chan = defined($ARGV[3])?$ARGV[3]:"all"; + +if (!defined($address) || !$address || !defined($portnum) || $address =~ /help/) { + print "Usage: switchport.pl \$hubaddress \$port [on|off] (\$channel)\n"; +} + +if($portnum eq "all" && $onoff eq "on") { + $port = 0xfffffff; + } +else { + $port = 1<<$portnum; + } + +sub ex{ + my ($cmd) = @_; + my $err = 0; + $cmd .= " 2>&1"; + my @out = qx($cmd); + foreach my $s (@out) { + print "$s"; + if($s =~ /ERROR/) { + $err = 1; + } + } + if ($err) { + print "\n=========================================================\nSomething seems to be wrong. Ctrl-C might be a good choice."; + getc(); + } + } + + +if($onoff eq "on") { + print("\t\tEnable port $portnum on hub $address channel $chan...\n"); + ex("trbcmd setbit $address 0xc0 $port") if ($chan == 0 || $chan eq "all"); + ex("trbcmd setbit $address 0xc1 $port") if ($chan == 1 || $chan eq "all"); + ex("trbcmd setbit $address 0xc3 $port") if ($chan == 3 || $chan eq "all"); + } + +if($onoff eq "off") { + print("\t\tDisable port $portnum on hub $address channel $chan...\n"); + ex("trbcmd clearbit $address 0xc0 $port") if ($chan == 0 || $chan eq "all"); + ex("trbcmd clearbit $address 0xc1 $port") if ($chan == 1 || $chan eq "all"); + ex("trbcmd clearbit $address 0xc3 $port") if ($chan == 3 || $chan eq "all"); + } + -- 2.43.0