I have an expect script that connects to a few routers through ssh. All these routers have the same password (I know, it's wrong), and the script needs to know that password in order to be able to connect to the routers. Currently, the password is passed to my script as an argument on the command line, but this means that there's a trace of that password in my .bash_history file as well as in the running processes. So instead I would like the user to be prompted for a password, if possible silently.
Do you know whether or not it's possible to prompt the user for a password with expect?
Thank you.
Edit: if I was connecting to servers instead of routers, I would probably use ssh keys instead of passwords. But the routers I'm using just support passwords.
Best Solution
Use expect's
stty
command like this:Note that it's important to call
stty -echo
before callingsend_user
-- I'm not sure exactly why: I think it's a timing issue.expect programmers should all read the book: Exploring Expect by Don Libes