ā12-03-2020 08:25 PM
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
Solved! Go to Solution.
ā12-03-2020 11:23 PM
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()
ā12-04-2020 02:34 PM
The code you posted is working fine. I am trying to create a function out of the section that creates a list of all ports and then call that function.
Error: SyntaxError: ("no viable alternative at input '('", ('<string>', 19, 3, 'def(port_list):\n'))
ā12-04-2020 02:24 PM
Hello Cuck,
what isnāt working?
Error message?
ā12-04-2020 02:18 PM
Trying to further refine this by creating functions, but the below doesnāt work.
import re
import commands
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
    
def main():
    cli_result = emc_cli.send("clear port vlan " + portstring)  
    cli_result = emc_cli.send("set port alias " + portstring + " NAC")
    cli_result = emc_cli.send("set macauthentication port enable " + portstring)
    cli_result = emc_cli.send("set multiauth port mode auth-reqd " + portstring)
    cli_result = emc_cli.send("set multiauth port numusers 4 " + portstring)
    cli_result = emc_cli.send("set pwa portcontrol enable " + portstring)
    cli_result = emc_cli.send("save config")
port_list() 
main()
ā12-03-2020 11:42 PM
Thanks so Much!
ā12-03-2020 11:23 PM
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()
