Scripting for Cisco MDS

Though I know writing Scripts for Cisco MDs switches (as I don't rely on FM/DM GUI), I am wondering how to include comments in a script for better readability. Would appreciate if anyone could point me to the direction where it is been documented or how to do it.
Thanks
Mohan

With regards to your questions:
1- No, you must create the script externally to the MDS as specified in the doc listed below.
http://www.cisco.com/univercd/cc/td/doc/product/sn5000/mds9000/1_3_1/sw_confg/cnfig.pdf
You can however create a cron job on a host and login to the MDS via SSH providing Passwordless access to run a script. Let me know if this is something you would like to pursue.
2- Yes, this is a feature in version 2.0(1b) which was released recently to Cisco.com, look under "Command Scheduler" in the following link.
http://www.cisco.com/univercd/cc/td/doc/product/sn5000/mds9000/2_0/ol624901.htm

Similar Messages

  • TcL Scripting for Cisco IOS,

    anyone has idea how useful this book
    TcL Scripting for Cisco IOS,
    http://www.ciscopress.com/bookstore/product.asp?isbn=1587059541
    thank you

    Hi Joe
    it is interesting that you are the technical reviewer of this book
    i was think to get mid level in Tcl scripting with EEM to give me the ability to  implement some automated things
    i am good with EEM but Tcl not
    will this book take the reader from scratch to tcl scripting ?
    thank you and happy new year
    Marwan

  • AAA for Cisco MDS Switches

    I have configured Cisco ACS 4.0 (TACACS) with Windows AD for all Cisco MDS switches and it is working fine. But local "admin" access to the Cisco MDS switches via telnet is not working. At the same time , if I create a user with "network-admin" role locally, that works but not the default admin user.
    Could anyone help me in this regard.

    You have two options.
    1. Configure an "admin" user in AD. (note that you don't have to use the account named admin, you can just as easily assign a local user with the network-admin role).One thing to note, is that you normally use this local account in case the tacacs+ or radius authentication server goes down.
    You can have users configured locally and AD at the same time. If you are running AAA the default config is to check your AAA servers first, if they are not available, then to default to a local account
    2. Configure your local network-admin role user and then specify that say console access is authenticated locally, while ssh and telnet is authenticated through tacacs. This will allow you to always get in with a local account through the console, while it will force SSH and Telnet connections to authenticate through the AAA servers.
    You can find this option in Device Manager > Security > AAA > Applications
    If you found this helpful, please give it a rating.

  • Need help for writing script for Cisco GSS

    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:"Table Normal";
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-qformat:yes;
    mso-style-parent:"";
    mso-padding-alt:0in 5.4pt 0in 5.4pt;
    mso-para-margin:0in;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:"Times New Roman";
    mso-fareast-theme-font:minor-fareast;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;
    mso-bidi-font-family:"Times New Roman";
    mso-bidi-theme-font:minor-bidi;}
    We would like to know if running script from DB server it can activate and suspend of answer group instances

    Definitely the wrong forum.
    The forum you arre looking for can be found here:
    http://forum.keithley.com

  • Does cisco MDS 9000 switch by default set a little higher R_T_TOV?

    Hi, All:
    Not sure anyone has done LOS for cisco MDS 9000 switch before. I tried to insert code violation which is equal to 103ms but only see link reset but not NOS/OLS. is it because that Cisco MDS has default higher ? Or can we set R_T_TOV on switch?

    Hi Larry - [this|http://lists.apple.com/archives/usb/2008/Oct/msg00021.html] was the only thing I could find about transactions timing out, but since you don't have anything plugged in, it really doesn't apply. Have you tried resetting your SMU?
    If that doesn't work, run Disk Utility from your install disc and see what it comes up with. Your suspicion that the MB may be faulty is probably correct, and if you are still within the 90 day warrant period, you should call the repair place and have them replace it yet again.

  • CSS keepalive script for LDAP (Novell)

    I need an advanced script for Cisco CSS11000 for LDAP keepalive. The problem is the built-in script is too rudimental, what it does is just check the tcp 389 connection to the servers plus some expected bind response code "0A, 01, 00". But what happened for us is when the LDAP server (Novell) is doing DS repair, in which the server is too busy to handle the real LDAP call but still reply the tcp 389 request, CSS think it is still alive.
    We want a smart script that can handle real LDAP call (like a LDAP client) and send a real LDAP request instead of a simple tcp 389 request. Does anyone have any idea?
    Thanks in advance,
    Thanks in advance,
    Dave

    with the CSS script language you can send binary data and receive binary response.
    If you know what port to send the request to, what are the binary data and what is the expected binary response, we can easily do a script for you.
    The easiest way to get the binary info is to make a LDAP query and capture it with sniffer.
    Also capture the response.
    Make sure to do a query that will always result in the same response.
    Once you have this data, you can try to update the ldap script yourself [hint: use the raw keyword when sending the data].
    Or post the info here and will try to make a script for you.
    Gilles.

  • Cisco UT Lite script for windows 2012

    Hi;
    Will Cisco UT Lite script (for Prime LMS 4.2.4) will support with windows Active directory and domain controller on Windows 2012?
    If yes can you please share Link, I try to search but unfortunitly I counldn't found. All document refere till Windows 2003.
    Thanks for your cooperation.
    Best regards;
    Shoaib

    Hi Shoaib,
    there is no workaround. utlite script is supported on below platform only.
    •Windows 2008
    •Windows XP with SP2 or SP3
    •Windows Vista
    Thanks-
    Afroz
    [Do rate the useful post]

  • Using Cisco MDS 9148 switch for switching and routing

    Hi Gurus,
    Can you please advice me! Can i configure interface trunking, routing and dhcp services on the Cisco MDS 9148 switch?
    Thanks for your response!!

    Tommy,
    MDS9148 is a Storage SAN Fibre Channel switch, it doesn't support Ethernet, IP, VLANs, VLAN trunking, 802.1Q, IP routing, DHCP. It's meant for Fibre Channel connectivity between Fibre Channel server HBAs and Fibre Channel storage.
    Roman

  • Cisco MDS Vsan for EVA8100 and EMC Clariion (Same or Seperate)

    We have EMC Clariion Frame CX600,CX700 and Cisco MDS Fabric with 2 VSANS currently.
    We have just procured EVA8100 and wanted to find out, do we create 2 additional VSANS to support it or add EVA8100 in the existing VSANS.
    IVR is not enabled on Cisco MDS.
    Also we'll be phasing out the EMC frames and want to migrate data from Clariion LUNS , so debating to put EVA8100 in same VSANS, so data can be migrated over same VSANS.
    Also heard that earlier if EMC Clariion was brought online before EVA frame then CommandView would not find EVA, so EVA needs to be booted first (May have been fixed).
    Thanks

    G'day,
    You do not need to create new vsan's when adding new devices to a fabric. You will however need to change the zoning configuration to allow hosts to see the newly attached storage array.
    VSAN's are a way of segregating traffic within a single physical fabric. One good method of using them is to segregate development from production traffic.
    For further info on VSAN's see "http://www.cisco.com/en/US/netsol/ns340/ns394/ns259/ns261/networking_solutions_white_paper09186a0080114c21.shtml"
    Cheers

  • Scripting reboot for Cisco 300 Series switches

    I would like to have some help putting together a script for rebooting our 300 series POE switches. I have about 150 at this stage to administer and it would make it much easier not to have to remotely reboot them. The IP settings will be the same for each location and we have about 2-5 in each location. I will be logging in through logmein to each remote server, and will run the scripts from this to the local switches. Any help would be appreciated.

    I was playing with my Indigo on an SG-500 and it seems to work.  Create a session for each switch and in the session properties for each switch enter your crendentials (user/pass) IP/port, etc, I was using telnet, port 23 for this and then under the send command tab, on connection I entered:
    reload
    y
    One command per line up to 20 commands I believe and it connected, I saw my prompts and replies and then shutting down.
    So if you try this you can just go down the file tree list for switches with cameras than need a reboot and restart the entire switch if you like, quick and easy.
    You could also add a folder for each switch and a session in that folder possibly for each camera/port with online port number changing for each camera in the session properties and then selectively cycle power for just the affected cameras.
    Example for port 22/camera xxxx:
    conf t
    int gi22 
    power inline never
    power inline auto
    It would take a fair amount of time to set up but once done you could just pick a switch folder and the port in that switch to cycle.  If you have multiple port on a switch you could use
    conf t
    int range gi22-24
    or 
    int range gi1,6,16,20
    power inline never
    power inline auto
    might have to verify that syntax

  • AAA and Cisco MDS switches.........

    have configured Cisco ACS 4.0 (TACACS) with Windows AD for all Cisco MDS switches and it is working fine. But local "admin" access to the Cisco MDS switches via telnet is not working. At the same time , if I create a user with "network-admin" role locally, that works but not the default admin user.
    Could anyone help me in this regard.

    local. Below is the script I used to configure TACACS (Cisco ACS 4.0) on Cisco MDS switches.
    config t
    # Enable TACACS+
    tacacs+ enable
    tacacs-server host nnn.nnn.nnn.nnn key 0 xxxxxx
    tacacs-server host mmm.mmm.mmm.mmm key 0 xxxxx
    # Specify TACACS+ Server groups
    aaa group server tacacs+ tacgrp
    server nnn.nnn.nnn.nnn
    server mmm.mmm.mmm.mmm
    aaa authentication login default group tacgrp
    aaa authentication login console local
    # Enable TACACS+ Accounting
    aaa accounting default group tacgrp local
    end
    copy running-config startup-config
    Thanks
    MOhan

  • Cisco MDS 9513/9509 LDAP/AD Auth via SSH & Fabric Manager

    Hello Folks,
    I am trying to look for working config with LDAP auth over SSH. I know how to use them over TACACS+ & Radius. But due to other internal issue, currently I am trying to get the Cisco MDS to directly auth using LDAP/AD. Also, I see no option of LDAP/AD in FM(Fabric Manager), but just TACACS+, Radius, LocalFM and MDS. Do using MDS uses default auth(ie whatever AAA authentication is configured for ? or local DB on the switch).  Does the new DCNM supports LDAP/AD auth on the GUI ?
    Larger goal is SSH(CLI) & FM(GUI) using the same LDAP/AD auth. I understand the snmp-server user issue. But once I have SSH working over LDAP/AD I can figure that out to..
    Here's what I need to ensure when using LDAP/AD auth
    1) What is the exact config for this LDAP/AD auth
    2) How do I ensure that network-admin & network-opertor roles are assigned when certain AD Groups Logins in Like ADMIN-AD-GROUP , OPERATOR-AD-GROUP --> trying to login to the switch
    3) Also using SSL port for LDAP, do details are encrypted over the network.
    4) Do I need to use the PASSWORD in paintext when BINDING the BaseDN ?, can it be an encrypted password.
    Appreciate any info on this. Thanks for your time.

    As of DCNM 6.1 (aka - Fabric Manager Server) we support LDAP authentication adding to existing Radius, TACACS+, local and switch authentications.  You can upgrade from Fabric Manager 5.0 to DCNM 5.2 to DCNM 6.1 if you like to keep current performance, events, config data alive.  We do recommend fresh install as we don't know what state your server dabatabase might be in.  Including some links for you to help out with deployment and best practices (see release notes).
    Resources:
    Main Website:
    http://www.cisco.com/go/dcnm
    How To Video Series:  http://www.cisco.com/en/US/prod/netmgtsw/ps6505/ps9369/cisco_dc_nm_video_library.html
    Install and Licensing Guide:
    http://www.cisco.com/en/US/products/ps9369/prod_installation_guides_list.html
    Evaluation Licenses: http://tools.cisco.com/SWIFT/LicensingUI/Home?FormId=65
    Download Linux and Windows Executables: http://www.cisco.com/cisco/pub/software/portal/select.html?&i=!m&mdfid=281722751
    Data Sheets: http://www.cisco.com/en/US/prod/collateral/netmgtsw/ps6505/ps9369/data_sheet_c78-639737.html
    Install Guide: http://www.cisco.com/en/US/products/ps9369/prod_installation_guides_list.html
    Configure Guide:  http://www.cisco.com/en/US/products/ps9369/products_installation_and_configuration_guides_list.html
    API Programming Guide:
    http://www.cisco.com/en/US/products/ps9369/products_programming_reference_guides_list.html
    Reference Guide: http://www.cisco.com/en/US/products/ps9369/prod_technical_reference_list.html
    Release Notes: http://www.cisco.com/en/US/products/ps9369/tsd_products_support_general_information.html

  • RTP for Cisco IP Phones

    Hello friends!
    I'm developing an application for Cisco IP Phones that whorks with JMF. Since there are some programmers in this forum that knows Cisco IP phones, I send my question here.
    I was send succefully the XML message to phone (CiscoIPPhoneExecute), I was customized the paket's size to 160, etc. All works aparently. But audio stream does not reach to phone. Can anyone tell me why??
    Below I write my source code.
    Tanks!
    Max.
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import org.apache.xerces.impl.dv.util.Base64;
    import javax.media.*;
    import javax.media.control.*;
    import javax.media.format.*;
    import javax.media.protocol.*;
    * @author  Administrator
    public class MMHTTPPost {
        /** Creates a new instance of MMHTTPPost */
        public MMHTTPPost() {
            try {
                 * Envia el CiscoIPPhoneExecute al telefono
                String xml = new String("<CiscoIPPhoneExecute>"+
                                            "<ExecuteItem Priority=\"0\" URL=\"RTPRx:Stop\"/>"+"<ExecuteItem Priority=\"1\" URL=\"RTPRx:10.1.15.10:23480\"/>"+
                                            "</CiscoIPPhoneExecute>");
                String  userId      = "Max",
                        password    = "12345",           
                        basicAuth   = "Basic ",           
                        params      = "XML=" + URLEncoder.encode(xml, "ISO-8859-1" );    
                byte[]  bytes       = params.getBytes();
                // Create a URL pointing to the servlet or CGI script and open an HttpURLConnection on that URL       
                URL url = new URL( "http://10.1.15.56/CGI/Execute" );       
                HttpURLConnection con = ( HttpURLConnection ) url.openConnection();       
                // Indicate that you will be doing input and output, that the method is POST, and that the content       
                // length is the length of the byte array       
                con.setDoOutput( true );       
                con.setDoInput( true );       
                con.setRequestMethod( "POST" );       
                con.setRequestProperty( "Content-length", String.valueOf( bytes.length ) );
                // Create the Basic Auth Header       
                Base64 encoder = new Base64();
                basicAuth = (String)encoder.encode( ((String)(userId + ":" + password)).getBytes() );
                System.out.println("Codificado: " + basicAuth);
                con.setRequestProperty( "Authorization", "Basic " + basicAuth.trim() );
                // Write the parameters to the URL output stream       
                OutputStream output = con.getOutputStream();       
                output.write( bytes );       
                output.flush();       
                // Read the response       
                BufferedReader input = new BufferedReader( new InputStreamReader( con.getInputStream() ) );       
                while ( true ) {           
                    String line = input.readLine();           
                    if ( line == null )                
                        break;           
                    System.out.println( line );       
                input.close();       
                output.close();       
                con.disconnect();
                 * Aca empieza la parte RTP/JMF
                // Create a Processor for the selected file. Exit if the       
                // Processor cannot be created.       
                Processor processor = null;       
                try {           
                    String mediaUrl = "file:\\C:\\pruebas execute\\spacemusic.au";
                    processor = Manager.createProcessor( new MediaLocator(mediaUrl));       
                } catch (IOException e){           
                    System.out.println("Exception occured (1a): " + e);       
                } catch (NoProcessorException e){           
                    System.out.println("Exception occured (1b): " + e);       
                // configure the processor       
                //processor.configure();       
                //Espera el estado Processor.Configured
                boolean result = waitForState(processor, Processor.Configured);
                if (result == false)
                    System.out.println("No se pudo configurar el procesador...");
                // Block until the Processor has been configured       
                TrackControl track[] = processor.getTrackControls();       
                boolean encodingOk = false;       
                // Go through the tracks and try to program one of them to       
                // output ulaw data.       
                for (int i = 0; i < track.length; i++)        
                    if (!encodingOk && track[i] instanceof FormatControl)            
                        if (((FormatControl)track).setFormat( new AudioFormat(AudioFormat.ULAW_RTP,8000,8,1)) == null)
    track[i].setEnabled(false);
    else
    encodingOk = true;
    else
    // we could not set this track to ulaw, so disable it
    track[i].setEnabled(false);
    *Aqu? se cambia el tama?o del paquete a 160
    if (((TrackControl)track[i]).isEnabled()) {
    try {
    System.out.println("Cambiando la lista de codecs...");
    Codec codec[] = new Codec[3];
    codec[0] = new com.ibm.media.codec.audio.rc.RCModule();
    codec[1] = new com.ibm.media.codec.audio.ulaw.JavaEncoder();
    //codec[2] = new com.ibm.media.codec.audio.ulaw.Packetizer();
    codec[2] = new com.sun.media.codec.audio.ulaw.Packetizer();
    ((com.sun.media.codec.audio.ulaw.Packetizer)codec[2]).setPacketSize(160);
    ((TrackControl)track[i]).setCodecChain(codec);
    catch (Exception e){
    System.out.println("Error al cambiar el tamano del paquete: " + e);
    System.out.println("Encoding ok?: " + encodingOk );
    // At this point, we have determined where we can send out
    // ulaw data or not.
    // realize the processor
    if (encodingOk)
    //processor.realize();
    // block until realized.
    // get the output datasource of the processor and exit
    // if we fail
    //Espera el estado Processor.Realized
    result = waitForState(processor, Processor.Realized);
    if (result == false)
    System.out.println("No se pudo realizar el procesador...");
    DataSource ds = null;
    try
    ds = processor.getDataOutput();
    catch (NotRealizedError e)
    System.out.println("Exception occured(2): "+e);
    // hand this datasource to manager for creating an RTP
    // datasink.
    // our RTP datasink will multicast the audio
    try
    String mediaUrl= "rtp://10.1.15.56:23480/audio/1";
    MediaLocator m = new MediaLocator(mediaUrl);
    DataSink d = Manager.createDataSink(ds, m);
    d.open();
    d.start();
    catch (Exception e)
    System.out.println("Exception occured(3): "+e);
    catch ( MalformedURLException murlex )
    System.out.println( murlex );
    catch ( IOException ioex )
    System.out.println( ioex );
    * @param args the command line arguments
    public static void main(String[] args) {
    new MMHTTPPost();
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
         return stateLock;
    void setFailed() {
         failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
         p.addControllerListener(new StateListener());
         failed = false;
         // Call the required method on the processor
         if (state == Processor.Configured) {
         p.configure();
         } else if (state == Processor.Realized) {
         p.realize();
         // Wait until we get an event that confirms the
         // success of the method, or a failure event.
         // See StateListener inner class
         while (p.getState() < state && !failed) {
         synchronized (getStateLock()) {
              try {
              getStateLock().wait();
              } catch (InterruptedException ie) {
              return false;
         if (failed)
         return false;
         else
         return true;
    * Inner Classes
    class StateListener implements ControllerListener {
         public void controllerUpdate(ControllerEvent ce) {
         // If there was an error during configure or
         // realize, the processor will be closed
         if (ce instanceof ControllerClosedEvent)
              setFailed();
         // All controller events, send a notification
         // to the waiting thread in waitForState method.
         if (ce instanceof ControllerEvent) {
              synchronized (getStateLock()) {
              getStateLock().notifyAll();

    ignore my last post.. I didn't properly read the source code.
    Anyway, I got g.711 streaming to work. I started out using the AVTransmit2 sample, but set the audio output format to what is used in the source code posted here. I've also applied the same codec chain described above, and that was it.
    I could never get streaming to work using the first RTP streaming method described in the JMF Programmers guide (and this is the method used in the source posted above), but using the RTPManager, things work just fine.

  • Problem : tcl script for filter IPSec cosmetic log

    Hi all, I would like some advice from anyone who ever see this case. I applied tcl script for filter ipsec error log that log is cosmetic. But my site want to don't see this log from router log. I already create tcl script for filter it out. Ok script can work fine but it more work. It filter other message not just ipsec log out. I check cisco device that support script. How can I fix this problem.
    See my detail of script and ios version of router :
    script :
    # VPN_Error.tcl  This script deletes all log messages about VPN error messages
    # The script will filter by combination between facility-serverity and mnemonic      
    # Created on 05-Oct-2012.
    set msgs [list {CRYPTO-4-RECVD_PKT_MAC_ERR} {VPN_HW-1-PACKET_ERROR} {CRYPTO-4-RECVD_PKT_NOT_IPSEC} {CRYPTO-4-PKT_REPLAY_ERR}]
    set fac_sev_mnem "${::facility}-${::severity}-${::mnemonic}"
    foreach msg $msgs {
        if { $msg == $fac_sev_mnem } {
        return ""
    return $::orig_msg
    ios router version :
    : c2800nm-adventerprisek9-mz.124-25f.bin
    : c2800nm-adventerprisek9-mz.124-7b.bin
    log information and configuration
    When I applied command:
    logging filter flash:VPN_Filter2.tcl
    logging buffered filtered 4096 debugging
    show log file:
    router#sh logg
    Syslog logging: enabled (11 messages dropped, 1 messages rate-limited,
                    0 flushes, 0 overruns, xml disabled, filtering enabled)
        Console logging: level debugging, 18145 messages logged, xml disabled,
                         filtering disabled
        Monitor logging: level debugging, 428 messages logged, xml disabled,
                         filtering disabled
            Logging to: vty322(2)
        Buffer logging: level debugging, 0 messages logged, xml disabled,
                        filtering enabled (0 messages logged)
        Logging Exception size (4096 bytes)
        Count and timestamp logging messages: disabled
    Filter modules:
        flash:VPN_Filter2.tcl  
        Trap logging: level informational, 47011 message lines logged
            Logging to 10.145.0.25 (udp port 514, audit disabled, link up), 47011 message lines logged, xml disabled,
                   filtering disabled
            Logging to 10.247.17.41 (udp port 514, audit disabled, link up), 47011 message lines logged, xml disabled,
                   filtering disabled
            Logging to 10.247.17.45 (udp port 514, audit disabled, link up), 47011 message lines logged, xml disabled,
                   filtering disabled
    --More--                          
    Log Buffer (4096 bytes):
    router#
    If you have some more information. Please tell me.
    Thank you for your advice

    It looks like your script has an error.  You have an extra '}'.  It should be:
    # VPN_Error.tcl  This script deletes all log messages about VPN error messages# The script will filter by combination between facility-serverity and mnemonic       # Created on 05-Oct-2012.#set msgs [list {CRYPTO-4-RECVD_PKT_MAC_ERR} {VPN_HW-1-PACKET_ERROR} {CRYPTO-4-RECVD_PKT_NOT_IPSEC} {CRYPTO-4-PKT_REPLAY_ERR}]set fac_sev_mnem "${::facility}-${::severity}-${::mnemonic}"foreach msg $msgs {    if { $msg == $fac_sev_mnem } {        return ""    } } return $::orig_msg

  • Enabling NPIV in CISCO MDS 9500 Series

                       Hello!!!
    If i could get the response for my query.
    I need to enable NPIV as we have VM's to be created and allocate SAN storage to them so my CISCO MDS needs to have NPIV enabled. Following queries linked with this:
    1. Can i enabled NPIV on single Fibre Channel Port or it gets enabled on the complete SAN Switch
    2. Does enabling NPIV impact any other SAN operation. Also my 2- sites are connected via ISL, so is it important to enable NPIV across all my sites or i can enable it only at 1 site where my VM hosts are located.
    3. Any reference document for NPIV and related zoning concept.
    Thanks in advance.
    Faizul Mufti
    9958766711

    Hi,
    1. Can i enabled NPIV on single Fibre Channel Port or it gets enabled on the complete SAN Switch
    whole switch
    feature npiv
    2. Does enabling NPIV impact any other SAN operation. Also my 2- sites are connected via ISL, so is it important to enable NPIV across all my sites or i can enable it only at 1 site where my VM hosts are located.
    Will not impact any other SAN operation.  Non-disruptive.
    "feature npiv" is local to the switch, not fabric wide.  Use this command on any switch you want multiple flogi's on a single interface.
    3. Any reference document for NPIV and related zoning concept.
    I suggest zoning by pwwn
    Regards,
    David

Maybe you are looking for