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 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', '~> 1.12'
22
- spec.add_development_dependency 'rake', '~> 10.0'
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
@@ -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
 
@@ -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.10418.15.2.2.6.2.1.1.3'.freeze
7
- OID_TCPPORT_LIST = '1.3.6.1.4.1.10418.15.2.2.6.2.1.1.26'.freeze
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Cow
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.7"
3
3
  end
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.3
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: 2016-09-09 00:00:00.000000000 Z
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: '1.12'
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: '1.12'
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: '10.0'
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: '10.0'
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
- post_install_message:
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: 1.8.23
108
- signing_key:
109
- specification_version: 3
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: []