internetTablet

Nokia N810 / N800 / 770 rss


11
Sep
2007

Быстрая расшарка файлов с таблетки через http сервер в одну строку на bash

by dik

Благодаря Alexey Sveshnikov и jetxee а также волшебной сетевой утилите netcat, которая вследствие простоты и универсальности заслужила звание “щвейцарский армейский нож” мы имеем возможность быстрого созданий http сервера для раздачи файлов. При запуске скрипта, который умещается во всего одну строку bash, мы получаем лёгкий http сервер с листингом файлов той директории из которой он был запущен. Вот сам код :

true; while [ $? -eq 0 ];do nc -vlp 8080 -c'(r=read;e=echo;$r a b c;E=NOTYET;while [ ${#E} -gt 0 ];do $r E;E=`$e $E|tr -d "\r\n"`;done;f=`$e $b|sed 's/[^a-z0-9_.-]//gi'`;h="HTTP/1.0";o="$h 200 OK\r\n";c="Content";if [ -z $f ];then($e -e $o;ls|(while $r n;do if test -f ${n}; then $e "<a href=\"/$n\">$n</a><br>";fi;done););elif [ -f $f ];then $e -e "$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`\n";cat $f;else $e -e "$h 404 Not Found\n\n404\n";fi)';done

Что необходимо ?
Устанавливаем netcat :
#apt-get -f install netcat
Качаем скрипт http.sh
Тот же самый скрипт с одной единственной правкой - из команды sed я убрал опцию i (независимость от регистра символов)
sed ’s/[^a-z0-9_.-]//g’
Размещаем его на таблетке в каталоге исполняемых файлов, /usr/bin/
Даём права на выполнение :
#chmod +x /usr/bin/http.sh
Затем, если нам необходимо, заходим в директорию которую необходимо расшарить и даём в ней команду
$http.sh

По ip адресу нашей таблетки и порту 8080 можем наблюдать в браузере листинг файлов, например http://192.168.1.10:8080/
вырубить - по Ctrl+C

А netcat на таблетке пригодится ещё и для проигрывания видео по сети. И для много много чего ещё.

P.S. Если ребята-создатели умеют так же забористо и метко ругаться матом на одном дыхании, как пишут на bash, такие нигде не пропадут :)

Tags: , , , , , , , , , ,

Related posts

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.

15 Responses to “Быстрая расшарка файлов с таблетки через http сервер в одну строку на bash”

  1. Ed Says:

    Затея интересная, но на таблетке это не будет работать как минимум по 3м причинам:
    1. Нет баша, а в скрипте есть башизмы
    2. Нет stat
    Nokia-N800-26:~# stat
    -sh: stat: not found
    3. Таблеточный sed(он же busybox) не понимает опцию i
    Nokia-N800-26:~# echo ‘test’ | sed ’s/[^a-z0-9_.-]//gi’
    sed: bad option in substitution expression

  2. dik Says:

    Ed : я же писал что убрал опцию i.

    И всё тестировано - работает. Я эту статью писал после того как у себя попробовал. Может не на сто процентов как надо, но - функцию выполняет.

  3. Ed Says:

    Да, согласен, недосмотрел. stat тоже можно убрать, все равно его нет на устройстве.

  4. Ed Says:

    Я с ним еще поигрался, вот что получилось:

    while true;do nc -p8080 -vnlc'r=read;e="echo -e";$r a b c;while [ -n "$a" ];do $r a;a=`$e $a|tr -d "\r\n"`;done;f=`$e $b|sed s/.//`;h="HTTP/1.0";o="$h 200 OK\r\n";[ -z $f ]&&($e $o;ls|while $r n;do [ -f $n ]&&$e "$n“;done)||([ -f $f ]&&($e “${o}Content-Type: `file -ib $f`\n”;cat $f)||$e “$h 404 \n\n404\n”)’;done

    На таблетке по крайней мере работает. Кое-что даже получше, чем оригинал. Меньше на 100 с лишним байт :)

  5. » Готовимся к запуску своих скриптов » Internet Tablet Says:

    […] библиотека скриптов для запуска на таблетке, (это и http от Ed и shelltube от Wall ) пора уже подготовить базу для их […]

  6. Ed Says:

    Я его еще уменьшил до 328 байт. Пытался автору в блог закинуть, но он там как-то искорежился и еще ждет авторизации. Сюда кинуть?

  7. dik Says:

    Давай. Насчёт укладки в пакет - я то сам не соображаю ка .deb делать.

  8. Ed Says:

    Лови:

    while :;do nc -p8080 -vnlc'r=read;e="echo -e";$r a b c;while [ -n "`$e $a|tr -d "\r\n"`" ];do $r a;done;f=`$e $b|sed s/.//`;h="HTTP/1.0";z="404 Not Found\n";[ -z $f ]&&(ls|while $r n;do [ -f $n ]&&$e "$n“;done)||([ -f $f ]&&($e “$h 200 OK\r\nContent-Type: `file -ib $f`\n”;cat $f)||$e “$h $z\n$z”)’;done

    Да там особо и нечего делать для такого случая - сборки-то нет никакой, только положить их в /usr/bin и все. Только вот по-хорошему нужно 2 разных пакета делать, но уж больно они маленькие получатся - по одному скрипту на каждый.
    Или в один лучше, как думаешь? internet-tablet-scripts :)

  9. Ed Says:

    Куда-то мой пост последний пропал. С последней версией кода. Я так старался :(

  10. Ed Says:

    Пробовал несколько раз, с разными тэгами - ничего не вышло.

  11. dik Says:

    А предыдущий то коммент прошёл… Может на форум лучше ?

  12. Ed Says:

    А ты не видишь мои посты?
    Я использовал тэги code и pre - не помогло. После сабмита сообщения просто нет. может что-то не так делаю?

  13. dik Says:

    Тест : а может быть просто code без pre : предыдущий то коммент прошёл. Может > это помешало

  14. dik Says:

    Ещё тест : while true;do nc -p8080 -vnlc'r=read;e="echo -e";$r a b c;while [ -n "$a" ];do $r a;a=`$e $a|tr -d "\r\n"`;done;f=`$e $b|sed s/.//`;h="HTTP/1.0";o="$h 200 OK\r\n";[ -z $f ]&&($e $o;ls|while $r n;do [ -f $n ]&&$e "$n“;done)||([ -f $f ]&&($e “${o}Content-Type: `file -ib $f`\n”;cat $f)||$e “$h 404 \n\n404\n”)’;done

  15. dik Says:

    Ed : странным образом твои последние комменты вордпресс в спам определял. Ссори - только щас заметил. Один вариант коммента я публиканул - тот, не тот, не знаю…

Leave a Reply

Or use your OpenID:


Internet Map Рейтинг GPS Клуба