asa_console 0.1.2

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,33 @@
1
+
2
+ #
3
+ # Test configuring IP to name mappings.
4
+ #
5
+ ASAConsole::Test.script do |asa|
6
+ asa.connect
7
+
8
+ def reset_test(asa)
9
+ rc = asa.running_config('names').select('name', '192.0.2.1')
10
+ asa.config_exec!('no name 192.0.2.1') unless rc.nil?
11
+ rc = asa.running_config('names').select('name', '192.0.2.2')
12
+ asa.config_exec!('no name 192.0.2.2') unless rc.nil?
13
+ end
14
+
15
+ reset_test(asa)
16
+
17
+ # Are question marks being escaped?
18
+ asa.config_exec!("name 192.0.2.1 ASATest1 description What's in a name? That which we call a rose...")
19
+ asa.config_exec!("name 192.0.2.2 ASATest2")
20
+
21
+ asa.running_config('names').select('name') do |rc|
22
+ m = /(?<addr>[\d\.]+) (?<name>[\w\-]+)(?: description (?<desc>.*))?/.match(rc.config_data)
23
+ if m[:desc]
24
+ log "#{m[:addr]} is called \"#{m[:name]}\" and its description is \"#{m[:desc]}\""
25
+ else
26
+ log "#{m[:addr]} is called \"#{m[:name]}\" and it has no description"
27
+ end
28
+ end
29
+
30
+ reset_test(asa)
31
+
32
+ asa.disconnect
33
+ end
@@ -0,0 +1,50 @@
1
+
2
+ #
3
+ # Test configuring a network object to demonstrate the difference between
4
+ # #config_exec! and #config_exec without the "!".
5
+ #
6
+ ASAConsole::Test.script do |asa|
7
+ asa.connect
8
+
9
+ if asa.version? '< 8.3(1)'
10
+ log "Objects are not supported in version #{asa.version}"
11
+ else
12
+ id = 'TestObject-192.0.2.1'
13
+
14
+ # This command will return an "ERROR: " message if the object does not
15
+ # already exist, so we need to pass a flag to ignore it.
16
+ asa.config_exec!('no object network ' + id, ignore_errors: true)
17
+
18
+ asa.config_exec!('object network ' + id)
19
+
20
+ # We are now in a configuration submode.
21
+ asa.config_exec('description My network object', require_config_mode: 'config-network-object')
22
+ asa.config_exec('host 192.0.2.1', require_config_mode: 'config-network-object')
23
+
24
+ # There is no "config-object" mode so let's use that to make sure that the
25
+ # config mode requiremnt is actually being checked.
26
+ begin
27
+ asa.config_exec('description Something went wrong', require_config_mode: 'config-object')
28
+ rescue ASAConsole::Error::ConfigModeError => e
29
+ log "Rescued config mode error: #{e.message}"
30
+ end
31
+
32
+ rc = asa.running_config('object id ' + id).select('object')
33
+ desc = rc.select('description').config_data
34
+ host = rc.select('host').config_data
35
+
36
+ log "Network object #{id} has description #{desc.dump}"
37
+ log "Network object #{id} has host #{host}"
38
+
39
+ asa.config_exec!('no object network ' + id)
40
+
41
+ rc = asa.running_config('object id ' + id).select('object')
42
+ if rc.nil?
43
+ log "Object #{id} has been removed"
44
+ else
45
+ log "Object #{id} still exists"
46
+ end
47
+ end
48
+
49
+ asa.disconnect
50
+ end
@@ -0,0 +1,25 @@
1
+
2
+ #
3
+ # Test the behavior of the running config cache by repeatedly querying for the
4
+ # terminal width.
5
+ #
6
+ ASAConsole::Test.script do |asa|
7
+ asa.connect
8
+
9
+ def terminal_width(asa)
10
+ asa.running_config('terminal').select('terminal width').config_data
11
+ end
12
+
13
+ # This will send a "show running-config" command to the device.
14
+ tw = terminal_width(asa)
15
+ log "Terminal width is #{tw}"
16
+
17
+ asa.config_exec! "terminal width 40"
18
+ log "Terminal width is now #{terminal_width(asa)}" # This will send another "show running-config".
19
+ asa.config_exec! "terminal width #{tw}"
20
+ log "Terminal width is back to #{terminal_width(asa)}" # This will send another "show running-config".
21
+ log "Checking again..."
22
+ log "Terminal width is still #{terminal_width(asa)}" # This time the value will be pulled from the cache.
23
+
24
+ asa.disconnect
25
+ end
@@ -0,0 +1,31 @@
1
+
2
+ #
3
+ # Test various methods for checking the ASA software version.
4
+ #
5
+ ASAConsole::Test.script do |asa|
6
+ asa.connect
7
+
8
+ log asa.version?('=7') ? 'This is version 7' : 'This is not version 7'
9
+
10
+ log asa.version?('<8') ? 'Version is less than 8' : 'Version is not less than 8'
11
+
12
+ if asa.version?('7.x(x)') || asa.version?('<=8.3(x)')
13
+ log 'Running an old version'
14
+ end
15
+
16
+ asa.version? '!8.x', '!9.x' do
17
+ log 'Not running version 8 or 9'
18
+ end
19
+
20
+ asa.version? '>7', '8.x' do
21
+ log 'Version 8!'
22
+ end
23
+
24
+ asa.version? '>7', '9.x' do
25
+ log 'Version 9!'
26
+ end
27
+
28
+ log 'Version string is ' + asa.version
29
+
30
+ asa.disconnect
31
+ end
metadata ADDED
@@ -0,0 +1,209 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asa_console
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Henry Goodman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: net-ssh
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.9.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.9.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: highline
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '10.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '10.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: redcarpet
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '3.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '3.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '0.35'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '0.35'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.11'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '0.11'
125
+ - !ruby/object:Gem::Dependency
126
+ name: thor
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '0.19'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '0.19'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '0.8'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '0.8'
153
+ description: This gem lets a program interact with a Cisco ASA using CLI commands.
154
+ It includes a minimal set of functions for issuing commands and parsing the results.
155
+ email: github@henrygoodman.com
156
+ executables:
157
+ - asatest
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - .yardopts
162
+ - LICENSE.md
163
+ - README.md
164
+ - asa_console.gemspec
165
+ - bin/asatest
166
+ - lib/asa_console.rb
167
+ - lib/asa_console/config.rb
168
+ - lib/asa_console/error.rb
169
+ - lib/asa_console/terminal.rb
170
+ - lib/asa_console/terminal/fake_ssh.rb
171
+ - lib/asa_console/terminal/ssh.rb
172
+ - lib/asa_console/test.rb
173
+ - lib/asa_console/test/script.rb
174
+ - lib/asa_console/util.rb
175
+ - script/test_clock.rb
176
+ - script/test_connect.rb
177
+ - script/test_error_command.rb
178
+ - script/test_error_connect.rb
179
+ - script/test_error_enable.rb
180
+ - script/test_names.rb
181
+ - script/test_object.rb
182
+ - script/test_terminal.rb
183
+ - script/test_version.rb
184
+ homepage: https://github.com/hgoodman/asa-console/
185
+ licenses:
186
+ - MIT
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ! '>='
195
+ - !ruby/object:Gem::Version
196
+ version: 1.9.3
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 2.5.0
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Cisco ASA management via an interactive terminal session
208
+ test_files: []
209
+ has_rdoc: yard