net-connector 0.5.0 → 0.7.0

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/CONTRIBUTING.md +20 -0
  4. data/README.md +153 -42
  5. data/docs/VERIFICATION.md +42 -1
  6. data/docs/architecture.md +20 -1
  7. data/examples/backup.yml +40 -0
  8. data/examples/inventory_sql.yml +16 -0
  9. data/lib/net/connector/device/base.rb +30 -38
  10. data/lib/net/connector/device/profile/builder.rb +8 -8
  11. data/lib/net/connector/device/profile.rb +2 -2
  12. data/lib/net/connector/device/running_config.rb +2 -2
  13. data/lib/net/connector/device/tftp/receipt.rb +12 -3
  14. data/lib/net/connector/device/tftp.rb +7 -7
  15. data/lib/net/connector/device/topology.rb +4 -4
  16. data/lib/net/connector/engine/authentication.rb +1 -1
  17. data/lib/net/connector/engine/command.rb +2 -2
  18. data/lib/net/connector/engine/configuration.rb +5 -2
  19. data/lib/net/connector/engine/dialogue.rb +4 -4
  20. data/lib/net/connector/engine/execution.rb +27 -16
  21. data/lib/net/connector/engine/known_hosts.rb +112 -0
  22. data/lib/net/connector/engine/log.rb +10 -7
  23. data/lib/net/connector/engine/session.rb +117 -128
  24. data/lib/net/connector/engine/transport.rb +32 -7
  25. data/lib/net/connector/netdisco/backup_run.rb +132 -0
  26. data/lib/net/connector/netdisco/batch.rb +1 -1
  27. data/lib/net/connector/netdisco/cli/options.rb +139 -0
  28. data/lib/net/connector/netdisco/cli.rb +20 -24
  29. data/lib/net/connector/netdisco/client.rb +8 -7
  30. data/lib/net/connector/netdisco/config_file.rb +26 -22
  31. data/lib/net/connector/netdisco/connection.rb +38 -0
  32. data/lib/net/connector/netdisco/database_client.rb +197 -0
  33. data/lib/net/connector/netdisco/device.rb +11 -1
  34. data/lib/net/connector/netdisco/fleet.rb +68 -47
  35. data/lib/net/connector/netdisco/inventory_budget.rb +4 -4
  36. data/lib/net/connector/netdisco/plan.rb +14 -9
  37. data/lib/net/connector/netdisco/planner.rb +18 -14
  38. data/lib/net/connector/netdisco/progress.rb +253 -0
  39. data/lib/net/connector/netdisco/report/files.rb +41 -0
  40. data/lib/net/connector/netdisco/report/text.rb +45 -0
  41. data/lib/net/connector/netdisco/report.rb +53 -31
  42. data/lib/net/connector/netdisco/result_store.rb +3 -1
  43. data/lib/net/connector/netdisco/rules.rb +10 -2
  44. data/lib/net/connector/netdisco/settings.rb +136 -63
  45. data/lib/net/connector/netdisco/tftp_archive.rb +175 -0
  46. data/lib/net/connector/netdisco/tftp_history.rb +16 -0
  47. data/lib/net/connector/netdisco/tftp_verification.rb +58 -0
  48. data/lib/net/connector/netdisco/worker.rb +8 -3
  49. data/lib/net/connector/netdisco.rb +11 -0
  50. data/lib/net/connector/storage/backup_lock.rb +1 -1
  51. data/lib/net/connector/storage/batch_directory.rb +29 -0
  52. data/lib/net/connector/storage.rb +1 -0
  53. data/lib/net/connector/vendor/h3c.rb +2 -1
  54. data/lib/net/connector/vendor/hillstone/tftp_backup.rb +3 -3
  55. data/lib/net/connector/vendor/palo_alto/tftp_backup.rb +3 -3
  56. data/lib/net/connector/vendor/radware/running_config.rb +19 -0
  57. data/lib/net/connector/vendor/radware.rb +4 -3
  58. data/lib/net/connector/version.rb +1 -1
  59. data/lib/net/connector.rb +2 -2
  60. metadata +57 -104
metadata CHANGED
@@ -1,42 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - net-connector contributors
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-09-27 00:00:00.000000000 Z
10
+ date: 2026-09-28 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: expect-pty
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
18
  version: 0.5.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: 0.5.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: textfsm
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 0.2.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: pg
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '1.5'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '1.5'
40
54
  - !ruby/object:Gem::Dependency
41
55
  name: digest
42
56
  requirement: !ruby/object:Gem::Requirement
@@ -44,9 +58,6 @@ dependencies:
44
58
  - - ">="
45
59
  - !ruby/object:Gem::Version
46
60
  version: '3.1'
47
- - - "<"
48
- - !ruby/object:Gem::Version
49
- version: '4.0'
50
61
  type: :runtime
51
62
  prerelease: false
52
63
  version_requirements: !ruby/object:Gem::Requirement
@@ -54,9 +65,6 @@ dependencies:
54
65
  - - ">="
55
66
  - !ruby/object:Gem::Version
56
67
  version: '3.1'
57
- - - "<"
58
- - !ruby/object:Gem::Version
59
- version: '4.0'
60
68
  - !ruby/object:Gem::Dependency
61
69
  name: english
62
70
  requirement: !ruby/object:Gem::Requirement
@@ -64,9 +72,6 @@ dependencies:
64
72
  - - ">="
65
73
  - !ruby/object:Gem::Version
66
74
  version: '0.7'
67
- - - "<"
68
- - !ruby/object:Gem::Version
69
- version: '1.0'
70
75
  type: :runtime
71
76
  prerelease: false
72
77
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,9 +79,6 @@ dependencies:
74
79
  - - ">="
75
80
  - !ruby/object:Gem::Version
76
81
  version: '0.7'
77
- - - "<"
78
- - !ruby/object:Gem::Version
79
- version: '1.0'
80
82
  - !ruby/object:Gem::Dependency
81
83
  name: fileutils
82
84
  requirement: !ruby/object:Gem::Requirement
@@ -84,9 +86,6 @@ dependencies:
84
86
  - - ">="
85
87
  - !ruby/object:Gem::Version
86
88
  version: '1.6'
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: '2.0'
90
89
  type: :runtime
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
@@ -94,49 +93,60 @@ dependencies:
94
93
  - - ">="
95
94
  - !ruby/object:Gem::Version
96
95
  version: '1.6'
97
- - - "<"
98
- - !ruby/object:Gem::Version
99
- version: '2.0'
100
96
  - !ruby/object:Gem::Dependency
101
97
  name: forwardable
102
98
  requirement: !ruby/object:Gem::Requirement
103
99
  requirements:
104
- - - "~>"
100
+ - - ">="
105
101
  - !ruby/object:Gem::Version
106
102
  version: '1.3'
107
103
  type: :runtime
108
104
  prerelease: false
109
105
  version_requirements: !ruby/object:Gem::Requirement
110
106
  requirements:
111
- - - "~>"
107
+ - - ">="
112
108
  - !ruby/object:Gem::Version
113
109
  version: '1.3'
110
+ - !ruby/object:Gem::Dependency
111
+ name: io-console
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0.6'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0.6'
114
124
  - !ruby/object:Gem::Dependency
115
125
  name: ipaddr
116
126
  requirement: !ruby/object:Gem::Requirement
117
127
  requirements:
118
- - - "~>"
128
+ - - ">="
119
129
  - !ruby/object:Gem::Version
120
130
  version: '1.2'
121
131
  type: :runtime
122
132
  prerelease: false
123
133
  version_requirements: !ruby/object:Gem::Requirement
124
134
  requirements:
125
- - - "~>"
135
+ - - ">="
126
136
  - !ruby/object:Gem::Version
127
137
  version: '1.2'
128
138
  - !ruby/object:Gem::Dependency
129
139
  name: json
130
140
  requirement: !ruby/object:Gem::Requirement
131
141
  requirements:
132
- - - "~>"
142
+ - - ">="
133
143
  - !ruby/object:Gem::Version
134
144
  version: '2.0'
135
145
  type: :runtime
136
146
  prerelease: false
137
147
  version_requirements: !ruby/object:Gem::Requirement
138
148
  requirements:
139
- - - "~>"
149
+ - - ">="
140
150
  - !ruby/object:Gem::Version
141
151
  version: '2.0'
142
152
  - !ruby/object:Gem::Dependency
@@ -146,9 +156,6 @@ dependencies:
146
156
  - - ">="
147
157
  - !ruby/object:Gem::Version
148
158
  version: '1.5'
149
- - - "<"
150
- - !ruby/object:Gem::Version
151
- version: '2.0'
152
159
  type: :runtime
153
160
  prerelease: false
154
161
  version_requirements: !ruby/object:Gem::Requirement
@@ -156,9 +163,6 @@ dependencies:
156
163
  - - ">="
157
164
  - !ruby/object:Gem::Version
158
165
  version: '1.5'
159
- - - "<"
160
- - !ruby/object:Gem::Version
161
- version: '2.0'
162
166
  - !ruby/object:Gem::Dependency
163
167
  name: net-http
164
168
  requirement: !ruby/object:Gem::Requirement
@@ -166,9 +170,6 @@ dependencies:
166
170
  - - ">="
167
171
  - !ruby/object:Gem::Version
168
172
  version: '0.3'
169
- - - "<"
170
- - !ruby/object:Gem::Version
171
- version: '1.0'
172
173
  type: :runtime
173
174
  prerelease: false
174
175
  version_requirements: !ruby/object:Gem::Requirement
@@ -176,9 +177,6 @@ dependencies:
176
177
  - - ">="
177
178
  - !ruby/object:Gem::Version
178
179
  version: '0.3'
179
- - - "<"
180
- - !ruby/object:Gem::Version
181
- version: '1.0'
182
180
  - !ruby/object:Gem::Dependency
183
181
  name: open3
184
182
  requirement: !ruby/object:Gem::Requirement
@@ -186,9 +184,6 @@ dependencies:
186
184
  - - ">="
187
185
  - !ruby/object:Gem::Version
188
186
  version: '0.1'
189
- - - "<"
190
- - !ruby/object:Gem::Version
191
- version: '1.0'
192
187
  type: :runtime
193
188
  prerelease: false
194
189
  version_requirements: !ruby/object:Gem::Requirement
@@ -196,9 +191,6 @@ dependencies:
196
191
  - - ">="
197
192
  - !ruby/object:Gem::Version
198
193
  version: '0.1'
199
- - - "<"
200
- - !ruby/object:Gem::Version
201
- version: '1.0'
202
194
  - !ruby/object:Gem::Dependency
203
195
  name: openssl
204
196
  requirement: !ruby/object:Gem::Requirement
@@ -206,9 +198,6 @@ dependencies:
206
198
  - - ">="
207
199
  - !ruby/object:Gem::Version
208
200
  version: '3.0'
209
- - - "<"
210
- - !ruby/object:Gem::Version
211
- version: '5.0'
212
201
  type: :runtime
213
202
  prerelease: false
214
203
  version_requirements: !ruby/object:Gem::Requirement
@@ -216,9 +205,6 @@ dependencies:
216
205
  - - ">="
217
206
  - !ruby/object:Gem::Version
218
207
  version: '3.0'
219
- - - "<"
220
- - !ruby/object:Gem::Version
221
- version: '5.0'
222
208
  - !ruby/object:Gem::Dependency
223
209
  name: optparse
224
210
  requirement: !ruby/object:Gem::Requirement
@@ -226,9 +212,6 @@ dependencies:
226
212
  - - ">="
227
213
  - !ruby/object:Gem::Version
228
214
  version: '0.3'
229
- - - "<"
230
- - !ruby/object:Gem::Version
231
- version: '1.0'
232
215
  type: :runtime
233
216
  prerelease: false
234
217
  version_requirements: !ruby/object:Gem::Requirement
@@ -236,9 +219,6 @@ dependencies:
236
219
  - - ">="
237
220
  - !ruby/object:Gem::Version
238
221
  version: '0.3'
239
- - - "<"
240
- - !ruby/object:Gem::Version
241
- version: '1.0'
242
222
  - !ruby/object:Gem::Dependency
243
223
  name: securerandom
244
224
  requirement: !ruby/object:Gem::Requirement
@@ -246,9 +226,6 @@ dependencies:
246
226
  - - ">="
247
227
  - !ruby/object:Gem::Version
248
228
  version: '0.2'
249
- - - "<"
250
- - !ruby/object:Gem::Version
251
- version: '1.0'
252
229
  type: :runtime
253
230
  prerelease: false
254
231
  version_requirements: !ruby/object:Gem::Requirement
@@ -256,9 +233,6 @@ dependencies:
256
233
  - - ">="
257
234
  - !ruby/object:Gem::Version
258
235
  version: '0.2'
259
- - - "<"
260
- - !ruby/object:Gem::Version
261
- version: '1.0'
262
236
  - !ruby/object:Gem::Dependency
263
237
  name: shellwords
264
238
  requirement: !ruby/object:Gem::Requirement
@@ -266,9 +240,6 @@ dependencies:
266
240
  - - ">="
267
241
  - !ruby/object:Gem::Version
268
242
  version: '0.1'
269
- - - "<"
270
- - !ruby/object:Gem::Version
271
- version: '1.0'
272
243
  type: :runtime
273
244
  prerelease: false
274
245
  version_requirements: !ruby/object:Gem::Requirement
@@ -276,21 +247,18 @@ dependencies:
276
247
  - - ">="
277
248
  - !ruby/object:Gem::Version
278
249
  version: '0.1'
279
- - - "<"
280
- - !ruby/object:Gem::Version
281
- version: '1.0'
282
250
  - !ruby/object:Gem::Dependency
283
251
  name: stringio
284
252
  requirement: !ruby/object:Gem::Requirement
285
253
  requirements:
286
- - - "~>"
254
+ - - ">="
287
255
  - !ruby/object:Gem::Version
288
256
  version: '3.0'
289
257
  type: :runtime
290
258
  prerelease: false
291
259
  version_requirements: !ruby/object:Gem::Requirement
292
260
  requirements:
293
- - - "~>"
261
+ - - ">="
294
262
  - !ruby/object:Gem::Version
295
263
  version: '3.0'
296
264
  - !ruby/object:Gem::Dependency
@@ -300,9 +268,6 @@ dependencies:
300
268
  - - ">="
301
269
  - !ruby/object:Gem::Version
302
270
  version: '0.1'
303
- - - "<"
304
- - !ruby/object:Gem::Version
305
- version: '1.0'
306
271
  type: :runtime
307
272
  prerelease: false
308
273
  version_requirements: !ruby/object:Gem::Requirement
@@ -310,9 +275,6 @@ dependencies:
310
275
  - - ">="
311
276
  - !ruby/object:Gem::Version
312
277
  version: '0.1'
313
- - - "<"
314
- - !ruby/object:Gem::Version
315
- version: '1.0'
316
278
  - !ruby/object:Gem::Dependency
317
279
  name: time
318
280
  requirement: !ruby/object:Gem::Requirement
@@ -320,9 +282,6 @@ dependencies:
320
282
  - - ">="
321
283
  - !ruby/object:Gem::Version
322
284
  version: '0.2'
323
- - - "<"
324
- - !ruby/object:Gem::Version
325
- version: '1.0'
326
285
  type: :runtime
327
286
  prerelease: false
328
287
  version_requirements: !ruby/object:Gem::Requirement
@@ -330,9 +289,6 @@ dependencies:
330
289
  - - ">="
331
290
  - !ruby/object:Gem::Version
332
291
  version: '0.2'
333
- - - "<"
334
- - !ruby/object:Gem::Version
335
- version: '1.0'
336
292
  - !ruby/object:Gem::Dependency
337
293
  name: timeout
338
294
  requirement: !ruby/object:Gem::Requirement
@@ -340,9 +296,6 @@ dependencies:
340
296
  - - ">="
341
297
  - !ruby/object:Gem::Version
342
298
  version: '0.3'
343
- - - "<"
344
- - !ruby/object:Gem::Version
345
- version: '1.0'
346
299
  type: :runtime
347
300
  prerelease: false
348
301
  version_requirements: !ruby/object:Gem::Requirement
@@ -350,9 +303,6 @@ dependencies:
350
303
  - - ">="
351
304
  - !ruby/object:Gem::Version
352
305
  version: '0.3'
353
- - - "<"
354
- - !ruby/object:Gem::Version
355
- version: '1.0'
356
306
  - !ruby/object:Gem::Dependency
357
307
  name: uri
358
308
  requirement: !ruby/object:Gem::Requirement
@@ -360,9 +310,6 @@ dependencies:
360
310
  - - ">="
361
311
  - !ruby/object:Gem::Version
362
312
  version: '0.12'
363
- - - "<"
364
- - !ruby/object:Gem::Version
365
- version: '2.0'
366
313
  type: :runtime
367
314
  prerelease: false
368
315
  version_requirements: !ruby/object:Gem::Requirement
@@ -370,9 +317,6 @@ dependencies:
370
317
  - - ">="
371
318
  - !ruby/object:Gem::Version
372
319
  version: '0.12'
373
- - - "<"
374
- - !ruby/object:Gem::Version
375
- version: '2.0'
376
320
  - !ruby/object:Gem::Dependency
377
321
  name: yaml
378
322
  requirement: !ruby/object:Gem::Requirement
@@ -380,9 +324,6 @@ dependencies:
380
324
  - - ">="
381
325
  - !ruby/object:Gem::Version
382
326
  version: '0.2'
383
- - - "<"
384
- - !ruby/object:Gem::Version
385
- version: '1.0'
386
327
  type: :runtime
387
328
  prerelease: false
388
329
  version_requirements: !ruby/object:Gem::Requirement
@@ -390,9 +331,6 @@ dependencies:
390
331
  - - ">="
391
332
  - !ruby/object:Gem::Version
392
333
  version: '0.2'
393
- - - "<"
394
- - !ruby/object:Gem::Version
395
- version: '1.0'
396
334
  description: 通过 SSH 或 Telnet 登录网络设备,采集配置、执行命令脚本、处理交互提示,并提供脱敏日志与基于 Netdisco 清单的批量备份。
397
335
  executables:
398
336
  - net-connector-backup
@@ -407,6 +345,8 @@ files:
407
345
  - docs/RELEASING.md
408
346
  - docs/VERIFICATION.md
409
347
  - docs/architecture.md
348
+ - examples/backup.yml
349
+ - examples/inventory_sql.yml
410
350
  - exe/net-connector-backup
411
351
  - lib/net-connector.rb
412
352
  - lib/net/connector.rb
@@ -435,6 +375,7 @@ files:
435
375
  - lib/net/connector/engine/error_metadata.rb
436
376
  - lib/net/connector/engine/errors.rb
437
377
  - lib/net/connector/engine/execution.rb
378
+ - lib/net/connector/engine/known_hosts.rb
438
379
  - lib/net/connector/engine/log.rb
439
380
  - lib/net/connector/engine/log/event.rb
440
381
  - lib/net/connector/engine/log/formatter.rb
@@ -447,23 +388,34 @@ files:
447
388
  - lib/net/connector/engine/terminal_text.rb
448
389
  - lib/net/connector/engine/transport.rb
449
390
  - lib/net/connector/netdisco.rb
391
+ - lib/net/connector/netdisco/backup_run.rb
450
392
  - lib/net/connector/netdisco/batch.rb
451
393
  - lib/net/connector/netdisco/cli.rb
394
+ - lib/net/connector/netdisco/cli/options.rb
452
395
  - lib/net/connector/netdisco/client.rb
453
396
  - lib/net/connector/netdisco/config_file.rb
397
+ - lib/net/connector/netdisco/connection.rb
398
+ - lib/net/connector/netdisco/database_client.rb
454
399
  - lib/net/connector/netdisco/device.rb
455
400
  - lib/net/connector/netdisco/diagnostic.rb
456
401
  - lib/net/connector/netdisco/fleet.rb
457
402
  - lib/net/connector/netdisco/inventory_budget.rb
458
403
  - lib/net/connector/netdisco/plan.rb
459
404
  - lib/net/connector/netdisco/planner.rb
405
+ - lib/net/connector/netdisco/progress.rb
460
406
  - lib/net/connector/netdisco/report.rb
407
+ - lib/net/connector/netdisco/report/files.rb
408
+ - lib/net/connector/netdisco/report/text.rb
461
409
  - lib/net/connector/netdisco/result_store.rb
462
410
  - lib/net/connector/netdisco/rules.rb
463
411
  - lib/net/connector/netdisco/settings.rb
412
+ - lib/net/connector/netdisco/tftp_archive.rb
413
+ - lib/net/connector/netdisco/tftp_history.rb
414
+ - lib/net/connector/netdisco/tftp_verification.rb
464
415
  - lib/net/connector/netdisco/worker.rb
465
416
  - lib/net/connector/storage.rb
466
417
  - lib/net/connector/storage/backup_lock.rb
418
+ - lib/net/connector/storage/batch_directory.rb
467
419
  - lib/net/connector/storage/private_file.rb
468
420
  - lib/net/connector/storage/safe_file.rb
469
421
  - lib/net/connector/storage/saved_config.rb
@@ -502,6 +454,7 @@ files:
502
454
  - lib/net/connector/vendor/palo_alto/tftp_backup.rb
503
455
  - lib/net/connector/vendor/palo_alto/topology.rb
504
456
  - lib/net/connector/vendor/radware.rb
457
+ - lib/net/connector/vendor/radware/running_config.rb
505
458
  - lib/net/connector/vendor/radware/tftp_backup.rb
506
459
  - lib/net/connector/vendor/radware/topology.rb
507
460
  - lib/net/connector/version.rb