Sha256: 0b555ef5cbe9a254d5bd0ca121e4b8ae7e96c5238602aa792da2f42ef3762f5f

Contents?: true

Size: 1.92 KB

Versions: 11

Compression:

Stored size: 1.92 KB

Contents

require 'shellwords'

module Serverspec
  module Commands
    class Linux < Base
      def check_access_by_user(file, user, access)
        "su -s /bin/sh -c \"test -#{access} #{file}\" #{user}"
      end

      def check_iptables_rule(rule, table=nil, chain=nil)
        cmd = "iptables"
        cmd += " -t #{escape(table)}" if table
        cmd += " -S"
        cmd += " #{escape(chain)}" if chain
        cmd += " | grep -- #{escape(rule)}"
        cmd
      end

      def check_selinux(mode)
        cmd =  ""
        cmd += "test ! -f /etc/selinux/config || (" if mode == "disabled"
        cmd += "getenforce | grep -i -- #{escape(mode)} "
        cmd += "&& grep -i -- ^SELINUX=#{escape(mode)}$ /etc/selinux/config"
        cmd += ")" if mode == "disabled"
        cmd
      end

      def check_kernel_module_loaded(name)
        "lsmod | grep ^#{name}"
      end

      def get_interface_speed_of(name)
        "ethtool #{name} | grep Speed | gawk '{print gensub(/Speed: ([0-9]+)Mb\\\/s/,\"\\\\1\",\"\")}'"
      end

      def check_ipv4_address(interface, ip_address)
        ip_address = ip_address.dup
        if ip_address =~ /\/\d+$/
          ip_address << " "
        else
          ip_address << "/"
        end
        ip_address.gsub!(".", "\\.")
        "ip addr show #{interface} | grep 'inet #{ip_address}'"
      end
      
      def check_zfs(zfs, property=nil)
        if property.nil?
          "zfs list -H #{escape(zfs)}"
        else
          commands = []
          property.sort.each do |key, value|
            regexp = "^#{value}$"
            commands << "zfs list -H -o #{escape(key)} #{escape(zfs)} | grep -- #{escape(regexp)}"
          end
          commands.join(' && ')
        end
      end

      def check_container(container)
        "lxc-ls -1 | grep -w #{escape(container)}"
      end

      def check_container_running(container)
        "lxc-info -n #{escape(container)} -t RUNNING"
      end

    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
serverspec-0.12.0 lib/serverspec/commands/linux.rb
serverspec-0.11.5 lib/serverspec/commands/linux.rb
serverspec-0.11.4 lib/serverspec/commands/linux.rb
serverspec-0.11.3 lib/serverspec/commands/linux.rb
serverspec-0.11.2 lib/serverspec/commands/linux.rb
serverspec-0.11.1 lib/serverspec/commands/linux.rb
serverspec-0.11.0 lib/serverspec/commands/linux.rb
serverspec-0.10.13 lib/serverspec/commands/linux.rb
serverspec-0.10.12 lib/serverspec/commands/linux.rb
serverspec-0.10.11 lib/serverspec/commands/linux.rb
serverspec-0.10.10 lib/serverspec/commands/linux.rb