cow 0.1.3 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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: []