Msg#: 3517328 posted 5:26 pm on Nov 30, 2007 (gmt 0)
I'm trying to automate the ftp-backup process on our mysql database box using cron and a shell script. For the purposes of testing theories I've given the script (/home/ftpscript.sh) 777 permissions. I can execute it as a logged in user with no problems and it performs its function perfectly every time, however I am unable to get it to run as a cron job.
The machine is running Fedora Core 5. When I use webmin to run the cron job manually (so I can get the output) I get the following:
ftp: u: unknown option
The cron is:
15 1 * * * bash /home/ftpscript.sh
so it will run at 1:15 every morning.
The content of ftpscript.sh are as follows (modified of course, #'s are the IP, adminuser and adminpassword are placeholders for the real user and pass):
#!/bin/sh cd /home/mysql-backups/ ftp -u ###.###.###.### <<! quote user adminuser quote pass adminpassword binary cd /web/mysql-backups/ put backupfile.sql put backupfile2.sql quit !
What it seems like, is that I need to have the full path of ftp as it's defaulting to the copy at /usr/bin/ftp. When I log into the shell and run ftp -u [IP address] it works just fine, but if I run /usr/bin/ftp -u [IP address] I get the same erorr as is reported in the cron (ftp: u: unknown option). Any help on this would be greatly appreciated!
Msg#: 3517328 posted 9:19 pm on Nov 30, 2007 (gmt 0)
In the cron editor I selected to run the job as root. When logged in as root, "ftp -u [IP]" works from the shell.
Just to be sure though, I created a new cron job and selected to run it as root as well. The new cron command was just "whoami" and the output was "root" so I know that the user selection function works at least.
Thanks for your help so far, I really appreciate it!
Msg#: 3517328 posted 12:53 am on Dec 1, 2007 (gmt 0)
It *appears*, at least, that you only have one copy of "ftp" on your machine. So, looking at paths is not going to get you anywhere.
To be sure, first make sure your whereis database is up-to-date:
Then run the "whereis" again.
If you still only find one copy, the only thing I can think of is a command alias. Check your .profile, etc.
A good time to inject a bit of finger-wagging: if this is going over the Internet, remember that FTP is insecure. You are much better off using sftp. Then you can also set-up a public-private keypair, and you won't have to stick a password in the script.