module Specinfra::Command::Module::Ss
Public Instance Methods
check_is_listening(port, options={})
click to toggle source
# File lib/specinfra/command/module/ss.rb, line 5 def check_is_listening(port, options={}) pattern = ":#{port} " pattern = " #{inaddr_any_to_asterisk(options[:local_address])}#{pattern}" if options[:local_address] "ss #{command_options(options[:protocol])} | grep -- #{escape(pattern)}" end
Private Instance Methods
command_options(protocol)
click to toggle source
# File lib/specinfra/command/module/ss.rb, line 25 def command_options(protocol) case protocol.to_s when 'tcp' then "-tnl4" when 'tcp6' then "-tnl6" when 'udp' then "-unl4" when 'udp6' then "-unl6" when '' then "-tunl" else raise ArgumentError, "Unknown protocol [#{protocol}]" end end
inaddr_any_to_asterisk(local_address)
click to toggle source
WORKAROUND:
ss displays "*" instead of "0.0.0.0". But serverspec validates IP address by `valid_ip_address?` method: https://github.com/serverspec/serverspec/blob/master/lib/serverspec/type/port.rb
# File lib/specinfra/command/module/ss.rb, line 17 def inaddr_any_to_asterisk(local_address) if local_address == '0.0.0.0' '*' else local_address end end