sBahman
asked on
Automatically ftp from unix to windows
Can sommeone tell me how can i automatically ftp from unix session to windows machine. i write manually
ftp "win name"
Please inter your name: "user_name"
user name okay, Need password.
Password: "password"
user logged in.
ftp>
ftp "win name"
Please inter your name: "user_name"
user name okay, Need password.
Password: "password"
user logged in.
ftp>
Am not sure if this is what is expected.
Can be acheived by writing a script something like below
ftp ${MACHINE_NAME} << [[
ascii
cd ${SRC_DIR}
lcd ${DES_DIR}
get ${filename}
bye
[[
Can be acheived by writing a script something like below
ftp ${MACHINE_NAME} << [[
ascii
cd ${SRC_DIR}
lcd ${DES_DIR}
get ${filename}
bye
[[
Hi sBahman,
You can define host,user and password entries in the .netrc file. Check the netrc man page:
machine ray login demo password mypassword macdef init
lcd <local dir>
cd <remote dir>
put ...
Make sure your .netrc is not readable by other users:
chmod og-rwx ~/.netrc
Cheers,
Stefan
You can define host,user and password entries in the .netrc file. Check the netrc man page:
machine ray login demo password mypassword macdef init
lcd <local dir>
cd <remote dir>
put ...
Make sure your .netrc is not readable by other users:
chmod og-rwx ~/.netrc
Cheers,
Stefan
ASKER
i create a .netrc file but this one give me a error
Macro definition missing null line terminator.
221 Goodbye. Control connection closed.
Macro definition missing null line terminator.
221 Goodbye. Control connection closed.
ASKER
now working!. But i don't undrestand how can i do it remotly i need to say
lcd "lname"
cd "rname"
put "fname"
lcd "lname"
cd "rname"
put "fname"
Example:
ftp -nv << EOF
open 192.168.10
user niceguy yourpasswd
bin
cd /tmp
put testfile.tmp
bye
EOF
Mark
sBahman,
> Macro definition missing null line terminator.
That's an empty line.
> i don't undrestand how can i do it remotly i need to say
Normally, the .netrc driven FTP jobs are only for very simple tasks. If you really want to, you could write a Perl script which sets up the .netrc, starts the FTP and restores the old .netrc.
You'd be better off with a more sophisticated FTP client, such as ncftp (but sometimes system restrictions don't allow it):
http://www.ncftp.com/
Stefan
> Macro definition missing null line terminator.
That's an empty line.
> i don't undrestand how can i do it remotly i need to say
Normally, the .netrc driven FTP jobs are only for very simple tasks. If you really want to, you could write a Perl script which sets up the .netrc, starts the FTP and restores the old .netrc.
You'd be better off with a more sophisticated FTP client, such as ncftp (but sometimes system restrictions don't allow it):
http://www.ncftp.com/
Stefan
mdhmi,
> user niceguy yourpasswd
That's the pain... cleartext passwords are not good. It's too easy to forget using chmod 700 on your script.
In case you are even moderately sensitive to security issues, consider using SSH (scp/sftp) with public key authentication instead of FTP.
Stefan
> user niceguy yourpasswd
That's the pain... cleartext passwords are not good. It's too easy to forget using chmod 700 on your script.
In case you are even moderately sensitive to security issues, consider using SSH (scp/sftp) with public key authentication instead of FTP.
Stefan
Just wanted to stress that if the permissions are not set correctly on .netrc, automatic ftp will not work.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
If you are using the .netrc file you will need to add the following lines in it.
Assuming you know "vi".
machine <IP address or DNS name>
login <you login id for the server your ftping to>
password <the password for the above id>
macdef <some_name_anything>
put <the_filename_you_want_to_ ftp>
quit
Now that is all the .netrc needs to ftp to another server.
BTW the "<" and ">" are not in the code.
Now the tricky stuff to run the ftp.
You need to make up another script and in it you'll have the following:
echo "\$ <some_name_anything>" | ftp -v <IP address or DNS name>
Make sure you use the quotes.
You can set up the script to run in cronjob or at job at a certain time each day. In addition you can send the out put to a log file and check for a successful transmission.
Doing it via the .netrc you can send to multiple servers and have multiple macdefs, all automatically no manual intervention.
Assuming you know "vi".
machine <IP address or DNS name>
login <you login id for the server your ftping to>
password <the password for the above id>
macdef <some_name_anything>
put <the_filename_you_want_to_
quit
Now that is all the .netrc needs to ftp to another server.
BTW the "<" and ">" are not in the code.
Now the tricky stuff to run the ftp.
You need to make up another script and in it you'll have the following:
echo "\$ <some_name_anything>" | ftp -v <IP address or DNS name>
Make sure you use the quotes.
You can set up the script to run in cronjob or at job at a certain time each day. In addition you can send the out put to a log file and check for a successful transmission.
Doing it via the .netrc you can send to multiple servers and have multiple macdefs, all automatically no manual intervention.
ASKER
Thanks
curl -user-name:password ftp://ftp.server/file_you_want_to_get
Regards
Friedrich