netconf 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,55 @@
1
+ require 'net/netconf/jnpr'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ new_host_name = "vsrx"
8
+
9
+ puts "Connecting to device: #{login[:target]}"
10
+
11
+ Netconf::SSH.new( login ){ |dev|
12
+ puts "Connected!"
13
+
14
+ location = []
15
+ location << 'set system location building "Main Campus, C"'
16
+ location << "set system location floor 15"
17
+ location << "set system location rack 1117"
18
+
19
+ begin
20
+
21
+ rsp = dev.rpc.lock_configuration
22
+
23
+ # --------------------------------------------------------------------
24
+ # configuration as BLOCK
25
+
26
+ rsp = dev.rpc.load_configuration( :format => 'set' ) {
27
+ "set system host-name #{new_host_name}"
28
+ }
29
+
30
+ # --------------------------------------------------------------------
31
+ # configuration as PARAM
32
+
33
+ rsp = dev.rpc.load_configuration( location, :format => 'set' )
34
+
35
+ rpc = dev.rpc.check_configuration
36
+ rpc = dev.rpc.commit_configuration
37
+ rpc = dev.rpc.unlock_configuration
38
+
39
+ rescue Netconf::LockError => e
40
+ puts "Lock error"
41
+ rescue Netconf::EditError => e
42
+ puts "Edit error"
43
+ rescue Netconf::ValidateError => e
44
+ puts "Validate error"
45
+ rescue Netconf::CommitError => e
46
+ puts "Commit error"
47
+ rescue Netconf::RpcError => e
48
+ puts "General RPC error"
49
+ else
50
+ puts "Configuration Committed."
51
+ end
52
+ }
53
+
54
+
55
+
@@ -0,0 +1,64 @@
1
+ require 'net/netconf/jnpr'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ new_host_name = "vsrx-gizmo"
8
+
9
+ puts "Connecting to device: #{login[:target]}"
10
+
11
+ Netconf::SSH.new( login ){ |dev|
12
+ puts "Connected!"
13
+
14
+ location = <<EOCONF
15
+ system {
16
+ location {
17
+ building "Main Campus, E"
18
+ floor 15
19
+ rack 1117
20
+ }
21
+ }
22
+ EOCONF
23
+
24
+ begin
25
+
26
+ rsp = dev.rpc.lock_configuration
27
+
28
+ # --------------------------------------------------------------------
29
+ # configuration as BLOCK
30
+
31
+ rsp = dev.rpc.load_configuration( :format => 'text' ) {
32
+ <<-EOCONF
33
+ system {
34
+ host-name #{new_host_name}
35
+ }
36
+ EOCONF
37
+ }
38
+
39
+ # --------------------------------------------------------------------
40
+ # configuration as PARAM
41
+
42
+ rsp = dev.rpc.load_configuration( location, :format => 'text' )
43
+
44
+ rpc = dev.rpc.check_configuration
45
+ rpc = dev.rpc.commit_configuration
46
+ rpc = dev.rpc.unlock_configuration
47
+
48
+ rescue Netconf::LockError => e
49
+ puts "Lock error"
50
+ rescue Netconf::EditError => e
51
+ puts "Edit error"
52
+ rescue Netconf::ValidateError => e
53
+ puts "Validate error"
54
+ rescue Netconf::CommitError => e
55
+ puts "Commit error"
56
+ rescue Netconf::RpcError => e
57
+ puts "General RPC error"
58
+ else
59
+ puts "Configuration Committed."
60
+ end
61
+ }
62
+
63
+
64
+
@@ -0,0 +1,62 @@
1
+ require 'net/netconf/jnpr'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ new_host_name = "vsrx-jjj"
8
+
9
+ puts "Connecting to device: #{login[:target]}"
10
+
11
+ Netconf::SSH.new( login ){ |dev|
12
+ puts "Connected!"
13
+
14
+ location = Nokogiri::XML::Builder.new{ |x|
15
+ x.system {
16
+ x.location {
17
+ x.building "Main Campus, C"
18
+ x.floor 15
19
+ x.rack 37
20
+ }
21
+ }
22
+ }
23
+
24
+ begin
25
+
26
+ rsp = dev.rpc.lock_configuration
27
+
28
+ # --------------------------------------------------------------------
29
+ # configuration as BLOCK
30
+
31
+ rsp = dev.rpc.load_configuration{ |x|
32
+ x.system {
33
+ x.send(:'host-name', new_host_name )
34
+ }
35
+ }
36
+
37
+ # --------------------------------------------------------------------
38
+ # configuration as PARAM
39
+
40
+ rsp = dev.rpc.load_configuration( location )
41
+ rpc = dev.rpc.check_configuration
42
+ rpc = dev.rpc.commit_configuration
43
+ rpc = dev.rpc.unlock_configuration
44
+
45
+ rescue Netconf::LockError => e
46
+ puts "Lock error"
47
+ rescue Netconf::EditError => e
48
+ puts "Edit error"
49
+ rescue Netconf::ValidateError => e
50
+ puts "Validate error"
51
+ rescue Netconf::CommitError => e
52
+ puts "Commit error"
53
+ rescue Netconf::RpcError => e
54
+ puts "General RPC error"
55
+ binding.pry
56
+ else
57
+ puts "Configuration Committed."
58
+ end
59
+ }
60
+
61
+
62
+
@@ -0,0 +1,65 @@
1
+ require 'net/netconf'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ new_host_name = "vsrx-abc"
8
+
9
+ puts "Connecting to device: #{login[:target]}"
10
+
11
+ Netconf::SSH.new( login ){ |dev|
12
+ puts "Connected!"
13
+
14
+ target = 'candidate'
15
+
16
+ location = Nokogiri::XML::Builder.new{ |x| x.configuration {
17
+ x.system {
18
+ x.location {
19
+ x.building "Main Campus, A"
20
+ x.floor 5
21
+ x.rack 27
22
+ }
23
+ }
24
+ }}
25
+
26
+ begin
27
+
28
+ rsp = dev.rpc.lock target
29
+
30
+ # --------------------------------------------------------------------
31
+ # configuration as BLOCK
32
+
33
+ rsp = dev.rpc.edit_config{ |x| x.configuration {
34
+ x.system {
35
+ x.send(:'host-name', new_host_name )
36
+ }
37
+ }}
38
+
39
+ # --------------------------------------------------------------------
40
+ # configuration as PARAM
41
+
42
+ rsp = dev.rpc.edit_config( location )
43
+
44
+ rsp = dev.rpc.validate target
45
+ rpc = dev.rpc.commit
46
+ rpc = dev.rpc.unlock target
47
+
48
+ rescue Netconf::LockError => e
49
+ puts "Lock error"
50
+ rescue Netconf::EditError => e
51
+ puts "Edit error"
52
+ rescue Netconf::ValidateError => e
53
+ puts "Validate error"
54
+ rescue Netconf::CommitError => e
55
+ puts "Commit error"
56
+ rescue Netconf::RpcError => e
57
+ puts "General RPC error"
58
+ binding.pry
59
+ else
60
+ puts "Configuration Committed."
61
+ end
62
+ }
63
+
64
+
65
+
@@ -0,0 +1,69 @@
1
+ require 'net/netconf'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ new_host_name = "vsrx"
8
+
9
+ puts "Connecting to device: #{login[:target]}"
10
+
11
+ Netconf::SSH.new( login ){ |dev|
12
+ puts "Connected!"
13
+
14
+ target = 'candidate'
15
+
16
+ location = Nokogiri::XML::Builder.new{ |x| x.send(:'configuration-text', <<-EOCONF
17
+ system {
18
+ location {
19
+ building "Main Campus, ABC123"
20
+ floor 5
21
+ rack 27
22
+ }
23
+ }
24
+ EOCONF
25
+ )}
26
+
27
+
28
+ begin
29
+
30
+ rsp = dev.rpc.lock target
31
+
32
+ # --------------------------------------------------------------------
33
+ # configuration as BLOCK
34
+
35
+ rsp = dev.rpc.edit_config(:toplevel => 'config-text'){
36
+ |x| x.send(:'configuration-text', <<EOCONF
37
+ system {
38
+ host-name #{new_host_name};
39
+ }
40
+ EOCONF
41
+ )}
42
+
43
+ # --------------------------------------------------------------------
44
+ # configuration as PARAM
45
+
46
+ rsp = dev.rpc.edit_config( location, :toplevel => 'config-text' )
47
+
48
+ rsp = dev.rpc.validate target
49
+ rpc = dev.rpc.commit
50
+ rpc = dev.rpc.unlock target
51
+
52
+ rescue Netconf::LockError => e
53
+ puts "Lock error"
54
+ rescue Netconf::EditError => e
55
+ puts "Edit error"
56
+ rescue Netconf::ValidateError => e
57
+ puts "Validate error"
58
+ rescue Netconf::CommitError => e
59
+ puts "Commit error"
60
+ rescue Netconf::RpcError => e
61
+ puts "General RPC error"
62
+ binding.pry
63
+ else
64
+ puts "Configuration Committed."
65
+ end
66
+ }
67
+
68
+
69
+
@@ -0,0 +1,59 @@
1
+ require 'net/netconf/jnpr' # note: including Juniper specific extension
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ puts "Connecting to device: #{login[:target]}"
8
+
9
+ Netconf::SSH.new( login ){ |dev|
10
+ puts "Connected."
11
+
12
+ puts "Retrieving full config, please wait ... "
13
+ cfgall = dev.rpc.get_configuration # Junos specific RPC
14
+ puts "Showing 'system' hierarchy ..."
15
+ puts cfgall.xpath('system') # Root is <configuration>, so don't need to include it in XPath
16
+
17
+ # ----------------------------------------------------------------------
18
+ # specifying a filter as a block to get_configuration
19
+ # Junos extension does the proper toplevel wrapping
20
+
21
+ puts "Retrieved services from BLOCK, as XML:"
22
+
23
+ cfgsvc1_1 = dev.rpc.get_configuration{ |x|
24
+ x.system { x.services }
25
+ }
26
+
27
+ cfgsvc1_1.xpath('system/services/*').each{|s| puts s.name }
28
+
29
+ puts "Retrieved services from BLOCK, as TEXT:"
30
+
31
+ cfgsvc1_2 = dev.rpc.get_configuration( :format => 'text' ){ |x|
32
+ x.system { x.services }
33
+ }
34
+
35
+ puts cfgsvc1_2.text
36
+
37
+ # ----------------------------------------------------------------------
38
+ # specifying a filter as a parameter to get_configuration
39
+
40
+ filter = Nokogiri::XML::Builder.new{ |x|
41
+ x.system { x.services }
42
+ }
43
+
44
+ puts "Retrieved services by PARAM, as XML"
45
+
46
+ cfgsvc2 = dev.rpc.get_configuration( filter )
47
+ cfgsvc2.xpath('system/services/*').each{|s| puts s.name }
48
+
49
+ # ----------------------------------------------------------------------
50
+ # specifying a filter as a parameter to get_configuration,
51
+ # get response back in "text" format
52
+
53
+ puts "Retrieved services by PARAM, as TEXT:"
54
+ cfgsvc3 = dev.rpc.get_configuration( filter, :format => 'text' )
55
+ puts cfgsvc3.text
56
+ }
57
+
58
+
59
+
@@ -0,0 +1,20 @@
1
+ require 'net/netconf/jnpr'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ Netconf::SSH.new( login ){ |dev|
8
+
9
+ configs = dev.rpc.get_configuration{ |x|
10
+ x.interfaces( :matching => 'interface[name="ge-*"]' )
11
+ }
12
+
13
+ ge_cfgs = configs.xpath('interfaces/interface')
14
+
15
+ puts "There are #{ge_cfgs.count} GE interfaces:"
16
+ ge_cfgs.each{|ifd|
17
+ units = ifd.xpath('unit').count
18
+ puts " " + ifd.xpath('name')[0].text + " with #{units} unit" + ((units>1) ? "s" : '')
19
+ }
20
+ }
@@ -0,0 +1,49 @@
1
+ require 'net/netconf'
2
+
3
+ puts "NETCONF v.#{Netconf::VERSION}"
4
+
5
+ login = { :target => 'vsrx', :username => "jeremy", :password => "jeremy1" }
6
+
7
+ puts "Connecting to device: #{login[:target]}"
8
+
9
+ Netconf::SSH.new( login ){ |dev|
10
+ puts "Connected."
11
+
12
+ # ----------------------------------------------------------------------
13
+ # retrieve the full config. Default source is 'running'
14
+ # Alternatively you can pass the source name as a string parameter
15
+ # to #get_config
16
+
17
+ puts "Retrieving full config, please wait ... "
18
+ cfgall = dev.rpc.get_config
19
+ puts "Showing 'system' hierarchy ..."
20
+ puts cfgall.xpath('configuration/system') # JUNOS toplevel config element is <configuration>
21
+
22
+ # ----------------------------------------------------------------------
23
+ # specifying a filter as a block to get_config
24
+
25
+ cfgsvc1 = dev.rpc.get_config{ |x|
26
+ x.configuration { x.system { x.services }}
27
+ }
28
+
29
+ puts "Retrieved services as BLOCK:"
30
+ cfgsvc1.xpath('//services/*').each{|s| puts s.name }
31
+
32
+ # ----------------------------------------------------------------------
33
+ # specifying a filter as a parameter to get_config
34
+
35
+ filter = Nokogiri::XML::Builder.new{ |x|
36
+ x.configuration { x.system { x.services }}
37
+ }
38
+
39
+ cfgsvc2 = dev.rpc.get_config( filter )
40
+ puts "Retrieved services as PARAM:"
41
+ cfgsvc2.xpath('//services/*').each{|s| puts s.name }
42
+
43
+ cfgsvc3 = dev.rpc.get_config( filter )
44
+ puts "Retrieved services as PARAM, re-used filter"
45
+ cfgsvc3.xpath('//services/*').each{|s| puts s.name }
46
+ }
47
+
48
+
49
+