From 52a0b9be0a56d39e79abfffdc79a1b9cab5779ff Mon Sep 17 00:00:00 2001 From: "Aleksandr O. Levchuk" Date: Fri, 10 Aug 2007 21:04:16 -0700 Subject: [PATCH] Major Refactoring: took care of all "ssh" and "sudo" occurrences * Removed or replaced "ssh" and "sudo" occurrences with #{SSH} and #{SUDO} * Fixed the ~/.ssh/know_hostname creation and cleanup. More refactoring is needed because the allocation and deallocation are in far away places in the code --- app/controllers/cytoskeleton_controller.rb | 9 ++-- app/models/internal.rb | 2 +- app/models/list.rb | 2 +- app/models/nucleus.rb | 8 ++-- app/models/open_vz.rb | 68 ++++++++++++++++++---------- app/views/cytoskeleton/_templates.rhtml | 5 +- config/mwamko_constants.rb | 40 ++++++++++------ script/ajaxterm_setup_files/username_for_ssh | 10 ++-- script/comet_setup | 14 ------ script/mwamko-destroy | 4 +- script/mwamko-fast-create | 26 ++++++----- script/mwamko-slow-create | 9 ++-- script/mwamko-start | 18 +++++--- script/mwamko-stop | 6 +-- 14 files changed, 119 insertions(+), 102 deletions(-) delete mode 100755 script/comet_setup diff --git a/app/controllers/cytoskeleton_controller.rb b/app/controllers/cytoskeleton_controller.rb index 212a18e..9a622e5 100644 --- a/app/controllers/cytoskeleton_controller.rb +++ b/app/controllers/cytoskeleton_controller.rb @@ -48,8 +48,8 @@ class CytoskeletonController < ApplicationController @updated_on[a] = OLD_TIME end - @areas['templates'], @updated_on['templates'] = - [GET_TEMPLATES.call, OLD_TIME] + @areas['templates'] = GET_TEMPLATES.call[0] + @updated_on['templates'] = OLD_TIME all = VirtualEnvironment. find_all_by_uid(session[:user_id], @@ -78,10 +78,9 @@ class CytoskeletonController < ApplicationController @tags = {} ves.each do |ve| - cmd_start = "sudo #{VZTOOLS_PATH}/vzctl exec #{ve.veid}" @tags[ve.veid] = [] - `echo \"#{cmd_start} ls -1 ~#{session[:uname]}\" | ssh hive`.each do |t| - @tags[ve.veid] << t.chomp + OpenVZ.ls(ve.veid, "~#{session[:uname]}").each do |path| + @tags[ve.veid] << path end end diff --git a/app/models/internal.rb b/app/models/internal.rb index f57c7df..1a7c4fc 100644 --- a/app/models/internal.rb +++ b/app/models/internal.rb @@ -97,7 +97,7 @@ class Memory attr_reader :total, :available, :buffers, :cached def initialize(id) - @raw_data = `sudo #{VZTOOLS_PATH}/vzctl exec #{id} free -o` + @raw_data = `#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{id} free -o` lines = @raw_data.split("\n")[1...-1] lines.each do |line| diff --git a/app/models/list.rb b/app/models/list.rb index 4fb337e..3aed9a4 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -1,7 +1,7 @@ class List def initialize - @raw_data = `sudo #{VZTOOLS_PATH}/vzlist -a -H -o veid,status,ip` + @raw_data = `#{SUDO} #{VZTOOLS_PATH}/vzlist -a -H -o veid,status,ip` end def each diff --git a/app/models/nucleus.rb b/app/models/nucleus.rb index f42425b..068ea05 100644 --- a/app/models/nucleus.rb +++ b/app/models/nucleus.rb @@ -43,7 +43,7 @@ class Nucleus end end - errors = `sudo #{RAILS_ROOT}/script/mwamko-fast-create #{ve.veid} 2>&1` + errors = `#{SUDO} #{RAILS_ROOT}/script/mwamko-fast-create #{ve.veid} 2>&1` if !errors.strip.empty? ve.destroy @@ -58,7 +58,7 @@ class Nucleus ve.status = 'starting' ve.save! - errors = `sudo #{RAILS_ROOT}/script/mwamko-start #{veid} 2>&1` + errors = `#{SUDO} #{RAILS_ROOT}/script/mwamko-start #{veid} 2>&1` if !errors.strip.empty? if errors =~ /already running/ @@ -79,7 +79,7 @@ class Nucleus ve.status = 'stopping' ve.save! - errors = `sudo #{RAILS_ROOT}/script/mwamko-stop #{veid} 2>&1` + errors = `#{SUDO} #{RAILS_ROOT}/script/mwamko-stop #{veid} 2>&1` if !errors.strip.empty? if errors =~ /already stopped/ @@ -100,7 +100,7 @@ class Nucleus ve.status = 'destroying' ve.save! - return `sudo #{RAILS_ROOT}/script/mwamko-destroy #{veid} 2>&1` + return `#{SUDO} #{RAILS_ROOT}/script/mwamko-destroy #{veid} 2>&1` if !errors.strip.empty? ve.status = old_status diff --git a/app/models/open_vz.rb b/app/models/open_vz.rb index d376fea..24aa47d 100644 --- a/app/models/open_vz.rb +++ b/app/models/open_vz.rb @@ -48,7 +48,7 @@ class OpenVZ raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - cmd=`sudo #{VZTOOLS_PATH}/vzctl exec #{veid} df` + cmd=`#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid} df` return cmd end @@ -57,7 +57,7 @@ class OpenVZ raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - out =`sudo #{VZTOOLS_PATH}/vzctl exec #{veid} apt-get dist-upgrade -y` + out =`#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid} apt-get dist-upgrade -y` return out end @@ -66,7 +66,7 @@ class OpenVZ raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - cmd=`sudo #{VZTOOLS_PATH}/vzctl exec #{veid} uptime` + cmd=`#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid} uptime` return cmd end @@ -94,11 +94,20 @@ class OpenVZ (veid.to_s =~ SAFE_VEID) ve = VirtualEnvironment.find_by_veid(veid) - `sudo #{VZTOOLS_PATH}/vzctl set #{veid} --ipdel all --save` + `#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid} --ipdel all --save` + + # This is very ugly. AjaxTerm server should be re-implemented. - cmd = "rm ~alevchuk/.ssh/#{ve.ip}_known_host" - `echo "#{cmd}" | sudo ssh -T hive` + + # The cleanup of the know_host file is handled here, + # but the file is created from + # ./script/ajaxterm_setup_files/username_for_ssh + + `rm ~/.ssh/#{ve.ip}_known_host` + + + end @@ -107,7 +116,7 @@ class OpenVZ raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - cmd = %Q!printf echo\\ #{uname}\\ ALL=\\(ALL\\)\\ ALL\\ \\>\\>\\ /vz/private/#{veid}/etc/sudoers | sudo ssh -T hive! + cmd = %Q!printf echo\\ #{uname}\\ ALL=\\(ALL\\)\\ ALL\\ \\>\\>\\ /vz/private/#{veid}/etc/sudoers | #{SUDO} #{SSH} -T hive! `#{cmd}` @@ -119,7 +128,7 @@ class OpenVZ raise "Wrong #{ve.veid.inspect}" unless (ve.veid.to_s =~ SAFE_VEID) - cmd = "sudo #{VZTOOLS_PATH}/vzctl set #{ve.veid} --ipadd " + + cmd = "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{ve.veid} --ipadd " + "#{ve.ip} --save" `#{cmd}` @@ -133,7 +142,7 @@ class OpenVZ raise "Wrong #{ip.inspect}" unless (ip.to_s =~ SAFE_IP4) - cmd = "sudo #{VZTOOLS_PATH}/vzctl set #{veid} --ipadd #{ip} --save" + cmd = "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid} --ipadd #{ip} --save" `#{cmd}` end @@ -142,13 +151,15 @@ class OpenVZ raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - unless (name.to_s =~ SAFE_NETWORK_INTERFACE_NAME) + unless (name.to_s =~ SAFE_NETIF_NAME) raise "Choose the network interface name to be " + - "lower-case english letters and digits only. \n" + + "lower-case English letters and digits only. \n" + "#{name.inspect} was not a name like that." end - cmd = "sudo #{VZTOOLS_PATH}/vzctl set #{veid} --netif_add #{name} --save" + cmd = + "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid} --netif_add #{name} --save" + out = `#{cmd} 2>&1 1>/dev/null` if out.strip != '' @@ -164,7 +175,7 @@ class OpenVZ raise "Wrong #{ip.inspect}" unless (ip.to_s =~ SAFE_IP4) - cmd = "sudo #{VZTOOLS_PATH}/vzctl set #{veid} --ipdel #{ip} --save" + cmd = "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid} --ipdel #{ip} --save" `#{cmd}` end @@ -174,7 +185,7 @@ class OpenVZ raise "Wrong #{ve.veid.inspect}" unless (ve.veid.to_s =~ SAFE_VEID) - cmd = "sudo #{VZTOOLS_PATH}/vzctl set " + + cmd = "#{SUDO} #{VZTOOLS_PATH}/vzctl set " + "#{ve.veid} --hostname #{ve.veid} --save" `#{cmd}` @@ -186,7 +197,7 @@ class OpenVZ (veid.to_s =~ SAFE_VEID) cmd = [] - cmd << "sudo #{VZTOOLS_PATH}/vzctl set #{veid}" + cmd << "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid}" cmd << "--searchdomain #{DNS_SEARCHDOMAIN}" DNS_SERVER.each do |i| cmd << "--nameserver #{i}" @@ -198,12 +209,12 @@ class OpenVZ def self.set_ve_userpassw(veid, uname, upass) - raise "Wrong #{veid.inspect}, #{uname.inspect}, or #{upass.inspect}" unless + raise "Wrong #{veid.inspect}, #{uname.inspect}, or #{upass.inspect}" unless (veid.to_s =~ SAFE_VEID and uname =~ SAFE_USERNAME and upass =~ SAFE_PASSWORD) - cmd = "sudo #{VZTOOLS_PATH}/vzctl set #{veid} " + + cmd = "#{SUDO} #{VZTOOLS_PATH}/vzctl set #{veid} " + "--userpassw #{uname}:#{upass}" `#{cmd}` @@ -212,20 +223,20 @@ class OpenVZ def self.ssh_keygen(veid) raise "Wrong #{veid.inspect}" unless (veid.to_s =~ SAFE_VEID) - cmd_start = "sudo #{VZTOOLS_PATH}/vzctl exec #{veid}" + cmd_start = "#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid}" `#{cmd_start} rm /etc/ssh/ssh_host_rsa_key` `#{cmd_start} rm /etc/ssh/ssh_host_rsa_key.pub` - `#{cmd_start} /usr/bin/ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key` + `#{cmd_start} #{SSH}-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key` `#{cmd_start} rm /etc/ssh/ssh_host_dsa_key` `#{cmd_start} rm /etc/ssh/ssh_host_dsa_key.pub` - `#{cmd_start} /usr/bin/ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key` + `#{cmd_start} #{SSH}-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key` end def self.list_environments - ve_list = `sudo #{VZTOOLS_PATH}/vzlist -a -o veid --no-header`.split + ve_list = `#{SUDO} #{VZTOOLS_PATH}/vzlist -a -o veid --no-header`.split end @@ -237,7 +248,7 @@ class OpenVZ (veid.to_s =~ SAFE_VEID) output_and_errors = - `sudo #{VZTOOLS_PATH}/vzctl exec #{veid} cat /etc/shadow` + `#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid} cat /etc/shadow` raise "No Shadow File" if output_and_errors.empty? @@ -253,7 +264,16 @@ class OpenVZ bucket end end + end + + def self.ls(veid, path) + cmd_start = "#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid}" + `echo \"#{cmd_start} ls -1 #{path}\" | #{SSH} -T hive`.collect{|f| f.chomp} + end + def self.template_size(template) + `echo "#{GZIP} --quiet --list /vz/template/cache/#{template}.tar.gz" | + #{SSH} -T hive`.split[0..1] end # Methods from application controller and nucleus controller @@ -268,8 +288,8 @@ private raise "Should be #{pos.join(" or ")} only." unless pos.include?(x) cmd=[] - cmd << "sudo #{VZTOOLS_PATH}/vzctl exec #{veid}" - cmd << "ssh-keygen -lf /etc/ssh/ssh_host_#{x}_key" + cmd << "#{SUDO} #{VZTOOLS_PATH}/vzctl exec #{veid}" + cmd << "#{SSH}-keygen -lf /etc/ssh/ssh_host_#{x}_key" r = /\d+ (([a-f0-9]{2}:)*[a-f0-9]{2}) \/etc/ return nil unless `#{cmd.join(' ')}` =~ r diff --git a/app/views/cytoskeleton/_templates.rhtml b/app/views/cytoskeleton/_templates.rhtml index 9589ec5..5743f2f 100644 --- a/app/views/cytoskeleton/_templates.rhtml +++ b/app/views/cytoskeleton/_templates.rhtml @@ -2,10 +2,7 @@ require "kilobytes2human" rb = radio_button_tag "template", templates, :checked => true - -compressed, uncompressed = - `echo "gzip --quiet --list /vz/template/cache/#{h(templates)}.tar.gz" | - ssh hive`.split[0..1] +compressed, uncompressed = OpenVZ.template_size(h(templates)) %>
diff --git a/config/mwamko_constants.rb b/config/mwamko_constants.rb index a539f4e..b4baccb 100644 --- a/config/mwamko_constants.rb +++ b/config/mwamko_constants.rb @@ -5,26 +5,36 @@ end RAILS_ROOT = File.expand_path("#{MwamkoConstants::SCRIPT_DIR}/..") -VZTOOLS_PATH = '/usr/sbin' -# Mwamko is not able to manage multiple templates at this point -# so that is why this code block returns an array of only ONE element -GET_TEMPLATES = Proc.new do - "ubuntu-6.06.1-server-i386" -end +# Dependencies + +VZTOOLS_PATH = '/usr/sbin' +SUDO = '/usr/bin/sudo' +SSH = '/usr/bin/ssh' +GZIP = '/bin/gzip' + + +# Mwamko is not yet able to manage multiple templates +# that is why this code block returns an array of only ONE element +GET_TEMPLATES = Proc.new do + ["ubuntu-6.06.1-server-i386"] + end + + +# Safty contracts + +SAFE_PASSWORD = /^([a-zA-Z0-9%!@$&*()^# ])+$/ +SAFE_EMAIL = /^(([a-zA-Z0-9_.]+?)@([a-zA-Z0-9_.]+))$/ +SAFE_USERNAME = /^[a-z0-9_]+$/ +SAFE_VEID = /^[0-9]+$/ +SAFE_UID = /^[0-9]+$/ +SAFE_IP4 = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ -# Safe -SAFE_PASSWORD = /^([a-zA-Z0-9%!@$&*()^# ])+$/ -SAFE_EMAIL = /^(([a-zA-Z0-9_.]+?)@([a-zA-Z0-9_.]+))$/ -SAFE_USERNAME = /^[a-z0-9_]+$/ -SAFE_VEID = /^[0-9]+$/ -SAFE_UID = /^[0-9]+$/ -SAFE_IP4 = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ +SAFE_NETIF_NAME = /^[a-z0-9]+$/ -SAFE_NETWORK_INTERFACE_NAME = /^[a-z0-9]+$/ +# Strength contacts -# Strong def PASSWORD_IS_STRONG(password) # Not a Word diff --git a/script/ajaxterm_setup_files/username_for_ssh b/script/ajaxterm_setup_files/username_for_ssh index d612040..1dc4318 100755 --- a/script/ajaxterm_setup_files/username_for_ssh +++ b/script/ajaxterm_setup_files/username_for_ssh @@ -1,10 +1,6 @@ #!/usr/bin/env ruby -require 'open3' - -SCRIPT_PATH = File.dirname(File.expand_path(__FILE__)) - - +SSH = '/usr/bin/ssh' host = ARGV[0] raise 'Invalid Host' unless @@ -17,13 +13,13 @@ username = $stdin.gets.chomp if username =~ /^[0-9a-zA-Z_]+$/ - # TODO: Errors produced by ssh client must be displayed + # TODO: Errors produced by ssh client should be logged # "host" is singular for a reason known_host_file = "~/.ssh/#{host}_known_host" # -t is to force a pseudo-tty allocation - system("ssh -t -t -o UserKnownHostsFile=#{known_host_file} " + + system("#{SSH} -t -t -o UserKnownHostsFile=#{known_host_file} " + "#{username}@#{host}") else puts "ERROR: Illegal username" diff --git a/script/comet_setup b/script/comet_setup deleted file mode 100755 index 2e026a5..0000000 --- a/script/comet_setup +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env ruby - -SCRIPT_PATH = File.dirname(File.expand_path(__FILE__)) -require "#{SCRIPT_PATH}/../config/environment.rb" - - - -if ARGV[0] == 'start' - start -elsif ARGV[0] == 'stop' - stop -elsif ARGV[0] == 'restart' - start -end diff --git a/script/mwamko-destroy b/script/mwamko-destroy index 7357ede..472fdb5 100755 --- a/script/mwamko-destroy +++ b/script/mwamko-destroy @@ -64,7 +64,7 @@ class CiconiaDaemonizer < Daemon::Base def self.start raise 'no $VEID' if $VEID == nil - run_and_record("sudo vzctl destroy #{$VEID}") + run_and_record("vzctl destroy #{$VEID}") begin require "#{SCRIPT_DIR}/../lib/database_for_scripts" @@ -109,4 +109,4 @@ class CiconiaDaemonizer < Daemon::Base end -CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$VEID}") +CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$VEID}", 0) diff --git a/script/mwamko-fast-create b/script/mwamko-fast-create index 8e30929..5487500 100755 --- a/script/mwamko-fast-create +++ b/script/mwamko-fast-create @@ -1,7 +1,10 @@ #!/usr/bin/env ruby -SCRIPT_DIR = File.dirname(File.expand_path(__FILE__)) -SCRIPT_NAME = $0.split('/')[-1] +SCRIPT_DIR = File.dirname(File.expand_path(__FILE__)) +SCRIPT_NAME = $0.split('/')[-1] +SSH = '/usr/bin/ssh' +VZLIST = '/usr/sbin/vzlist' + if ARGV.size != 1 and ARGV[1] != '--kill-daemon' @@ -25,7 +28,7 @@ $VEID = ARGV[0].to_i if ARGV[1] != '--kill-daemon' # Check against vzlist - out = `vzlist -a --no-header -o veid,status` + out = `echo "#{VZLIST} -a --no-header -o veid,status" | #{SSH} -T hive` current_list = [] out.each do |line| @@ -47,7 +50,7 @@ if ARGV[1] != '--kill-daemon' current_buffer.delete(nil) if current_buffer.empty? - STDERR.print "No more VEs available in the buffer." + STDERR.puts "No more VEs available in the buffer." exit else $BUFFER_VEID = current_buffer.last @@ -68,16 +71,17 @@ class CiconiaDaemonizer < Daemon::Base raise 'no $BUFFER_VEID' if $BUFFER_VEID == nil run_and_record("echo \"" + + 'whoami;' + "mv /vz/private/#{$BUFFER_VEID} " + "/vz/private/#{$VEID};" + "mv /etc/vz/conf/#{$BUFFER_VEID}.conf " + "/etc/vz/conf/#{$VEID}.conf;" + - "\" | sudo ssh -T hive") + "\" | #{SSH} -T hive") begin require "#{SCRIPT_DIR}/../lib/database_for_scripts" rescue => msg - @@ruby_errors = "#{msg}\n#{caller.join("\n")}" + @@ruby_errors = "#{msg}\n#{caller.join("\n")}\n#{$!}" run_and_record("echo > /dev/null") end @@ -87,10 +91,8 @@ class CiconiaDaemonizer < Daemon::Base ve.status = 'stopped' ve.updated_on = Time.now ve.save! - rescue => detail - @@ruby_errors = - detail.message + "\n" - detail.backtrace.join("\n") + rescue => msg + @@ruby_errors = "#{msg}\n#{caller.join("\n")}\n#{$!}" run_and_record("echo > /dev/null") end @@ -123,7 +125,7 @@ end task_identifier = "#{SCRIPT_NAME} #{$VEID}" if ARGV[1] != '--kill-daemon' - CiconiaDaemonizer.daemonize(task_identifier) + CiconiaDaemonizer.daemonize(task_identifier, 0) exit end @@ -136,7 +138,7 @@ require "#{SCRIPT_DIR}/../lib/queue" q = Queue.new(SCRIPT_DIR, task_identifier) q.enter -CiconiaDaemonizer.daemonize(task_identifier) rescue nil +CiconiaDaemonizer.daemonize(task_identifier, 0) rescue nil # Figure out the next script in the queue # * If there is one then run it diff --git a/script/mwamko-slow-create b/script/mwamko-slow-create index 6743e55..6041415 100755 --- a/script/mwamko-slow-create +++ b/script/mwamko-slow-create @@ -2,6 +2,7 @@ SCRIPT_DIR = File.dirname(File.expand_path(__FILE__)) SCRIPT_NAME = $0.split('/')[-1] +SSH = '/usr/bin/ssh' require "#{SCRIPT_DIR}/../lib/ciconia_daemonizer" @@ -36,7 +37,7 @@ raise "unsafe $template #{$template.inspect}" unless if ARGV[2] != '--kill-daemon' # Check if template exists - cmd = "echo \"stat /vz/template/cache/#{$template}.tar.gz\" | ssh -T hive" + cmd = "echo \"stat /vz/template/cache/#{$template}.tar.gz\" | #{SSH} -T hive" pid, cmd_in, cmd_out, cmd_err = Open4::popen4(cmd) cmd_in.close @@ -62,7 +63,7 @@ if ARGV[2] != '--kill-daemon' $gaps = desired_list - current_list if $gaps == [] - puts "All #{$size} VEs were already created" + puts "#{$size} VE(s) were already created" exit end @@ -75,7 +76,7 @@ class CiconiaDaemonizer < Daemon::Base raise 'no $template' if $template == nil $gaps.each do |gap| - run_and_record("sudo vzctl create #{gap} --ostemplate #{$template}") + run_and_record("vzctl create #{gap} --ostemplate #{$template}") end if @@has_stderr @@ -92,6 +93,6 @@ class CiconiaDaemonizer < Daemon::Base end end -CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$size} #{$template}") +CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$size} #{$template}", 0) diff --git a/script/mwamko-start b/script/mwamko-start index c8c0f2b..905289c 100755 --- a/script/mwamko-start +++ b/script/mwamko-start @@ -3,6 +3,12 @@ SCRIPT_DIR = File.dirname(File.expand_path(__FILE__)) SCRIPT_NAME = $0.split('/')[-1] +SSH = '/usr/bin/ssh' # TODO: pipe to ssh istead of using + # the vzctl wrappers +VZLIST = '/usr/sbin/vzlist' +VZCTL = '/usr/sbin/vzctl' + + require "/etc/mwamko/available_ip_addresses.range" if ARGV.size != 1 and ARGV[1] != '--kill-daemon' @@ -25,7 +31,7 @@ $VEID = ARGV[0].to_i if ARGV[1] != '--kill-daemon' # Check against vzlist - out = `vzlist -a --no-header -o veid,status` + out = `#{VZLIST} -a --no-header -o veid,status` ve_found = false current_list = out.collect do |line| @@ -84,7 +90,7 @@ class CiconiaDaemonizer < Daemon::Base run_and_record("echo > /dev/null") end - run_and_record("sudo vzctl start #{$VEID}") + run_and_record("#{VZCTL} start #{$VEID}") # if !@@has_stderr and !@@has_rubyerr # begin @@ -95,7 +101,7 @@ class CiconiaDaemonizer < Daemon::Base # local_ips.collect { |lip| "--ipadd #{lip}" }.join(' ') # # unless ip_list.empty? -# run_and_record("sudo vzctl set #{$VEID} #{ip_list} --save") +# run_and_record("#{VZCTL} set #{$VEID} #{ip_list} --save") # end # rescue => detail # @@ruby_errors = @@ -113,7 +119,7 @@ class CiconiaDaemonizer < Daemon::Base # Wait for SSHD to come up loop do - if `sudo vzctl exec #{$VEID} "ps | grep sshd"`.empty? + if `#{VZCTL} exec #{$VEID} "ps | grep sshd"`.empty? sleep 2 else break @@ -175,7 +181,7 @@ end task_identifier = "#{SCRIPT_NAME} #{$VEID}" if ARGV[1] != '--kill-daemon' - CiconiaDaemonizer.daemonize(task_identifier) + CiconiaDaemonizer.daemonize(task_identifier, 0) exit end @@ -189,7 +195,7 @@ end ##q = Queue.new(SCRIPT_NAME, task_identifier) ##q.enter -##CiconiaDaemonizer.daemonize(task_identifier) rescue nil +##CiconiaDaemonizer.daemonize(task_identifier, 0) rescue nil # Figure out the next script in the queue # * If there is one then run it diff --git a/script/mwamko-stop b/script/mwamko-stop index 8a3a958..36261ed 100755 --- a/script/mwamko-stop +++ b/script/mwamko-stop @@ -65,8 +65,8 @@ class CiconiaDaemonizer < Daemon::Base raise 'no $VEID' if $VEID == nil - run_and_record("sudo vzctl set #{$VEID} --ipdel all --save") - run_and_record("sudo vzctl stop #{$VEID}") + run_and_record("vzctl set #{$VEID} --ipdel all --save") + run_and_record("vzctl stop #{$VEID}") begin require "#{SCRIPT_DIR}/../lib/database_for_scripts" @@ -116,4 +116,4 @@ class CiconiaDaemonizer < Daemon::Base end -CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$VEID}") \ No newline at end of file +CiconiaDaemonizer.daemonize("#{SCRIPT_NAME} #{$VEID}", 0) \ No newline at end of file -- 2.11.4.GIT