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.
- checksums.yaml +15 -0
- data/.yardopts +8 -0
- data/LICENSE.md +22 -0
- data/README.md +116 -0
- data/asa_console.gemspec +30 -0
- data/bin/asatest +113 -0
- data/lib/asa_console.rb +283 -0
- data/lib/asa_console/config.rb +170 -0
- data/lib/asa_console/error.rb +43 -0
- data/lib/asa_console/terminal.rb +9 -0
- data/lib/asa_console/terminal/fake_ssh.rb +145 -0
- data/lib/asa_console/terminal/ssh.rb +223 -0
- data/lib/asa_console/test.rb +134 -0
- data/lib/asa_console/test/script.rb +48 -0
- data/lib/asa_console/util.rb +151 -0
- data/script/test_clock.rb +39 -0
- data/script/test_connect.rb +10 -0
- data/script/test_error_command.rb +15 -0
- data/script/test_error_connect.rb +31 -0
- data/script/test_error_enable.rb +18 -0
- data/script/test_names.rb +33 -0
- data/script/test_object.rb +50 -0
- data/script/test_terminal.rb +25 -0
- data/script/test_version.rb +31 -0
- metadata +209 -0
@@ -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
|