cancel
Showing results for 
Search instead for 
Did you mean: 

B-Series with multiple ports

B-Series with multiple ports

cslayton
New Contributor

I have a python script that I’m using for B-series switches to configure multiple ports at the same time.

 

#@METADATASTART
#@ScriptDescription "Change port from static to NAC".
#@DetailDescriptionStart
##############################################################################
#
#Purpose: "Change port from static to NAC".
#
# Version : 1.0
#
# This script deletes selected ports from all vlans, sets "display-string" and
# "description-string" to "NAC_Port".  Finally, the configuration is saved.
##############################################################################
#@DetailDescriptionEnd
#
#@MetaDataEnd
import re
import commands

def main():
    
    if "port" in emc_vars:
        ports = emc_vars["port"]
    else:
        print "Please select at least one PORT if you start the script"
        return 0
    
    cli_result = emc_cli.send("clear port vlan " + ports)  

main()

However, I get the following output:

deerl1sw006(su)->clear port vlan ge.1.7,ge.1.8
Invalid Port in [port-string]. 

The B-Series switch needs to use ; instead of , to separate interfaces.  Is there anyway to fix this?

Chuck

 

1 ACCEPTED SOLUTION

StephanH
Valued Contributor III

Hello Chuck,

 

try this:

 

#@METADATASTART
#@ScriptDescription "Change port from static to NAC".
#@DetailDescriptionStart
##############################################################################
#
#Purpose: "Change port from static to NAC".
#
# Version : 1.0
#
# This script deletes selected ports from all vlans, sets "display-string" and
# "description-string" to "NAC_Port". Finally, the configuration is saved.
##############################################################################
#@DetailDescriptionEnd
#
#@MetaDataEnd
import re
import commands

def main():

if "port" in emc_vars:
ports = emc_vars["port"].split(",") #create a list with all ports
else:
print "Please select at least one PORT if you start the script"
return 0

portcounter = 0
for port in ports: #walk through the list
if portcounter == 0:
portstring = port
else:
portstring = portstring + ";" + port #fill in the separator you need
portcounter += 1

cli_result = emc_cli.send("clear port vlan " + portstring)

main()

 

Regards Stephan

View solution in original post

15 REPLIES 15

cslayton
New Contributor

Once again, you nailed it!

StephanH
Valued Contributor III

Ah yes I see it. Change the insert for the line “return portsting” in that way that it is inline with word for.

The line insertion has to be the same. In the moment the return ends after the for loops run once.

Regards Stephan

cslayton
New Contributor

Stephan, sorry to bother again, but this only uses the first port (if I selected multiple ports).

Chuck

cslayton
New Contributor

Ah, got it!  This works!

GTM-P2G8KFN