I have setup expect scripts to do this very thing. If you are on windows for the client, then you will need to install cygwin with expect. On linux, you just need to make sure the expect interpreter is installed. Here is a sample script that I used to transfer files from a windows box to a linux server using scp. It captures the password, then uses it to call scp multiple times for individual files. You could use sftp and wildcards to send multiple files, or even ftp, but I do not like ftp. Ftp sends passwords in the clear.
#!/usr/bin/expect --
# Prompt for the password and store it in $PASS
send_user "\n"
send_user "Password? "
stty -echo
expect_user -re "(.*)\n" {set PASS $expect_out(1,string)}
send_user "\n"
stty echo
# Set user name and parameters
# You can remove the above password entry and just set it here.
set user "username"
set server "server.com"
# set PASS "superSecret"
set timeout 30
set destDir "/home/user/www/htdocs/updates/"
set scp "/usr/bin/scp"
set file "/cygdrive/c/Workspace/Release/index.html"
puts "\rSending $file to $server\r"
spawn -noecho $scp $file $user@$server:$destDir
match_max 100000
expect "*?assword:*"
send -- "$PASS\r"
send -- "\r"
expect eof
set file "/cygdrive/c/Workspace/Release/test.cfg"
puts "\rSending $file to $server\r"
spawn -noecho $scp $file $user@$server:$destDir
match_max 100000
expect "*?assword:*"
send -- "$PASS\r"
send -- "\r"
expect eof