3

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?

twk
  • 135

5 Answers5

7

Write the prompt first, read the variable, then use the variable to connect with scp

echo -n "username:"
read USERNM

scp $USERNM@whatever

Matt Simmons
  • 20,486
5

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
user4767
  • 126
1
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.

Jason Tan
  • 2,752
0

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/ )

0

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.

Alex J
  • 2,844