В прошлый раз я написал, как монтировать расшаренные папки Windows в Android-смартфон: о сборке необходимого модуля cifs.ko и зависимостей для него. Само монтирование было сделано при помощи стандартной команды mount, но каждый раз открывать эмулятор терминала и вводить длинные команды, конечно же, мягко говоря, не очень удобно.
Поэтому сегодня я расскажу о двух приложениях, которые позволят монтировать всего в 1-2 тапа пальцем. На одно из них я уже давал ссылку в предыдущем посте.
CifsManager
Android Market | market:// | 4PDA
Описание есть на форуме 4PDA, поэтому подробно останавливаться на этом приложении я не буду.
Стоит только отметить правильный порядок модулей в опции Path to cifs.ko (видно на скриншоте).
А так же при создании шары не забудьте в опциях вбить iocharset=utf8,file_mode=0777,dir_mode=0777
Прямо из приложения можно открыть установленным файловым менеджером подключенный ресурс, что плюс.
А минус — нет бэкапа опций на SD, потому что их достаточно много. Так что при, например, перепрошивке, всё нужно будет вбивать заново (если не пользоваться прогами для бэкапа).
Но главное — оно работает, и позволяет монтировать в 2 тапа пальцем по экрану: запуск приложения + тап по нужной шаре.
GScript
Lite: Android Market | market://
Full: Android Market | market:// | 4PDA
Это приложение предназначено не именно для монтирования, а для запуска вообще любых скриптов. Также поддерживает создание ярлыков, что и позволяет монтировать шары в один тап.
Имеются функции и сохранения/загрузки скриптов с SD-карты.
Полезные скрипты можно найти в теме на XDA.
Ну а теперь к монтированию.
Можно было бы, конечно, просто вбить все команды из предыдущего поста: insmod, mount и unount. Но это всё равно долго и нудно (особенно если подключаемых ресурсов несколько), поэтому я для себя решил наговнокодить скрипт, чтобы все нужные команды были в одном обычном sh-файле, который можно будет запускать не только из GScript, но и при необходимости из терминала.
cifs.sh:
На первом скриншоте видно, что перед скриптом стоит команда sh, что позволяет запускать его с SD-карты в FAT32, где невозможно сделать chmod +x.
Зачем при этом у меня такой длинный путь к файлу, я напишу как-нибудь потом...
Теперь пара слов о самом скрипте.
Результат работы показан на втором скриншоте, после того как скрипт отработал окно автоматически закрывается.
Несколько пустых echo добавлено чтобы появляющийся поп-ап не закрывал вывод.
При запуске без параметров происходит загрузка всех модулей, l — список модулей, r — выгрузка, m — список смонтированных шар (только в cifs.sh v2.0).
m c — монтирование/размонтирование; если шара смонтирована, происходит размонтирование, и наоборт.
ВАЖНО:
Скрипт использует grep, поэтому должен быть установлен BusyBox.
Исправьте переменную PATH
, указав правильный путь до grep!
Также (хотя это и не будет влиять на запуск из-под GScript), исправьте/проверьте путь до интерпретатора sh в 1 строке.
Добавляя другие аргументы в case
(например, m1, m2 и т.д) можно подключать несколько шар, или одну под разными юзерами. Естественно всё ограничивается лишь вашей фантазией.
Это решение мне показалось лучше в первую очередь тем, что скрипт можно легко редактировать, просто открыв в текстовом редакторе при подключении смартфона как USB-диска, или через SSH.
Как-нибудь позже я напишу об организации в Android одной среды как при запуске терминала, так и при подключении по SSH.
А пока что — с наступающим, юзернеймы! Ведь до 2012-го осталось меньше суток :-)
Обновил скрипт cifs.sh — теперь использование стало более наглядным: для добавления шар достаточно изменить переменные USER
, PASS
, SERV
, SERVNAME
и SHARE
в строках 44-48, и добавить новый блок в case
. Добавлено монтирование в режиме только-чтение в зависимости от используемого пользователя (строка 18, опционально).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #!/system/bin/sh ####### cifs.sh v2.0 (05.05.2012) by Shumaher ####### https://blog.alexz.me/kak-montirovat-setevye-diski-windows-v-android-bez-konsoli/ ################################################################ SCRIPTVER='cifs.sh v2.0 (05.05.2012) by Shumaher' export PATH=/data/data/berserker.android.apps.sshdroid/home/bin:$PATH func () { DIRBASE="/mnt/sdcard/cifs" DIR="$DIRBASE/$SERVNAME/$SHARE" SHAREPATH="//$SERV/$SHARE" PATTERN="unc=\\\\$SERV\\$SHARE,username=$USER" if [ $USER == "read-only-user" ] # пользователь для монтирования в read-only then RW="ro" else RW="rw" fi if mount | grep -Fq -- "$PATTERN" then echo "UnMounting $SHAREPATH ..." umount -f -l $DIR && \ echo "$SHAREPATH unmounted for $USER!" else echo "Mounting $SHAREPATH ..." mount -t cifs -o $RW,iocharset=utf8,username=$USER,password=$PASS,file_mode=0777,dir_mode=0777 $SHAREPATH $DIR && \ echo "$SHAREPATH mounted for $USER!" fi } echo $SCRIPTVER echo echo case $1 in "c") # данные для подключения к серверу, блок начиная с этой строки до ;; можно копировать, меняя аргумент "c" USER="user" PASS="password" SERV="192.168.1.1" SERVNAME="comp" SHARE="share" func # func не удалять! ;; # копировать до этой строки включительно "l") lsmod ;; "m") if mount | grep -q -- "type cifs" then mount | grep -- "type cifs" else echo "No mounted shares found!" fi ;; "r") cd /mnt/sdcard/cifs/modules/$(uname -r)/ && \ insmod -r nls_utf8 && \ insmod -r cifs && \ insmod -r slow-work && \ echo "*.ko unloaded!" ;; *) cd /mnt/sdcard/cifs/modules/$(uname -r)/ && \ insmod slow-work.ko && \ insmod cifs.ko && \ insmod nls_utf8.ko && \ echo "*.ko loaded!" mkdir /lib ln -s ../mnt/sdcard/cifs/modules/ /lib/ && \ echo "Link to /lib created!" ;; esac echo echo echo echo echo echo |
Последние комментарии