I have finally written this code, but the prob with this is that when it is prompting for password it doesnt send any password to the ftp machine, we have to do it manually, but after typing it manually, it take the password line as command and shows that that is invalid command.
please tell me a way to pass the password automatically
Shell Scripting Syntax (Toggle Plain Text)

Password=`awk '$1 ~ /password/ { print $3 }' $CONFIG_FILE`
echo $Password
if [ ! -r $CONFIG_FILE ]
echo "File not readable";exit0;

ftp -i `awk '$1 ~ /server_IP/ { print $3 }' $CONFIG_FILE` <<END
`awk '$1 ~ /user/ { print $3 }' $CONFIG_FILE`
`awk '$1 ~ /password/ { print $3 }' $CONFIG_FILE`
`awk '$1 ~ /file_mode/ { print $3 }' $CONFIG_FILE`
cd `awk '$1 ~ /file_path/ { print $3 }' $CONFIG_FILE`
get `awk '$1 ~ /file_name/ { print $3 }' $CONFIG_FILE`

the config file is as
(Toggle Plain Text)

server_IP =
user = scpyogesh
password = scpyogesh
file_mode = binary
file_path = sample/test/
file_name = test_ftp.txt

If you look at the man pages for ftp it states that you add the account parameter to the command line followed by the password for the account. To look at the manula pages use:

man ftp

from a shell prompt.

The ftp command is not designed for use in scripts; it is intended for interactive use. For scripting, use the ncftp family of commands. (There are also some others, I believe, that are made for scripting.)


I hate to disagree with someone on a response but ftp works fine is shell scripts. Typical ftp client programs under Unix, Linux, Solaris and NetBSD all read the ftp password from /dev/tty (or /dev/pty). The following site has a discussion of the issues involved and a script that does what you want.


Edited 5 Years Ago by rch1231: Forgot URL

I tried all that mentioned in the page. but it is still not taking the password. as in it just stucks to the point of username. it says the user name is ok but it keeps on blinking for the password. but is not able to pass the password .

This question has already been answered. Start a new discussion instead.