netmidget 0.0.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/netmidget.rb +65 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 602137698dad2920f6f0fe430c62a2c4d31f45de
4
+ data.tar.gz: a5eb1e6f2578a6540e59c3ca4c382d19419deb77
5
+ SHA512:
6
+ metadata.gz: 3a52002dfb09b674842aa09a9e05dc7e15dbe94cabf20994ea86931c9eba98afe48ec90dba028413db9d3d48aba3b714b34f3498a8bc9a5049d8d319cdf9b455
7
+ data.tar.gz: e4fedba45dffee54a7fdfdb9e2ecd41074f6e8b32419e5b34f05d1ccde63ae41e013fcc57a4e5034d41e1602f60cfca7931ba8f61c0e5d6ea864ebb339095f00
@@ -0,0 +1,65 @@
1
+ require 'net/ping'
2
+
3
+ class Netmidget
4
+ attr_accessor :hostname,
5
+ :site,
6
+ :ip,
7
+ :device_name,
8
+ :log
9
+
10
+ def initialize(opts)
11
+ @hostname = opts[:hostname] || `/bin/hostname`.chomp
12
+ @site = opts[:site]
13
+ @ip = opts[:ip]
14
+ @device_name = opts[:device_name]
15
+ @log = opts[:log] || nil
16
+ end
17
+
18
+ def device_str
19
+ "#{site}::#{device_name}::#{ip}"
20
+ end
21
+
22
+ def ping
23
+ Net::Ping::External.new(ip).ping?
24
+ end
25
+
26
+ def ping?
27
+ if not resp = ping
28
+ warn_str = "#{device_str} was unresponsive...trying again"
29
+ log ? log.warn(warn_str) : puts(Time.now.to_s + ": " + warn_str)
30
+ resp = ping
31
+ end
32
+ resp
33
+ end
34
+
35
+ def traceroute
36
+ `/usr/sbin/traceroute -n -m 20 -w 2 #{ip} 2>&1`
37
+ end
38
+
39
+ def traceroute_output_str
40
+ str = traceroute
41
+ log ? log.error(str) : puts(str = (stdout_prefix + str))
42
+ str
43
+ end
44
+
45
+ def stdout_prefix
46
+ "#{Time.now.to_s}: #{hostname} "
47
+ end
48
+
49
+ def ping_output_str_prefix
50
+ "Pinging #{device_str}: "
51
+ end
52
+
53
+ def ping_output_str_success
54
+ str = ping_output_str_prefix + "Success"
55
+ log ? log.info(str) : puts(str = (stdout_prefix + str))
56
+ str
57
+ end
58
+
59
+ def ping_output_str_fail
60
+ str = ping_output_str_prefix + "Fail"
61
+ log ? log.error(str) : puts(str = (stdout_prefix + str))
62
+ str
63
+ end
64
+
65
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: netmidget
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Tyler Arrigoni
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Liteweight library for ping monitoring and email alerts
14
+ email: tyler@oneif.net
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/netmidget.rb
20
+ homepage: http://www.oneif.net/code/netmidget
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.12
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Liteweight library for ping monitoring and email alerts
44
+ test_files: []