mdixon@parc.xerox.com (Mike Dixon) (06/21/91)
here's a little hack i use to make slip file transfers as easy as possible. i put this csh script on the machine i log into at work, with the name of my home machine ('sarah'). then, when logged in over the slip connection, i can say things like sarah get foo >foo (move a file from home to work) sarah print -2r <foo (print a file from work at home) sarah get foo.ps | lpr (print a ps file from home at work) the script compresses things at one end and decompresses them at the other to make the transfers as quick as possible. there is also a general 'do' command, which is like rsh but compresses the input stream (and should also compress the output stream, i suppose). there's also getu, putu, and dou, which disable the compression (for files that are already compressed), but they're not doing anything you couldn't do just as easily with rcp and rsh. the script refers to the machine it's run on as 'local', and the machine it's connecting to as 'remote', but since you're actually sitting at the 'remote' machine that could be a little confusing. also, since i log in through an annex box my home machine doesn't have a consistent network address; this script uses an environment variable ('host') as the name of the remote machine (i set this up in my cshrc file). the first few lines just check that this variable is set to something reasonable before proceeding. ------------------------------------------------------------ #!/bin/csh -f set remote=$0 set remote=$remote:t if (! $?host) set host=unknown if ($host !~ termport*) then echo "I don't know where $remote is." exit 1 endif if ($#argv > 0) then switch ($1) case put: if ($#argv != 2) then echo "syntax: $remote put $remote-file-name <local-file-file" exit 1 endif compress | rsh $host "uncompress >$2" exit case putu: if ($#argv != 2) then echo "syntax: $remote putu $remote-file-name <local-file-file" exit 1 endif rsh $host "cat >$2" exit case print: compress | rsh $host "uncompress | enscript $argv[2-]" exit case do: if ($#argv == 1) then echo "syntax: $remote do arbitrary-command ... exit 1 endif compress | rsh $host "uncompress | $argv[2-]" exit case dou: if ($#argv == 1) then echo "syntax: $remote dou arbitrary-command ... exit 1 endif rsh $host "$argv[2-]" exit case get: if ($#argv != 2) then echo "syntax: $remote get $remote-file-name >local-file-file" exit 1 endif rsh $host "compress <$2" | uncompress exit case getu: if ($#argv != 2) then echo "syntax: $remote getu $remote-file-name <local-file-file" exit 1 endif rsh $host "cat $2" exit endsw endif echo "options:\ $remote put $remote-file-name <local-file-file\ $remote get $remote-file-name >local-file-name\ $remote do <local-file-name\ $remote print [options...] <local-file-name\ (e.g. $remote print -2r <my_file)\ (also, putu, getu, and dou can be used to disable compressed transfers)" exit 1 ------------------------------------------------------------ -- .mike.