vipnet_getter 0.3 → 0.11
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 +4 -4
- data/lib/vipnet_getter.rb +38 -52
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53175c56a11abe74e7481275a13ca3070e37e050
|
4
|
+
data.tar.gz: b2e9f65e4dfdc39f3861ef460a3bb27ddd026ec6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67e0425e2875304e96ec3c1f53e7d5988faaac767187468c879c9ea3e51cf6fd07660dfeaa1b8ee72c71511502045a38c733414d13a5bf0f03e961f4f6fcb6c8
|
7
|
+
data.tar.gz: de3f14189c75a4c8f5f3b5f56d6c2e4a6f838e4ec948b676c07f3c988d13472fbb3172ff391e012699c21bccc3af3dc838a9b8514d8655a55f13fbe71e924820
|
data/lib/vipnet_getter.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
1
|
class VipnetGetter
|
4
2
|
ENTER_KEYCODE = 13
|
5
|
-
PGDN_KEYCODE
|
3
|
+
PGDN_KEYCODE = 34
|
6
4
|
|
7
5
|
def self.iplirconf(params)
|
8
6
|
hostname = params[:hostname]
|
@@ -10,7 +8,7 @@ class VipnetGetter
|
|
10
8
|
username = params[:username] || "vipnet"
|
11
9
|
output_file_path = params[:output_file_path]
|
12
10
|
|
13
|
-
#
|
11
|
+
# adding digest to known_hosts if needed
|
14
12
|
require "ruby_expect"
|
15
13
|
exp_ssh_digest = RubyExpect::Expect.spawn("/usr/bin/ssh #{username}@#{hostname}")
|
16
14
|
exp_ssh_digest.timeout = 3
|
@@ -22,52 +20,43 @@ class VipnetGetter
|
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
23
|
+
iplirconf = String.new
|
25
24
|
logged = false
|
26
|
-
puts "Logging to #{username}@#{hostname}..."
|
27
25
|
|
28
|
-
#
|
29
|
-
|
30
|
-
exp = RubyExpect::Expect.spawn("TERM=xterm luit -encoding KOI8-R /usr/bin/ssh #{username}@#{hostname}")
|
26
|
+
# logging
|
27
|
+
exp = RubyExpect::Expect.spawn("/usr/bin/ssh #{username}@#{hostname}")
|
31
28
|
exp.timeout = 3
|
32
|
-
iplirconf_content = ""
|
33
29
|
exp.procedure do
|
34
30
|
each do
|
35
31
|
expect /password:\s*$/ do
|
36
32
|
send password
|
37
|
-
puts "
|
33
|
+
puts "entering password"
|
38
34
|
end
|
39
|
-
|
40
|
-
#
|
41
|
-
# and don't expect ">" for "iplir show config".
|
42
|
-
# Thus, commented code below doesn't work
|
35
|
+
# for some reason if pw is not incorrect, script wait for timeout and don't expect ">" for "iplir show config"
|
36
|
+
# thus, commented code below doesn't work
|
43
37
|
# expect /Permission denied, please try again/ do
|
44
|
-
#
|
38
|
+
# puts "permission denied"
|
45
39
|
# end
|
46
|
-
|
47
40
|
expect />\s*$/ do
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
# When running with cron, message appears:
|
53
|
-
# "WARNING: terminal is not fully functional
|
54
|
-
# - (press RETURN)"
|
55
|
-
# So we imitate pressing <Enter>.
|
41
|
+
send "iplir show config"
|
42
|
+
# when running with cron, message appears:
|
43
|
+
# WARNING: terminal is not fully functional
|
44
|
+
#- (press RETURN)
|
56
45
|
send ENTER_KEYCODE
|
57
46
|
logged = true
|
47
|
+
puts "iplir show config"
|
58
48
|
end
|
59
49
|
end
|
60
|
-
return nil
|
50
|
+
return nil if !logged
|
61
51
|
|
62
|
-
#
|
63
|
-
# ("default" for vipnet v3 and "tunneldefault" for vipnet v4.)
|
52
|
+
# reading iplirconf until "default= auto" line appeared
|
64
53
|
retflag = false
|
65
54
|
while !retflag
|
66
55
|
retval = any do
|
67
56
|
expect /.*:/m do
|
68
|
-
|
57
|
+
iplirconf += last_match.to_s
|
69
58
|
last_match.to_s.split("\n").each do |line|
|
70
|
-
if line =~
|
59
|
+
if line =~ /default= auto/
|
71
60
|
retflag = true
|
72
61
|
break
|
73
62
|
end
|
@@ -78,33 +67,30 @@ class VipnetGetter
|
|
78
67
|
end
|
79
68
|
end
|
80
69
|
|
81
|
-
#
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
iplirconf_content.strip!
|
99
|
-
iplirconf_content << "\n\n"
|
100
|
-
|
70
|
+
# remove regular trash caused by "send PGDN_KEYCODE"
|
71
|
+
iplirconf = iplirconf.gsub(":\e[K\r\e[K:\e[K3\b3\e[K4\b4\r\e[K", "")
|
72
|
+
# remove trash in the beginning
|
73
|
+
iplirconf = iplirconf.gsub("iplir show config\r\n\e[?1049h\e[?1h\e=\r", "")
|
74
|
+
# remove trash in the end
|
75
|
+
iplirconf = iplirconf[/.*default= auto\r\n/m, 0]
|
76
|
+
# replace \r\n by \n
|
77
|
+
iplirconf = iplirconf.gsub("\r", "")
|
78
|
+
# remove trash caused by send ENTER_KEYCODE
|
79
|
+
iplirconf = iplirconf.gsub(":\x1B[K\x1B[K:\x1B[K1\x081\x1B[K3\x083\x1B[K", "")
|
80
|
+
# remove trash caused by "terminal is not fully functional" issue when running script with cron
|
81
|
+
iplirconf = iplirconf.gsub("::3\x083", "")
|
82
|
+
iplirconf = iplirconf.gsub("4\x084", "")
|
83
|
+
iplirconf = iplirconf.gsub("iplir show config\nWARNING: terminal is not fully functional\n- (press RETURN):1\x081", "")
|
84
|
+
iplirconf = iplirconf.gsub("4\x084", "")
|
85
|
+
# add return if necessary
|
86
|
+
iplirconf += "\n" if iplirconf[-4..-1] != "\n\n"
|
101
87
|
if output_file_path
|
102
|
-
File.open(output_file_path,
|
88
|
+
File.open(output_file_path, 'w') { |f| f.write(iplirconf) }
|
103
89
|
output_file_path
|
104
90
|
else
|
105
91
|
require "tempfile"
|
106
|
-
iplirconf_file = Tempfile.new("iplirconf"
|
107
|
-
iplirconf_file.write(
|
92
|
+
iplirconf_file = Tempfile.new("iplirconf")
|
93
|
+
iplirconf_file.write(iplirconf)
|
108
94
|
iplirconf_file.flush
|
109
95
|
iplirconf_file.path
|
110
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vipnet_getter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.11'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Morozov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby_expect
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
|
-
description: Allows to get configuration files like iplir.conf (and more) from ViPNet
|
27
|
+
description: Allows to get configuration files like iplir.conf (and more) from ViPNet
|
28
28
|
products such as HW1000; no "enable" and "admin escape" needed.
|
29
29
|
email: ntcomp12@gmail.com
|
30
30
|
executables: []
|
@@ -55,5 +55,5 @@ rubyforge_project:
|
|
55
55
|
rubygems_version: 2.6.6
|
56
56
|
signing_key:
|
57
57
|
specification_version: 4
|
58
|
-
summary: Gem for getting data from ViPNet
|
58
|
+
summary: Gem for getting data from ViPNet products
|
59
59
|
test_files: []
|