david@wubios.wustl.edu (David J. Camp) (08/31/89)
Since I originally sent this inquiry, I have determined that the problem is with piping a file to ftp. I compiled the ftp from the tahoe collection, and that does the same thing. I have changed my script to generate a temporary file and ftp that, but it would be nice if this problem could be fixed. -David- Bitnet: david@wubios.wustl ^ Mr. David J. Camp Internet: david%wubios@wucs1.wustl.edu < * > Box 8067, Biostatistics uucp: uunet!wucs1!wubios!david v 660 South Euclid Washington University (314) 36-23635 Saint Louis, MO 63110 From spots@rice.edu Wed Aug 30 11:59:31 1989 Received: from rice.edu by wubios.WUstl.EDU (4.0/Sun UNIX 4.0); Wed, 30 Aug 89 11:59:25 CDT Received: from titan.rice.edu by rice.edu (AA24777); Wed, 30 Aug 89 11:52:07 CDT Received: from eos.rice.edu.0 by titan.rice.edu (AA22622); Wed, 30 Aug 89 11:52:09 CDT Date: Wed, 30 Aug 89 11:52:09 CDT From: Sun-Spots Digest <spots@rice.edu> Message-Id: <8908301652.AA22622@titan.rice.edu> To: david@wubios Subject: sun-spots submission Status: OR i received your sun-spots submission (listed below) - but since it is not SUN specific - it does not belong in the sun-spots digest.. vicky __________________________________________________ ------------------------------ Subject: ftp from pipe broken Date: Fri, 25 Aug 89 5:39:04 CDT From: david@wubios.wustl.edu (David J. Camp) I am trying to write a shell script that will accept a file on the stdin, and ftp it to a file on a remote host. It requires that the username and password be specified in the .netrc file. The necessary ftp commands are written to a temporary file, and combined with the stdin by cat. I find that when I am transferring a certain 1.6MB binary file, the transfer aborts prematurely, and it attempts to read the rest of the file as ftp commands. This of course gives me a series of ?Invalid command messages, and the resulting file is corrupt. Any help would be appreciated. -David- ----- start of fileput ----- #! /bin/csh set host=$1 set file=$2 set mode=$3 set extra=$4 if ("$file" == "" || "$extra" != "") then echo usage\: ftpput host file \[mode\] \< local-file echo place an entry in \~/.netrc like this: echo echo machine HOST-NAME login USER-NAME password PASSWORD echo echo for each host with which you need to communicate echo and type \'chmod 600 \~/.netrc\' echo the mode can be ascii binary or tenex, ascii is the default exit 2 endif set MKSTEMP=`mkstemp /tmp/pt` echo open $host >> $MKSTEMP echo $mode >> $MKSTEMP echo put - $file >> $MKSTEMP /usr/bin/cat $MKSTEMP - | /usr/local/bin/ftp -vd /bin/rm -f $MKSTEMP ----- start of mkstemp.c ----- /* mktemp.c -- program to generate a unique file name */ #include <stdio.h> #include <string.h> char * mktemp (); main (argc, argv) int argc; char * argv []; { char filename [256]; if (argc != 2) { fprintf (stderr, "usage: mktemp prefix\n"); fprintf (stderr, "returns to stdout a unique file from the "); fprintf (stderr, "template: prefixXXXXXX\n"); exit (2); } strcpy (filename, argv [1]); strcat (filename, "XXXXXX"); mkstemp (filename); fprintf (stdout, filename); exit (0); } -- Bitnet: david@wubios.wustl ^ Mr. David J. Camp Internet: david%wubios@wucs1.wustl.edu < * > Box 8067, Biostatistics uucp: uunet!wucs1!wubios!david v 660 South Euclid Washington University (314) 36-23635 Saint Louis, MO 63110