Home > Tips, Unix, Техноблог > hint [9] swiss army knife

hint [9] swiss army knife

December 22nd, 2006 Leave a comment Go to comments

Еще один очень простой способ передавать файлы между компьютерами:
на сервере
nc -l -p 8080 < file
на клиенте достаточно в браузере набрать http://192.168.0.123:8080
Собственно, все. Вообще, теоретически, работать это не должно, т.к. нет заголовков сервера - Status, Content-type и проч. Но работает, это факт.
Впрочем, чтобы никто не смог сказать, что в юниках в командной строке нельзя сделать HTTP сервер, вот полная реализация:
(echo -e "HTTP/1.1 200\nContent-Disposition: attachment; filename=gena_na.png\nContent-Type: application/octet-stream\nConnection: close\n"; cat mrxvt_screen2.png) | nc -vv -l -p 8080
(набирать это каждый раз утомительно, но ничто не мешает сделать скрипт)

Categories: Tips, Unix, Техноблог Tags:
  1. November 21st, 2010 at 16:07 | #1

    У меня не работает((

    booch@alexlinux:~$ nc -l -p 8080 < file
    usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port]
    [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]
    [-x proxy_address[:port]] [hostname] [port[s]]

    booch@alexlinux:~$ echo -e "HTTP/1.1 200\nContent-Disposition: attachment; filename=gena_na.png\nContent-Type: application/octet-stream\nConnection: close\n"; cat mrxvt_screen2.png) | nc -vv -l -p 8080
    bash: ошибка синтаксиса около неожиданной лексемы `)'

    Я юзаю Убунту, там dash, но по идеи должно работать.

  2. Alexey Sveshnikov
    November 21st, 2010 at 20:00 | #2

    Советы малось устарели :)

    1. В свежих ubuntu поменялся netcat (с ветки traditional на openbsd), и там опция -p стала не нужна, т.е. nc -l 8080 < file.

    2. У меня под рукой несколько версий убунты (10.10, 10.04), и там эта строка работает, тоже после того, как убрать опцию -p.

    Я, кстати, для быстрой раздачи файлов по сети до сих пор использую маленький HTTP-сервер на bash: http://alexey.sveshnikov.ru/blog/2007/08/30/bash-httpd-2, его я поддерживю в актуальном состоянии, т.е. он работает в новых убунту.