Basically what sshkit-sudo gem promises, but:
- 1 hack instead of multiple layers
- obvious how to debug
- 1 global password
- does not capture the password prompt
- does not print the output when capturing
- works when not using SshKit::DSL
Hint: You might want to start with an extra “puts data” to see how your password prompt looks like.
SSHKit::Command.prepend(Module.new do def on_stdout(channel, data) if data.include? "[sudo] password for " @@password ||= `echo password: 1>&2 && read -s PASSWORD && printf \"$PASSWORD\"` channel.send_data(@@password + "\n") else super end end end) on servers do capture :sudo, "ls" end