I've been trying to get a PHP script to SFTP upload a file, but failed. I tried asking my question on stackoverflow.com but haven't received a working solution:

http://stackoverflow.com/questions/1767117/how-to-sftp-upload-files-from-php

So now I want to try a different approach. Is there a way to write a shell script that can issue several commands to sftp upload a file to another server? If I were to issue commands one by one from terminal, it would look like:

>sftp user@server.com
>password: mypassword
>put file.csv

I tried putting these three lines into a ./automaticupload file. When I executed the file, but the terminal shows me:

user@server.com's password:

even though I typed in the password line in automaticupload.

I am unable to create a passwordless ssh/scp/sftp account. The remote server.com does not give me ssh or scp access.

What should I do?

link|improve this question

feedback

3 Answers

If you want to use sftp from a script you need to setup passwordless SSH keys with ssh-keygen(1) or use sshpass

My vote would nearly always be for the former, but it can depend on the situation which is more appropiate.

link|improve this answer
I don't have privileges to set up either of those options. The remote server belongs to a company that deals with financial transactions, so they're limiting my access to only sftp uploads. – John Nov 19 '09 at 23:54
and forcing me to supply username and password each time – John Nov 19 '09 at 23:55
so you've tried uploading your public key in the appropriate place with the correct permissions and it ignored them? – Nerdling Nov 20 '09 at 1:37
yeah, it says permission denied when i try to enter the .ssh directory – John Nov 25 '09 at 6:14
feedback

Install and use expect, it's designed for exactly this kind of situation.

Use the autoexpect script to generate an expect script from a recorded live session. Depending on the distribution, autoexpect is either included in the main expect package, or (strangely) in expect-dev on Ubuntu.

link|improve this answer
feedback

Try the freeware client lftp, available from

http://lftp.yar.ru

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.