Junos Automation (Scripting)
Junos Automation (Scripting)

op script to desactivate unused interfaces

03.23.12   |  
‎03-23-2012 02:47 AM

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 = jcsSmiley Surprisedpen();
    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 = jcsSmiley Surprisedpen();
            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.

3 REPLIES
Highlighted
Junos Automation (Scripting)

Re: op script to desactivate unused interfaces

[ Edited ]
03.24.12   |  
‎03-24-2012 08:01 AM

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, JNCIP-SP et al.
(If this post helped you, please mark it as an "Accepted Solution"; kudos are also appreciated!)


Junos Automation (Scripting)

Re: op script to desactivate unused interfaces

03.27.12   |  
‎03-27-2012 02:43 AM

Thank you very much.

 

Junos Automation (Scripting)

Re: op script to desactivate unused interfaces

09.16.12   |  
‎09-16-2012 05:04 AM

Hi

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

Thanks

BR ,,,