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

StephanH
Valued Contributor III

Not nice (and not tested) but only to show you how functions and variables works together:

 

 

import re
import commands


def writeConfig(my_portstring):

cli_result = emc_cli.send("clear port vlan " + my_portstring)
cli_result = emc_cli.send("set port alias " + my_portstring + " NAC")
cli_result = emc_cli.send("set macauthentication port enable " + my_portstring)
cli_result = emc_cli.send("set multiauth port mode auth-reqd " + my_portstring)
cli_result = emc_cli.send("set multiauth port numusers 4 " + my_portstring)
cli_result = emc_cli.send("set pwa portcontrol enable " + my_portstring)
cli_result = emc_cli.send("save config")

def port_list():
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

return portstring

def main():

my_portstring = port_list()
writeConfig(my_portstring)

main()

 

 

Regards Stephan

cslayton
New Contributor
cf13e5dba07740a397c0ef9ccd7de603_fef11e2f-4290-417d-b710-54fc163c42f7.png

 

StephanH
Valued Contributor III

Hello Chuck,

post your complete code, or post with line numbers, please. So we can see what lines are the problem.

Regards Stephan

cslayton
New Contributor

Thanks!  A bit embarrassed I missed something so easy.  However, now I’m getting this:

Traceback (most recent call last):

  File "<string>", line 45, in <module>

  File "<string>", line 36, in main

NameError: global name 'portstring' is not defined

 

StephanH
Valued Contributor III

Here is the error:

“def(port_list)”  should be:  “def port_list():”

 

 

 

Regards Stephan
GTM-P2G8KFN