Automation

last person joined: 4 days ago 

Ask questions and share experiences about Apstra, Paragon, and all things network automation.
  • 1.  op script to desactivate unused interfaces

    Posted 03-23-2012 02:47

    Hi,

     

    i'm trying to code an op script to desactivate unused interfaces for MX platform

    it works good, but the problem is that my script commit changes one by one (interface by interface), so for some cases, i loose all may rollback files.

    for each unconfigured interface, changes are made and a commit also, so is there a solution to have just one commit at the end of the script.

    Thanks.

     

    this is my scipt :

     

    /*
     * This script disables all unconfigured ge interfaces.
     */
     
    version 1.0;
     
    ns junos = "http://xml.juniper.net/junos/*/junos";
    ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
    ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
     
    import "../import/junos.xsl";
     
    match / {
        <op-script-results> {
        /* Configuration du groupe PortNotUsed*/
       var $config-changes = {
                <configuration> {
                    <groups> {
                        <name> "PortNotUsed";
                        <interfaces> {
                            <interface> {
                                <name> "<*>";
                                <description> "**** Not Used ****" ;
                                <disable>;
                                }
                            }
                        }
                    }
                }
        var $load-action = "merge";
        var $conn_handle = jcs:open();
        var $results := {
        call jcs:load-configuration( $action=$load-action, $configuration=$config-changes, $connection=$conn_handle);
        }
        var $close-results = jcs:close($conn_handle);
        
        
        var $interfaces = jcs:invoke( "get-interface-information" );
     
     
        var $ge-interfaces = $interfaces/physical-interface[starts-with(name, "ge-") or starts-with(name, "xe-")];
     
        var $interface-hierarchy = interfaces;
     
       
        for-each( $ge-interfaces ) {
            var $commande1 = "show configuration interfaces "_ name;
            var $rpc1 = <command> $commande1;
            var $rpcbis1 = jcs:invoke ($rpc1) ;
            
            if (jcs:empty($rpcbis1)) {
                <output> "Disabling unconfigured interface: " _ name;
                var $sys = "Desactivation du port "_name;
                expr jcs:syslog(12, $sys );
                var $config-changes1 = {
                    <configuration> {
                        <interfaces> {
                            <interface> {
                                <name> name;
                                <apply-groups> "PortNotUsed";
                                }
                            }            
                        }
                    }
                var $load-action1 = "merge";
                var $conn_handle1 = jcs:open();
                var $results1 := {
                    call jcs:load-configuration( $action=$load-action1, $configuration=$config-changes1, $connection=$conn_handle1);
                }
                var $close-results1 = jcs:close($conn_handle);
                }
                else {
            <xnm:warning> {
            <message> "is already configured:" _ name;
        }
        }
        }
    }
    }

     

    thank you very much for your help.



  • 2.  RE: op script to desactivate unused interfaces
    Best Answer

     
    Posted 03-24-2012 08:02

    Hi, in order to commit only at the end of the script, you should use the jcs:execute function instead of the jcs:load-configuration.

    I'd also suggest you to lock the configuration at the beginning of the script.

    So these are the steps to follow:

     

    1. Open the connection and lock the configuration database, before entering the for-each cycle:

     

    var $connection = jcs:open();
    var $config-lock =   <lock-configuration>;
    var $lock-results = jcs:execute( $connection, $config-lock );
    			if ($lock-results//xnm:error) { <xnm:error>{<message> "Configuration locking failed!";}}

    2. within the for-each cycle, load each configuration change:

     

    var $load-configuration =   <load-configuration> {
                                                copy-of $config-changes;
                                            }
    var $load-results = jcs:execute( $connection, $load-configuration );
    			if ($load-results//xnm:error) { <xnm:error>{<message> "Configuration loading failed!";}}

     3. After the for-each cycle, commit the configuration, unlock the database and close the connection:

     

    var $commit-configuration = <commit-configuration>;
    var $commit-results = jcs:execute( $connection, $commit-configuration );
    var $config-unlock =   <unlock-configuration>;
    var $unlock-results = jcs:execute( $connection, $config-unlock );
                if ($unlock-results//xnm:error) { <xnm:warning>{<message> "Configuration unlocking failed!";}}
    			
    var $close-results = jcs:close( $connection );
    if ($close-results//xnm:error) { <xnm:warning>{<message> "Disconnection from the router failed!";}}

     You can find some reference about those functions in the Day One book "This Week: Junos Automation Reference for SLAX 1.0".

     

    I hope it helps!

    Mattia

     

     

     

     

     



  • 3.  RE: op script to desactivate unused interfaces

    Posted 03-27-2012 02:44

    Thank you very much.

     



  • 4.  RE: op script to desactivate unused interfaces

    Posted 09-16-2012 05:04

    Hi

    Can you please share with us the final scripts to do that and is it working also for EX switches interface ??

    Thanks