Sha256: f6fd327465763cebb54620ba7b3681fb15bd71f00d426abf1cffa83c8c85af3b

Contents?: true

Size: 1.15 KB

Versions: 12

Compression:

Stored size: 1.15 KB

Contents

# == AccountManager::PasswdExpect
#
# An AccountManager driver for the +passwd+ command found on Unix-like systems
# using the +expect+ program as a wrapper because the Ruby PTY implementation
# is unreliable.
class ::AutomateIt::AccountManager::PasswdExpect < ::AutomateIt::AccountManager::BaseDriver
  depends_on :programs => %w(passwd expect)

  def suitability(method, *args) # :nodoc:
    # Level must be higher than PasswdPTY
    return available? ? 9 : 0
  end

  # See AccountManager#passwd
  def passwd(user, password, opts={})
    _passwd_helper(user, password, opts) do |user, password, opts|
      log.silence(Logger::WARN) do
        interpreter.mktemp do |filename|
          # Script derived from /usr/share/doc/expect/examples/autopasswd
          interpreter.render(:text => <<-HERE, :to => filename)
set password "#{password}"
spawn passwd "#{user}"
expect "assword:"
sleep 0.1
send "$password\\r"
expect "assword:"
sleep 0.1
send "$password\\r"
expect eof
          HERE

          cmd = "expect #{filename} #{user} #{password}"
          cmd << " > /dev/null" if opts[:quiet]
          return(interpreter.sh cmd)
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
automateit-0.71030 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71031.1 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71031.2 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71101.1 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71102 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71103 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71101.2 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71031 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71101 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71104 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71111 lib/automateit/account_manager/passwd_expect.rb
automateit-0.71112 lib/automateit/account_manager/passwd_expect.rb