cow 0.1.3 → 0.1.7
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 +7 -0
- data/README.md +18 -2
- data/cow.gemspec +2 -2
- data/lib/cow/application.rb +49 -0
- data/lib/cow/plugins/acs5000.rb +2 -2
- data/lib/cow/plugins/acs6000.rb +8 -0
- data/lib/cow/version.rb +1 -1
- metadata +22 -30
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 9fca82e57cef2adfdcf679a88dae9066aa864f42f6aca51ea53d1827da288276
|
|
4
|
+
data.tar.gz: 637a30eecddd2350dc3a8f3b260dea8462bf6856c742f541e79875aad21547d3
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 1acc5a1cf7bd01f85c1339f52f148bd3f45352dd1dca6193c7aab756f66daa7545092a8a30e305432e6158b46cdaa11b4d3433196fa86fdb1bed737fc0a6f32d
|
|
7
|
+
data.tar.gz: 96e68f0cf003e4327be7ee7ebc3875d20c6dc8f593c470dce72a585a14b424e80d692f86f6fa6f76d50742b7009193bfbffdaaca10900e8199b0a28f4c329eec
|
data/README.md
CHANGED
|
@@ -6,8 +6,6 @@ Cow - console server wrapper.
|
|
|
6
6
|
|
|
7
7
|
`gem install cow`
|
|
8
8
|
|
|
9
|
-
`mkdir /var/cache/cow`
|
|
10
|
-
|
|
11
9
|
`sudo cow add [hostname] [type] [community]`
|
|
12
10
|
|
|
13
11
|
## Usage
|
|
@@ -42,3 +40,21 @@ tokyo-core01 (ttyd0)
|
|
|
42
40
|
|
|
43
41
|
login:
|
|
44
42
|
```
|
|
43
|
+
|
|
44
|
+
## Pico integration with Zsh
|
|
45
|
+
|
|
46
|
+
In .zshrc:
|
|
47
|
+
```
|
|
48
|
+
function peco-select-console() {
|
|
49
|
+
BUFFER=$(cow list | \
|
|
50
|
+
peco --query "$LBUFFER" | \
|
|
51
|
+
awk 'BEGIN{FS=" "}{print "cow c "$2}')
|
|
52
|
+
CURSOR=$#BUFFER
|
|
53
|
+
zle clear-screen
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
zle -N peco-select-console
|
|
57
|
+
bindkey '^xc' peco-select-console
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Press Ctrl-X C then you can select a port with interactive filtering.
|
data/cow.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
19
|
spec.require_paths = ['lib']
|
|
20
20
|
|
|
21
|
-
spec.add_development_dependency 'bundler', '~>
|
|
22
|
-
spec.add_development_dependency 'rake', '~>
|
|
21
|
+
spec.add_development_dependency 'bundler', '~> 2.2.33'
|
|
22
|
+
spec.add_development_dependency 'rake', '~> 12.3.3'
|
|
23
23
|
spec.add_dependency 'snmp'
|
|
24
24
|
end
|
data/lib/cow/application.rb
CHANGED
|
@@ -21,6 +21,23 @@ module Cow
|
|
|
21
21
|
@servers << _server
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def find_server(_hostname)
|
|
25
|
+
@servers.each do |server|
|
|
26
|
+
return server if server.hostname == _hostname
|
|
27
|
+
end
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def delete_server(_hostname)
|
|
32
|
+
@servers.each_with_index do |server, idx|
|
|
33
|
+
if server.hostname == _hostname
|
|
34
|
+
@servers.delete_at(idx)
|
|
35
|
+
return true
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
false
|
|
39
|
+
end
|
|
40
|
+
|
|
24
41
|
end
|
|
25
42
|
|
|
26
43
|
CACHE_FILE = '/var/cache/cow/cow.cache'.freeze
|
|
@@ -32,6 +49,16 @@ module Cow
|
|
|
32
49
|
end
|
|
33
50
|
|
|
34
51
|
def create_cache(_cache = CACHE_FILE)
|
|
52
|
+
dir_name = File.dirname(_cache)
|
|
53
|
+
if !File.exist?(dir_name)
|
|
54
|
+
puts 'Cache directory is not found. Creating...'
|
|
55
|
+
Dir.mkdir(dir_name)
|
|
56
|
+
else
|
|
57
|
+
if !File.directory?(dir_name)
|
|
58
|
+
raise 'Cache directory path is already found but it is not a directory!!!'
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
35
62
|
File.write(_cache, Cow::Application::Cache.new.to_yaml)
|
|
36
63
|
end
|
|
37
64
|
|
|
@@ -93,6 +120,8 @@ module Cow
|
|
|
93
120
|
case command
|
|
94
121
|
when 'add', 'a'
|
|
95
122
|
cmd_add(option1, option2, option3)
|
|
123
|
+
when 'delete', 'd'
|
|
124
|
+
cmd_delete(option1)
|
|
96
125
|
when 'connect', 'c'
|
|
97
126
|
cmd_connect(option1)
|
|
98
127
|
when 'find', 'f'
|
|
@@ -127,6 +156,23 @@ module Cow
|
|
|
127
156
|
end if server
|
|
128
157
|
end
|
|
129
158
|
|
|
159
|
+
def cmd_delete(_hostname)
|
|
160
|
+
raise ArgumentError unless _hostname.class == String
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
load_cache
|
|
164
|
+
|
|
165
|
+
unless @cache.find_server(_hostname)
|
|
166
|
+
puts "#{_hostname} is not found!!"
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
puts "#{_hostname} will be deleted"
|
|
170
|
+
|
|
171
|
+
edit_cache do |cache|
|
|
172
|
+
cache.delete_server _hostname
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
130
176
|
def cmd_connect(_portname)
|
|
131
177
|
raise ArgumentError unless _portname.class == String
|
|
132
178
|
|
|
@@ -215,6 +261,9 @@ Commands:
|
|
|
215
261
|
Add new console server.
|
|
216
262
|
available types: #{Cow::SERVER_TYPES.keys.join(' ')}
|
|
217
263
|
|
|
264
|
+
delete [hostname]
|
|
265
|
+
Delete existing console server.
|
|
266
|
+
|
|
218
267
|
connect [portname]
|
|
219
268
|
Connect to console port.
|
|
220
269
|
|
data/lib/cow/plugins/acs5000.rb
CHANGED
|
@@ -3,8 +3,8 @@ require 'snmp'
|
|
|
3
3
|
|
|
4
4
|
module Cow
|
|
5
5
|
module ACS5000
|
|
6
|
-
OID_DESCRIPTION_LIST = '1.3.6.1.4.1.
|
|
7
|
-
OID_TCPPORT_LIST = '1.3.6.1.4.1.
|
|
6
|
+
OID_DESCRIPTION_LIST = '1.3.6.1.4.1.2925.8.2.6.2.1.1.3'.freeze
|
|
7
|
+
OID_TCPPORT_LIST = '1.3.6.1.4.1.2925.8.2.6.2.1.1.26'.freeze
|
|
8
8
|
|
|
9
9
|
class Port < Cow::Tmpl::Port
|
|
10
10
|
end
|
data/lib/cow/plugins/acs6000.rb
CHANGED
|
@@ -4,6 +4,7 @@ require 'snmp'
|
|
|
4
4
|
module Cow
|
|
5
5
|
module ACS6000
|
|
6
6
|
OID_DESCRIPTION_LIST = '1.3.6.1.4.1.10418.16.2.3.2.1.4'.freeze
|
|
7
|
+
OID_PORT_TABLE_PROFILE_LIST = '1.3.6.1.4.1.10418.16.2.3.2.1.5'.freeze
|
|
7
8
|
TCP_PORT_OFFSET = 7000
|
|
8
9
|
|
|
9
10
|
class Port < Cow::Tmpl::Port
|
|
@@ -18,8 +19,15 @@ module Cow
|
|
|
18
19
|
def get_ports
|
|
19
20
|
ret = []
|
|
20
21
|
snmp do |s|
|
|
22
|
+
port_profile_tables = {}
|
|
23
|
+
s.walk(OID_PORT_TABLE_PROFILE_LIST) do |x|
|
|
24
|
+
port_profile_tables[x.name.last.to_s] = x.value.to_i
|
|
25
|
+
end
|
|
26
|
+
|
|
21
27
|
s.walk(OID_DESCRIPTION_LIST) do |x|
|
|
22
28
|
next if x.name.last.zero?
|
|
29
|
+
next if x.value.to_s.length == 0
|
|
30
|
+
next if port_profile_tables[x.name.last.to_s] != 1 # other than CAS Profile
|
|
23
31
|
next unless (/^[0-9a-f]{2}-[0-9a-f]{2}-[0-9a-f]{2}-p-[0-9]+$/ =~ x.value.to_s).nil?
|
|
24
32
|
port = x.name.last
|
|
25
33
|
name = x.value.to_s
|
data/lib/cow/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,62 +1,55 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cow
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.1.7
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Kazuki Shimizu
|
|
9
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
10
9
|
bindir: exe
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2022-09-12 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: bundler
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- - ~>
|
|
17
|
+
- - "~>"
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
|
-
version:
|
|
19
|
+
version: 2.2.33
|
|
22
20
|
type: :development
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
|
-
- - ~>
|
|
24
|
+
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
26
|
+
version: 2.2.33
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
28
|
name: rake
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- - ~>
|
|
31
|
+
- - "~>"
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
|
-
version:
|
|
33
|
+
version: 12.3.3
|
|
38
34
|
type: :development
|
|
39
35
|
prerelease: false
|
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
37
|
requirements:
|
|
43
|
-
- - ~>
|
|
38
|
+
- - "~>"
|
|
44
39
|
- !ruby/object:Gem::Version
|
|
45
|
-
version:
|
|
40
|
+
version: 12.3.3
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
|
47
42
|
name: snmp
|
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
44
|
requirements:
|
|
51
|
-
- -
|
|
45
|
+
- - ">="
|
|
52
46
|
- !ruby/object:Gem::Version
|
|
53
47
|
version: '0'
|
|
54
48
|
type: :runtime
|
|
55
49
|
prerelease: false
|
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
51
|
requirements:
|
|
59
|
-
- -
|
|
52
|
+
- - ">="
|
|
60
53
|
- !ruby/object:Gem::Version
|
|
61
54
|
version: '0'
|
|
62
55
|
description: Ease to connect console server ports
|
|
@@ -67,7 +60,7 @@ executables:
|
|
|
67
60
|
extensions: []
|
|
68
61
|
extra_rdoc_files: []
|
|
69
62
|
files:
|
|
70
|
-
- .gitignore
|
|
63
|
+
- ".gitignore"
|
|
71
64
|
- Gemfile
|
|
72
65
|
- README.md
|
|
73
66
|
- Rakefile
|
|
@@ -86,26 +79,25 @@ files:
|
|
|
86
79
|
- lib/cow/version.rb
|
|
87
80
|
homepage: https://github.com/kazubu/cow/
|
|
88
81
|
licenses: []
|
|
89
|
-
|
|
82
|
+
metadata: {}
|
|
83
|
+
post_install_message:
|
|
90
84
|
rdoc_options: []
|
|
91
85
|
require_paths:
|
|
92
86
|
- lib
|
|
93
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
|
-
none: false
|
|
95
88
|
requirements:
|
|
96
|
-
- -
|
|
89
|
+
- - ">="
|
|
97
90
|
- !ruby/object:Gem::Version
|
|
98
91
|
version: '0'
|
|
99
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
|
-
none: false
|
|
101
93
|
requirements:
|
|
102
|
-
- -
|
|
94
|
+
- - ">="
|
|
103
95
|
- !ruby/object:Gem::Version
|
|
104
96
|
version: '0'
|
|
105
97
|
requirements: []
|
|
106
|
-
rubyforge_project:
|
|
107
|
-
rubygems_version:
|
|
108
|
-
signing_key:
|
|
109
|
-
specification_version:
|
|
98
|
+
rubyforge_project:
|
|
99
|
+
rubygems_version: 2.7.6
|
|
100
|
+
signing_key:
|
|
101
|
+
specification_version: 4
|
|
110
102
|
summary: Console server Wrapper
|
|
111
103
|
test_files: []
|