Passing a Password to "Su" Command Over Sshexec from Ant

How to pass the password to su/sudo/ssh without overriding the TTY?

For sudo there is a -S option for accepting the password from standard input. Here is the man entry:

    -S          The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device.

This will allow you to run a command like:

echo myPassword | sudo -S ls /tmp

As for ssh, I have made many attempts to automate/script it's usage with no success. There doesn't seem to be any build-in way to pass the password into the command without prompting. As others have mentioned, the "expect" utility seems like it is aimed at addressing this dilemma but ultimately, setting up the correct private-key authorization is the correct way to go when attempting to automate this.

Ant sshexec task unable to execute remote script file separate from session

Never mind, I found it. Still need to combine nohup and background running with the startup script. Plus the "dirty workaround" from here
https://unix.stackexchange.com/questions/91065/nohup-sudo-does-not-prompt-for-passwd-and-does-nothing (was actually brilliant)

End result:

echo password | sudo -S env && sudo sh -c 'nohup startup.sh > /dev/null 2>&1 &'

Ant exec task as another user

You could use the sshsexec task. Connect locally or to a remote machine:

<sshexec host="localhost"
username="dude"
password="yo"
command="touch somefile"/>

This task will require the optional jsch.jar to be installed in your ANT lib.

Specifying a pirvate key would enable a password-less login.



Related Topics



Leave a reply



Submit