dunst 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +3 -0
  4. data/bin/dunst +117 -0
  5. metadata +68 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2ca7de0ee4c74ef3514c2934749ae5f4ee4461b3
4
+ data.tar.gz: 1700dcef911b5cfcada1d4e22e588230909ed041
5
+ SHA512:
6
+ metadata.gz: f3befb6f81d550a8e2c6e81bed31f303d30858ff896e2af5daf1b58561c948b4c9b7eb5ed5591c4c463f5813b54ac6bd371c5046ee1fa1610c2e3f5013fca3c6
7
+ data.tar.gz: 7c91f61f44244ef81f33a6d4303425752d655a9c471d1a8516ecf923dd859b5d96c65f66b1e7b919d569d34743582083b33840e7e6f841b4666b361cebaafb19
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Daniel Bovensiepen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Dunst
2
+
3
+ Simple cloud management tool using SSH and VMWare Workstation. Supporting clone, start and stop of VMs.
data/bin/dunst ADDED
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'net/ssh'
4
+
5
+ DHCP_HOST = '172.23.0.1'
6
+ HOST = ARGV[0]
7
+ USER = ARGV[1]
8
+ KEY = ARGV[2]
9
+ CMD = ARGV[3]
10
+ PARA1 = ARGV[4]
11
+
12
+ def ping ip
13
+ begin
14
+ r = `ping -c 1 -t1 -W1 #{ip} |grep packets`
15
+ r.match(/transmitted, (.*?) packets/)[1].to_i == 1
16
+ rescue
17
+ false
18
+ end
19
+ end
20
+
21
+ def exe(ssh, cmd)
22
+ output = ''
23
+ ssh.exec!(cmd) do |channel, stream, data|
24
+ output << "#{data}" if stream == :stdout
25
+ end
26
+ output
27
+ end
28
+
29
+ def get_ip(mac)
30
+ Net::SSH.start(DHCP_HOST, USER, :password => KEY) do |ssh|
31
+ exe(ssh, "cat /var/log/syslog | grep #{mac} | grep DHCPACK | tail -n1 | cut -d \" \" -f 8")
32
+ end
33
+ end
34
+
35
+ raise "#{HOST} not reachable" unless ping(HOST)
36
+
37
+ Net::SSH.start(HOST, USER, :password => KEY, :keys => [ KEY ]) do |ssh|
38
+ case CMD
39
+ when 'new'
40
+ t = PARA1.nil? ? 'ubuntu1604' : PARA1
41
+ n = rand(100**10)
42
+ ret = exe(ssh, "/usr/bin/vmrun -T ws clone /home/dabo/vms/_templates/#{t}/#{t}.vmx /home/dabo/vms/vmx/#{n}/#{n}.vmx linked")
43
+ if ret.empty?
44
+ puts "OK\t#{n}"
45
+ else
46
+ puts "KO\t#{ret}"
47
+ end
48
+ when 'list'
49
+ ret = exe(ssh, "ls /home/dabo/vms/vmx")
50
+ vms = ret.split
51
+ ret2 = exe(ssh, "/usr/bin/vmrun -T ws list")
52
+ vms_state = ret2.split("\n")
53
+ puts "Count\t#{vms.count}"
54
+ puts "ID\t\t\tVMX\t\t\t\t\t\t\t\t\tSTATE\tMAC\t\t\tIP"
55
+ vms.each do |v|
56
+ p = "/home/dabo/vms/vmx/#{v}/#{v}.vmx"
57
+ s = vms_state.include?(p) ? 'run' : 'halt'
58
+ mac = exe(ssh, "cat #{p} | grep \"ddress =\" | cut -d \"\\\"\" -f 2").strip.downcase
59
+ if s == 'run'
60
+ ip = exe(ssh, "/usr/bin/vmrun -T ws getGuestIPAddress #{p}")
61
+ ip = ip.match(/^Error/) ? get_ip(mac) : ip
62
+ ip = ip.match(/^Error/) ? '' : ip
63
+ else
64
+ ip = ''
65
+ end
66
+ puts "#{v}\t#{p}\t#{s}\t#{mac}\t#{ip}"
67
+ end
68
+ when 'rm'
69
+ n = PARA1
70
+ ret = exe(ssh, "/usr/bin/vmrun -T ws deleteVM /home/dabo/vms/vmx/#{n}/#{n}.vmx")
71
+ if ret.empty?
72
+ puts "OK\t#{n}"
73
+ else
74
+ puts "KO\t#{ret}"
75
+ end
76
+ when 'start'
77
+ n = PARA1
78
+ ret = exe(ssh, "/usr/bin/vmrun -T ws start /home/dabo/vms/vmx/#{n}/#{n}.vmx nogui")
79
+ if ret.empty?
80
+ puts "OK\t#{n}"
81
+ else
82
+ puts "KO\t#{ret}"
83
+ end
84
+ when 'halt'
85
+ n = PARA1
86
+ ret = exe(ssh, "/usr/bin/vmrun -T ws stop /home/dabo/vms/vmx/#{n}/#{n}.vmx soft")
87
+ if ret.empty?
88
+ puts "OK\t#{n}"
89
+ else
90
+ puts "KO\t#{ret}"
91
+ end
92
+ when 'stop'
93
+ n = PARA1
94
+ ret = exe(ssh, "/usr/bin/vmrun -T ws stop /home/dabo/vms/vmx/#{n}/#{n}.vmx hard")
95
+ if ret.empty?
96
+ puts "OK\t#{n}"
97
+ else
98
+ puts "KO\t#{ret}"
99
+ end
100
+ when 'reboot'
101
+ n = PARA1
102
+ ret = exe(ssh, "/usr/bin/vmrun -T ws reset /home/dabo/vms/vmx/#{n}/#{n}.vmx soft")
103
+ if ret.empty?
104
+ puts "OK\t#{n}"
105
+ else
106
+ puts "KO\t#{ret}"
107
+ end
108
+ when 'reset'
109
+ n = PARA1
110
+ ret = exe(ssh, "/usr/bin/vmrun -T ws reset /home/dabo/vms/vmx/#{n}/#{n}.vmx hard")
111
+ if ret.empty?
112
+ puts "OK\t#{n}"
113
+ else
114
+ puts "KO\t#{ret}"
115
+ end
116
+ end
117
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dunst
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Bovensiepen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: net-ssh
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ - - '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 4.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '4.0'
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 4.0.1
33
+ description: Simple cloud management tool using SSH and VMWare Workstation. Supporting
34
+ clone, start and stop of VMs.
35
+ email: daniel@bovensiepen.net
36
+ executables:
37
+ - dunst
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - bin/dunst
42
+ - LICENSE
43
+ - README.md
44
+ homepage: https://github.com/bovi/dunst
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.0.14.1
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: Simple cloud management tool
68
+ test_files: []