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
- 20,486
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
- 126
-
+1 for the -p flag to read, which I forgot about. Nice solution – Matt Simmons May 29 '09 at 01:21
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.
- 2,752
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/ )
- 29
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.
- 2,844