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?

5 Answers 5

7

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

echo -n "username:"
read USERNM

scp $USERNM@whatever

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
1
  • +1 for the -p flag to read, which I forgot about. Nice solution May 29, 2009 at 1:21
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.

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .