This discussion has been locked. The information referenced herein may be inaccurate due to age, software updates, or external references.
You can no longer post new replies to this discussion. If you have a similar question you can start a new discussion in this forum.

foreach loop fill with variables in range form - Config Change Template

FormerMember
FormerMember

Hi,

I use the temp from an other post here in this Forum for a repeat command in Loop form.

Here you are the script:

/*
.CHANGE_TEMPLATE_DESCRIPTION
        This NCM Configuration Change Template will set a boot variable command to all applicable devices.

.CHANGE_TEMPLATE_TAGS
        Cisco, IOS, 3750

.PLATFORM_DESCRIPTION
        This runs on IOS devices.
 
.PARAMETER_LABEL @ipaddress
        Device IP address

.PARAMETER_DESCRIPTION @ipaddress
        Cisco IOS Image angeben das als Bootvariable gesetzt werden soll. Bsp: c2960s-universalk9-mz.150-2.SE6.bin

.PARAMETER_LABEL @indexes
        IP address (Muster) Bsp: 10.10.10.1

.PARAMETER_DESCRIPTION @indexes
        IP Range angeben der eingefuegt werden soll (Bsp: 1,2,3,4)


*/


script RELOAD_IOS (
                         NCM.Nodes @ContextNode,
                         string @ipaddress, int[] @indexes
                  )
{
string @ipnew

foreach(@id in @indexes)

    {

      @ipnew = setoctet(@ipaddress,3,@id)

      CLI

        {

           Allow @ipnew out

           Allow @ipnew UDP 2055 OUT

        }

    }

}



                   

_______________________________________________________________

The Output of this Looks like this:

Allow 10.10.1.1 out

Allow 10.10.1.1 UDP 2055 OUT
Allow 10.10.2.1 out

Allow 10.10.2.1 UDP 2055 OUT
Allow 10.10.32.1 out

Allow 10.10.32.1 UDP 2055 OUT
Allow 10.10.4.1 out

Allow 10.10.4.1 UDP 2055 OUT

________________________________________________________________

This is ok for now. But I often have a Situation to repeat this for 70-90 devices. I dont want to enter the form like "1,2,3,4,...,70" in this used integer variable. I better would use 1-50 for example.

If I enter in this form I get an error that I have to give it in 1,2,3... form.

I know, theres no Chance to use a normal programmer language for this scripts, but how can I fill the integer arrow?

I think about a for while Loop like foreach (for @id <= @STARTIP; id<=@ENDIP; @id++)  (this is just my Impression, not the complete code)

Sure I read the doku, but I only found the foreach variable for me.

Thanks for Response.

Otto

  • FormerMember
    0 FormerMember

    hi,

    you can try this:

    -snip-

    /*

    .CHANGE_TEMPLATE_DESCRIPTION

            This NCM Configuration Change Template will set a boot variable command to all applicable devices.

    .CHANGE_TEMPLATE_TAGS

            Cisco, IOS, 3750

    .PLATFORM_DESCRIPTION

            This runs on IOS devices.

     

    .PARAMETER_LABEL @ipaddress

            Device IP address

    .PARAMETER_DESCRIPTION @ipaddress

            Base to manipulate

    .PARAMETER_LABEL @indexes

            IP address i.e.: 10.10.10.1

    .PARAMETER_DESCRIPTION @indexes

            fake Variable

    .PARAMETER_DISPLAY_TYPE @indexes

            Listbox:1=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255

    .PARAMETER_LABEL @from

            start loop from #

           

    .PARAMETER_LABEL @to

            end loop #

    */

    script RELOAD_IOS (

                             NCM.Nodes @ContextNode,

                             string @ipaddress,

                             int[] @indexes,

                             int @from,

                             int @to

                      )

    {

    string @ipnew

    foreach(@id in @indexes)

    {

      @ipnew = setoctet(@ipaddress,3,@id)

      if ( @id >= @from )

      {

       if ( @id <= @to )

       {

        CLI

        {

         Allow @ipnew out

         Allow @ipnew UDP 2055 OUT

        }

       }

      }

    }

    }

    -snap-

    • fill a listbox with only one option with values from 0-255
    • parse the listbox content with the avalible foreach loop

    hang loose!

    olf

  • Hi Otto,

    Actually the for loop is possible (although not documented):

    int @i

    for (@i=0;@i<5;@i=@i+1)

    {

         CLI { @i}

    }

    Regards,

    Jiri