Date: Tue, 16 Dec 2003 12:59:03 -0600 From: "Micheal Patterson" <micheal@tsgincorporated.com> To: <questions@freebsd.org> Subject: Re: fetch / wget problem Message-ID: <061701c3c406$ad39cc80$4df24243@tsgincorporated.com> References: <200312161838.hBGIcTLe005322@lv.raad.tartu.ee>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message ----- From: "Toomas Aas" <toomas.aas@raad.tartu.ee> To: <questions@freebsd.org> Sent: Tuesday, December 16, 2003 12:38 PM Subject: fetch / wget problem > Hi! > > I'm trying to write a script which gets a file from remote FTP server. > > The FTP username contains dots and this cannot be changed. > > There are two firewalls involved, one running on the same server where > I'm doing this (ipfilter, using ipnat ftp proxy) and one between this > server and the FTP server. The FTP server itself is in internal network > using RFC1918 addresses and a port in firewall is being forwarded to > this server. > > I think that firewalls are configured correctly, because I can > successfully get the file manually, using the 'ftp' command. > > However, when I try this command: > > fetch ftp://user.name:password@server.mydomain.com/directory/file.ext > > I get an error message: > fetch: ftp://user.name:password@server.mydomain.com/directory/file.ext: > Host not found. > > I suspect that fetch, seeing a dot in username, attempts to 'resolve' > the entire URL, instead of just the part after @. Is there a known > workaround to this? > > I also tried wget, which succeeds to connect, but then, no matter what > I do, insists on using passive mode. > > wget ftp://user.name:password@server.mydomain.com/directory/file.ext > Connecting to server.mydomain.com[12.34.56.78]:2100... connected. > Logging in as user.name ... Logged in! > ==> SYST ... done. ==> PWD ... done. > ==> TYPE I ... done. ==> CWD /directory ... done. > ==> PASV ... > and then the process just hangs. > > I suspect it would work if I could somehow tell wget to NOT use passive > mode. I initially had FTP_PASSIVE_MODE environment variable set, but > removing this didn't affect wget's behaviour. > > Any ideas? > -- > Toomas Aas | toomas.aas@raad.tartu.ee | http://www.raad.tartu.ee/~toomas/ > * RUNTIME ERROR 6D at 417A:32CF : Incompetent user > You may be able to do this with a .netrc in the user folder that's running the script. In .netrc, you'll have: machine <ftp server name> login <loginname> password <password> Then you can script it with the exact commands that you'd use to get the file if you did it manually. For example, if you wanted /etc/test.sh and you wanted to store it in /root/down and the remote site was ftp.foo.com you'd do: Contents of .netrc --- machine ftp.foo.com login joe.user pass password --- Then, in your script, let's say autofetch.sh you'd have: #!/bin/sh ftp << EOF open ftp.foo.com cd /etc/ lcd /root/down ascii get test.sh bye EOF ----------- Now, you've got a scripted ftp session from within FreeBSD. As long as the servernames in the script and .netrc match, ftp will use the info from .netrc to make the connection. Of course, you'd want to make certain that the .netrc file is NOT world readable. Perhaps not even group readable if there are other users of the system. Hope it helps. -- Micheal Patterson TSG Network Administration 405-917-0600 Confidentiality Notice: This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?061701c3c406$ad39cc80$4df24243>