I'm calling scp from a script and want it to prompt the user running the script for their password. How do I do that?
5 Answers
Write the prompt first, read the variable, then use the variable to connect with scp
echo -n "username:"
read USERNM
scp $USERNM@whatever
In addition to Matt Simmons,
read -p "Username: " USERNM
prompts before reading
read -s -p"Password: " PASS
would read a password, ALTHOUGH, you're not able to pass that to SCP, so it's probably not useful!
Also, put
echo
after your read so that it puts a new line
eg:
read -p "Username: " USERNM; echo
read -p "Username:" USER
scp -l $USER -oPubkeyAuthentication=no
...I think.
If not it will be one of the ssh/scp -o options to force password entry and not use public keys.
an alternative approach, in case you need more sophisticated handling of the interactive app you are spawning, is to use Expect ( http //expect.nist.gov/ )
Scp will only ask for a password if it needs one (ie no public key auth available) and thinks it's running in an interactive session. If there's a working public key available this question is moot, so you just need to make sure scp knows it's running in an interactive session. If the user directly runs a script from their shell which directly runs scp
, they should be fine.