There is a distinct lack of simple, ad-hoc file sharing mechanisms for one-off file transfers between platforms. Maintaining an ftp or http server securely and grant users access to files is cumbersome. An ssh guest account opens more than you’d like, and still requires you to somehow grant access to a certain file to a user and then close it. IRC requires that the file is on the box you run the client on (which is often not your local box), and MSN requires that you add people to your contact list, assuming you don’t use it through bitlbee anyways.
Here is a little script I have lying around, I call it wwwshare:
#!/bin/bash die() { echo "$*" >&2; exit 1; } [[ $# != 0 ]] || die "Usage: $0 filename" [[ -f $1 ]] || die "No such file: $1" file="$1" ip=$(curl -s 'http://checkip.dyndns.com/' | sed 's/.* \([0-9.]*\).*/\1/') port=$((8000 + RANDOM%1000)) echo "http://$ip:$port/$file" cat - "$file" << EOF | nc -l -p $port -q 0 HTTP/1.1 200 Ok Content-Type: application/octet-stream Content-Length: $(stat -c %s "$file") EOF
Just run wwwshare filename
, and it’ll print an URL and start a wannabe http server on a random port (8000-9000) for a single session. When the file is downloaded, it exits. No setup or cleanup required.
Markup engine screwed up ” and ‘
@ Voker57
Eek! Should be fixed now, thanks.
Great function. I adapted it in my .bash_profile so I can use it both on linux and my osx (bsd) but for LAN sharing. Can post the code if interested.
Great Idea!
I made a gnu awk port (for the lol, you know):
http://pgas.freeshell.org/shell/wwwshare
Great script!
I just added a line using xclip to copy the url to the clipboard, and I replaced
Content-Type: application/octet-stream
by
Content-Type: $(file –brief –mime “$file”)
which seems to help the browser.
@Flupp
Very convenient additions!