Junos Automation (Scripting)
Reply
Visitor
cbouraoui
Posts: 8
Registered: ‎03-23-2012
0
Accepted Solution

op script to desactivate unused interfaces

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:smileysurprised:pen();
    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:smileysurprised:pen();
            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.

Recognized Expert
Mattia
Posts: 198
Registered: ‎03-17-2010
0

Re: op script to desactivate unused interfaces

[ Edited ]

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

 

 

 

 

 

.................................................................................
JNCIP-ENT, JNCIP-SEC, JNCIS-SP
(If this post helped you, please mark it as an "Accepted Solution"; kudos are also appreciated!)


Visitor
cbouraoui
Posts: 8
Registered: ‎03-23-2012
0

Re: op script to desactivate unused interfaces

Thank you very much.

 

Contributor
ralwarrag
Posts: 130
Registered: ‎09-21-2010
0

Re: op script to desactivate unused interfaces

Hi

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

Thanks

BR ,,,
Copyright© 1999-2013 Juniper Networks, Inc. All rights reserved.