Кастомная прошивка для teXet TB-436

По просьбам трудящихся, по аналогии с прошивкой для Ritmix RBK-200, собрал прошивку для teXet TB-436. Возможности, процесс прошивки и откат — идентичны, поэтому читаем пост Кастомная прошивка для Ritmix RBK-200.

Скачать [~164 МБайт]

Кастомная прошивка для Ritmix RBK-200

rmk-200-01

Как правило, я не покупаю продукты подобных марок, но выбора на рынке книг с электронными чернилами формата 4.3″ — практически нет. На данный момент это несколько моделей российских фирм teXet и Ritmix, а так же пара моделей немецкой фирмы TrekStor. Но, давайте внимательно посмотрим, что лежит в основе всех этих книг. И так, ключевым элементом здесь является несовсем стандартный экран размером 4.3″ не от компании E-Ink, как нагло заявлено на том же сайте Ritmix, а совсем даже аналог — O-Paper китайской компании OED Technologies. Сейчас у них с E-Ink идут судебные тяжбы о нарушении патентов последней, но не суть, речь не об этом, просто будем иметь в виду, что перед нами изделие с незамысловатым названием Digital Ink, которое при этом дешевле своего «собрата». Качество, конечно, ниже, чего уж там, сравнивая со своей пока основной читалкой Kindle Paperwhite 2nd Gen, могу уверенно сказать, китайцам еще есть куда совершенствовать свое «клонирование». Далее, вся аппаратная база данных электронных книг спроектирована в Китае, при этом изделие фирмы Ritmix является чуть ли не точным клоном так приглянувшегося мне TrekStor Pyrus mini (a.k.a. TrekStor Liro Mini).

Отличий немного, у Ritmix в 2 раза больше постоянной внутренней памяти (4ГБ против 2ГБ в TrekStor Pyrus mini) и в наличии встроенный аудио плеер. Зачем в электронной книге аудио плеер, да еще и с характерным китайским качеством — мне не ясно. Но есть еще одно, главное отличие, — прошивка. В Ritmix сразу же после выхода забили на обновление ПО, тогда как для TrekStor было выпущено несколько обновлений. Подозреваю, что ПО пилят все те же китайцы, причем в какой-то степени оно унифицировано, так как в обоих прошивках торчат ресурсы от той и от другой. Но то ли за дальнейшее сопровождение Ritmix не хочет платить, то ли ей просто плевать на пользоватей своей продукции — не знаю, но факт остается фактом, их прошивка версии 1.0.3 — глючнее некуда. Самыми распространенными симптомами являются двойные перелистывания и произвольные перезагрузки. Думаю, пользователи этого продукта и так прекрасно об этом знают, по крайней мере перед покупкой по отзывам на Яндекс.Маркете это сразу легко понять. Прошивка от TrekStor уже дошла до версии 1.0.6 и changelog внушает оптимизма. Перед покупкой я изучил особенности этой модели и был готов к тому, чтобы запилить прошивку от TrekStor. Покупка же TrekStor Pyrus mini с доставкой к нам сводит на нет всю прелесть цены без этих лишних переплат посредникам и службе доставки. К слову, Ritmix мне обошелся в 1590 руб., что для карманной читалки, которую и не жалко, в случае чего, — шикарно. Ну а прошивку — запилим.

Чего вы лишаетесь с прошивкой от TrekStor Pyrus mini? Русского языка (только интерфейс и поиск) и аудио плеера.

Что вы приобретаете? Более стабильную работу. По крайней мере с валидными книгами в формате FB2 я проблем не наблюдаю. Правильную работу режима сна.

Что изменено в прошивке:

— Вычищен мусор из прошивки
— Для Serif шрифта сделана замена на мой любимый Georgia
— Для отвязки от бренда немного изменена графика и метка диска

Скачать (обновлено: 18.12.2013) [~164 МБайт]

» Читать далее »

TP-Link TL-WR703N — Unbrick

wr703n-01

Заказал из Китая миниатюрный роутер TP-Link TL-WR703N. Доставки ждал совсем «недолго», всего каких-то 3 месяца, в очередной раз «спасибо» нашей почте. В конце концов роутер приехал. Эта модель рассчитана только на внутренний рынок Китая, поэтому кроме китайского интерфейса в веб-админке другого нет. Что ж, не беда, я изначально планировал поставить на эту железку прошивку OpenWrt, благо поддержка в OpenWrt Wiki заявлена.

Прочитал, как мне казалось, внимательно страничку в их Wiki, убедился (как оказалось — хреново), что версия моей прошивки 1.6, скачал последнюю со страницы Wiki ‘squashfs-factory.bin’ и прошил. Все прекрасно прошилось и казалось бы ничто не предвещало беды, однако, LAN-порт стал недоступен, а Wi-Fi в OpenWrt по умолчанию отключен. Прекрасно! Таким образом, в Failsafe mode я войти не мог, как не пытался.

Оказывается, прошивка на моем устройстве была версии 1.7 с новым U-boot, не смотря на то, что на наклейке сзади корпуса четко было указано — 1.6. Версию 1.7 поддерживает только прошивка из trunk’а, ее то и следовало сразу прошить. Ничего не остается, как разобрать роутер и подпаяться к serial.

wr703n-02

» Читать далее »

bind9 — автоматизация добавления файлов зон

adddomain-01

Наверняка многие из вас задумывались об автоматизации добавления новых файлов зон на своем DNS-сервере. Кто-то правит руками, кто-то ставит для этого развесистые панели управления, а кто-то просто автоматизирует скриптами рутинные операции, хотя бы по минимуму.

» Читать далее »

NFS mount on the OS X Mountain Lion and realtime encrypt files with EncFS

Уверен, что многие столкнулись с проблемой монтирования NFS (Network File System) из под OS X Mountain Lion. В этой версии Apple выпилила привычный инструмент монтирования через Disk Utility. Многие начали изобретать велосипеды или пользоваться чем-то вроде NFS Manager. Вот только все это ни к чему, достаточно внимательно почитать man и правильно настроить NFS Server. Пройдемся пошагово.

Для начала установим NFS Server на нашем *nix’овом сервере (в моем случае Debian):

1
apt-get install nfs-kernel-server nfs-common portmap

Правим ‘/etc/exports’ и прописываем монтируемые каталоги с правильными опциями:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/hdd1/Downloads 192.168.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=1002,anongid=1002,insecure) 10.10.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=1002,anongid=1002,insecure)
/hdd1/webdav/itunes 192.168.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=33,anongid=33,insecure) 10.10.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=33,anongid=33,insecure)
/hdd1/webdav/efs 192.168.1.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=33,anongid=33,fsid=1,insecure)

Ключевой здесь является опция ‘insecure’, по сути, она избавляет от необходимости в опции ‘resvport’ на стороне клиента, которую раньше можно было выставить в Disk Utility. Опция ‘resvport’ применяется в случае, если NFS-сервер работает на привилегированном порту (ниже 1024), по умолчанию же, OS X пытается подключиться к NFS-серверу на непривилегированном порту, вот мы и повесим NFS на него, используя опцию ‘insecure’. Не забудьте исправить ‘anonuid’ и ‘anongid’ на uid и gid того пользователя и группы, из под которых хотите, чтобы велась запись. Обратите внимание на ‘fsid=1’, добавьте эту опцию для шары, в которой будет использоваться EncFS. Ну и не забудьте поменять разрешенные подсети на свои.

Перезапускаем сервис:

1
/etc/init.d/nfs-kernel-server restart

Чтобы посмотреть какие ресурсы предоставлены:

1
showmount -e

Если вы только добавляли ресурсы в файл ‘/etc/exports’, то их можно активировать без перезапуска службы NFS:

1
exportfs -a

Теперь перейдем к настройке EncFS, для упрощения я написал небольшой скрипт, подробно его прокомментировав, тем самым, не вижу смысла дублировать пояснения:

1
nano /usr/local/bin/efs
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
#!/bin/sh

# ----------------------------------------------------------------------------
# Simple script for EncFS with NFS access
# Written by ZeroChaos
# Version 1.0, 2013-02-26
# Site: http://zerolab.net/
# ----------------------------------------------------------------------------
## Install EncFS:
# apt-get install encfs
## If we mount under another user (with option "--public" it's not necessary):
# adduser username fuse
## RTM!:
# man encfs
## Just replace the variables $EFS_FOLDER and $MOUNT_POINT, and then run:
# efs -m
## For unmount:
# efs -u
## For force unmount:
# efs -f
# ----------------------------------------------------------------------------

# Are you using NFS for access to decrypted folder?
NFS_ACCESS="yes"

# Variables for encfs command
EFS_FOLDER="/hdd1/efs"
MOUNT_POINT="/hdd1/webdav/efs"
OPTIONS="--public"
#OPTIONS="--public --idle=60"
MNT_CMD="encfs $OPTIONS $EFS_FOLDER $MOUNT_POINT"
# If we mount under another user
#RUNAS="username"
#MNT_CMD="su - $RUNAS -c \"encfs $EFS_FOLDER $MOUNT_POINT\""

# Mount
mount() {
    $MNT_CMD
}

# Unmount
umount() {
    if [ $NFS_ACCESS = "yes" ]; then
        /etc/init.d/nfs-kernel-server stop >/dev/null 2>&1
        sleep 1
    fi
    fusermount -u $MOUNT_POINT
    if [ $NFS_ACCESS = "yes" ]; then
        sleep 1
        /etc/init.d/nfs-kernel-server start >/dev/null 2>&1
    fi
}

# Force unmount
force_umount() {
    ps ax | grep [e]ncfs | awk '{ print $1 }' | xargs kill >/dev/null 2>&1
    if [ $NFS_ACCESS = "yes" ]; then
        /etc/init.d/nfs-kernel-server restart >/dev/null 2>&1
    fi
}

ME=$(basename "$0")
print_help() {
    echo
    echo "Usage: $ME [OPTION...]"
    echo
    echo "Options:"
    echo "         -m     Mount:"
    echo "                efs -m"
    echo "         -u     Unmount:"
    echo "                efs -u"
    echo "         -f     Force unmount:"
    echo "                efs -f"
    echo "         -h     Help."
    echo
}

while getopts ":mufh" opt;
do
    case $opt in
        m) mount;
            ;;
        u) umount;
            ;;
        f) force_umount;
            ;;
        h) print_help;
            ;;
        *) echo "Wrong option";
            exit 1
            ;;
        esac
done
1
chmod 755 /usr/local/bin/efs

Вот и все, теперь монтируем шару через Finder (CMD+K):

» Читать далее »

Cacti — New style (slightly modified graphics)

cacti-01

Уважаемые пользователи Cacti, меня одного беспокоит стиль оформления этого замечательного инструмента, который так и шлет привет из 90-х? Поискав на просторах Интернета модификацию стандартного стиля, пришел к выводу, что, похоже, никто этим вопросом не задавался. Работать с графикой по дефолту, мне лично, противно, поэтому, я решил потратить немного времени и поправить очевидно грубые места.

» Читать далее »

ZeroLab Nooter — Universal package for Nook Simple Touch

ReLauch touch-nooter-zc

Root package and a minimal set of tools. Nook Simple Touch with GlowLight supported!
Универсальный, поддерживаются версии прошивок: 1.0.0/1.0.1/1.1.0/1.1.2/1.1.5/1.2.0/1.2.1 + Noogie (All in One)

Что входит в пакет:

Системные:
Root (patched uRamdisk (adb via Wi-Fi), su, busybox, SuperUser.apk)
Any Soft Keyboard + Russian Language Pack (урезал с 1496 КБ до 549 КБ, убрав словари; пересобрал клавиатуру из последних исходных кодов; выкинул все лишнее; смерджил русскую версию в основной пакет; цветовую схему и размер кнопок приблизил к оригинальной клавиатуре; принудительно отключены всплывающие подсказки, что полностью решило проблему падения клавиатуры в некоторых приложениях без необходимости плясать с бубном; немного переделал интерфейс; сделал 2 темы под E-Ink, между которыми можно сделать выбор; доперевел недостающие пункты; немного поправил то, что уже было локализовано (совсем немного, по-хорошему, там с нуля нужно садиться и переводить, но времени нет))
Nook Color Tools (с добавленной alexstsv возможностью вызова по кнопке ‘N’ -> ‘settings’)

Пользовательские:
ReLaunch
Zeam Launcher (русская версия от kaznelson, по методе alexstsv добавил возможность вызова по кнопке ‘N’ -> ‘home’)
MoreLocale
Root Explorer

Remap левых кнопок (Menu, Back)
Переносы (hyph_ru.dic)
Обновление tzdata
AdFree (hosts)

Образ переработан для более простого использования, вся конфигурация вынесена в один файл ‘config.txt‘, который вы найдете в корне sdcard, на которую развернете образ.

config-zcn

Теперь процедура установки сильно упрощена. Что нам для этого понадобится? Пройдемся пошагово.

0. Настоятельно рекомендуется снять образ чистого Nook’а перед проведением любых операций с ним. Для этого необходимо воспользоваться Noogie-образом, он есть в моем пакете, но процесс создания резевной копии выходит за рамки этой инструкции.

1. Записываем образ на карту памяти (*nix — dd, Windows — Win32DiskImager).

а) *nix, на примере OS X:
Ищем свою карту памяти:

1
diskutil list

Размонтируем карту памяти (где # — номер устройства, не используйте при размонтировании disk#s#, где s — slice):

1
diskutil unmountDisk /dev/disk#

Переходим в каталог с прошивкой:

1
cd /path-to-zlnooter

Записываем образ на карту памяти:

1
sudo dd if=zln-uni.img of=/dev/rdisk# bs=1m

б) Windows:
Скачиваете и открываете Win32DiskImager, в паре кнопок разберетесь сами, все графически и все наглядно. Выбираете свою карту памяти, выбираете образ, записываете.

2. Делаем настройки под себя.

Открываем ‘config.txt‘ и начинаем настраивать. У нас два варианта ответов: «yes» — устанавливать, «no» — не устанавливать/применять.

INSTALL_ROOT — установить root в систему;
ENABLE_ADB — включить adb (через Wi-Fi);
REMAPPING — сделать переназначение левых клавиш, листание заменяется на «Меню» и «Назад»;
AnySoftKeyboard — установить адаптированную под E-Ink клавиатуру;
NookColorTools — установить Nook Color Tools, приложение для настроек системных функций;
AdFree — подмена ‘hosts’, для тех, кто не любит рекламу в приложениях и в любом случае ее игнорирует (нехорошо, но бывает необходимо);
HyphenationRuDic — установить словарь русских переносов, применяемый в родной читалке;
MoreLocale — установить приложение, предназначенное для смены системной локали (после первоначальной установки, запустите его и выберите ‘Russian’);
ReLaunch — установить менеджер книг и лаунчер в одном лице (рекомендую именно его ставить по умолчанию);
RootExplorer — установить файловый менеджер, пригодится для установки своих приложений и манипуляции с корневой файловой системой, при необходимости;
ZeamLauncher — для любителей классического лаунчера, легок и максимально оптимизирован для E-Ink.

Для установки своих системных приложений поместите их в папку ‘/custom/system/app‘, для установки обычных приложений в ‘/custom/data/app‘. Для установки других системных файлов, создайте соответствующую структуру в ‘/custom/system/‘ и наполните необходимыми файлами. У вас есть возможность использовать пользовательский скрипт для расширения функциональности образа (‘/custom/script.sh‘).

Для версий 1.2.0 — 1.2.1 восстановлена возможность устанавливать приложения с sdcard. Для всех версий прошивок при установке по умолчанию автоматически выбирается Any Soft Keyboard, вручную в Nook Color Tools более этого делать не нужно; автоматически включается возможность установки приложений не из маркета, вручную в Nook Color Tools, путем передергивания флажка, более этого делать не нужно; автообновление прошивки выключается.

3. Версия прошивки Nook определяется автоматически, об этом вам беспокоиться не нужно. Вставляем карту памяти в выключенный Nook, включаем его и наблюдаем процесс установки. После того как Nook загрузится, выключаем Nook, вытаскиваем карту памяти, включаем Nook.

4. Копируем необходимые *.apk в память Nook’а, устанавливаем простым тапом через Root Explorer, к примеру. В первую очередь советую поставить Cool Reader или AlReader.

5. Наслаждаемся чтением.

Лог всех операций после завершения установки сохраняется в файл ‘/log/zlnooter.log‘ на карте памяти.

Рекомендую для правки ‘config.txt‘ обзавестись чем-то помощнее Notepad’а, к примеру, Notepad++, AkelPad, EmEditor или UltraEdit. Лично я рекомендую Sublime Text 2, к тому же, он мультиплатформенный. В файле используется юниксовый перевод строки LF (Line Feed), а не виндовый CR (Carriage Return) + LF. Правильные редакторы это учитывают.

После установки карту памяти можете отформатировать в самом Nook’е.

Образ ужат до минимума, качать придется всего около 12 МБ.

При первом запуске и по кнопке ‘N‘ -> ‘home‘ ставим по умолчанию загружать ReLaunch или Zeam Launcher. Теперь у нас всегда на рабочем столе будет наш ланчер. Для сброса этого выбора, проделываем следующее: Nook Color Tools > Все настройки > Manage applications > Выбрать приложение, настройки по умолчанию для которого нужно сбросить > Clear defaults.

С недавнего времени образ можно использовать и как Noogie-карту, с целью резервного копирования и восстановления в случае необходимости. Для этого на карте памяти с развернутым образом переименуйте или удалите ‘uRamdisk‘ и ‘booting.pgm‘, а ‘uRamdisk-noogie‘ и ‘booting-noogie.pgm‘ соответственно переименуйте в ‘uRamdisk‘ и ‘booting.pgm‘.

Вниманию пользователей, возможен полный откат до заводской прошивки (удаляется только то, что установилось из моего дефолтового образа и не более, tzdata останутся обновленными), для этого достаточно на карте с развернутым образом отредактировать ‘config.txt‘, выставив RM = «yes» и загрузиться с этой карты. Удаляются приложения и утилиты, чистятся настройки, wiping dalvik-cache.

Скачать для 1.0.0/1.0.1/1.1.0/1.1.2/1.1.5/1.2.0/1.2.1 + Noogie (All in One) (универсальный) (обновлено: 01.03.2013) [~12 МБайт]

Русская клавиатура:

nt-keyboard nt-keyboard

» Читать далее »

ZLU (ZeroLab Unisync): remote & local automated backup script

Появилось немного времени и я решил переписать скрипт для автоматизации задачи бэкапа данных. Раньше скрипт неизбежно приходилось дублировать, если каталоги назначения различались, для локального же бэкапа приходилось немного модифицировать сценарий. Теперь этого делать не нужно, один универсальный скрипт способен проделать несложные операции за вас, нужно лишь задать необходимые параметры в файле настроек.

Итак, ZLU (ZeroLab Unisync):

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/bin/sh

# --------------------------------------------
# ZLU (ZeroLab Unisync):
# remote & local automated backup script
# Written by ZeroChaos
# Version 1.5, 2012-11-20
# Site: http://zerolab.net/
# --------------------------------------------
# NOTE: Exclude spaces in the variable FOLDER!
# --------------------------------------------

# -------------------------------------------- begin of [Configurable settings]
# Use SSH for remote sync
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"

# Snapshot directory
SDIR="snapshot"
SNAPSHOT_dir="$SDIR/`date +'%Y-%m-%d.%Hh%Mm'`"

# Take the list from the same folder where the script is called
DIR=$(dirname "$0")
LISTFOLDERS="$DIR/backup.txt"
EXCLUSIONSDIR="$DIR"
# -------------------------------------------- end of [Configurable settings]

# -------------------------------------------- begin of [Do not touch this section]
# If no arguments
if [ $# = 0 ]; then
    SNAPSHOT_GLOBAL="disable"
    i=0
    while read LINE; do
        if [ -n "$LINE" ]; then
            IFS=";"
            set -- $LINE
            FOLDER="$1"
            DEST_point="$2"
            LISTEXCLUSIONS="$EXCLUSIONSDIR/$3"
            SNAPSHOT="$4"
            SDAYS="$5"
            REMOTEHOST="${6}@${7}"
            FOLDERNAME="`echo "$FOLDER" | awk -F/ '{ print $NF }'`"
            # Options for rsync + array of commands to autorotation
            if [ $SNAPSHOT = "enable" ]; then
                SNAPSHOT_GLOBAL="enable"
                if [ "$6" != "" ] && [ "$7" != "" ]; then
                    OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUSIONS --backup --backup-dir=${DEST_point}${SNAPSHOT_dir}/$FOLDERNAME"
                    SAR[$i]="ssh $REMOTEHOST \"find ${DEST_point}${SDIR}/ -type d -mtime +$SDAYS -exec rm -r {} \;\" >/dev/null 2>&1"
                    i=$(($i+1))
                else
                    OPTIONS="-Saq --delete --exclude-from=$LISTEXCLUSIONS --backup --backup-dir=${DEST_point}${SNAPSHOT_dir}/$FOLDERNAME"
                    SAR[$i]="find \"${DEST_point}${SDIR}/\" -type d -mtime +$SDAYS -exec rm -r {} \; >/dev/null 2>&1"
                    i=$(($i+1))
                fi
            else
                if [ "$6" != "" ] && [ "$7" != "" ]; then
                    OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUSIONS"
                else
                    OPTIONS="-Saq --delete --exclude-from=$LISTEXCLUSIONS"
                fi
            fi
            # Sync
            if [ "$6" != "" ] && [ "$7" != "" ]; then
                eval rsync $OPTIONS "${FOLDER}/" $REMOTEHOST:"${DEST_point}${FOLDERNAME}/"
            else
                eval rsync $OPTIONS "${FOLDER}/" "${DEST_point}${FOLDERNAME}/"
            fi
        fi
    done < $LISTFOLDERS
    # Snapshot auto-rotate
    if [ $SNAPSHOT_GLOBAL = "enable" ]; then
        for ((a=0; a<${#SAR[*]}; a++)); do
            eval "${SAR[$a]}"
        done
    fi
fi

# Generate public/private rsa key pair
ssh_keygen() {
    ssh-keygen -t rsa -b 4096
}

# Copy your public key on a remote machine
ssh_copy_id() {
    # Function for remote host choice
    PS3='Select the remote host: '
    rhchoice() {
        eval set $RHARR
        select RH; {
            REMOTEHOST=$RH
            break
        }
    }

    # Read the list of remote hosts
    while read LINE; do
        IFS=";"
        set -- $LINE
        if [ "$6" != "" ] && [ "$7" != "" ]; then
            RH="${6}@${7}"
            RHARR="$RHARR $RH"
        fi
    done < $LISTFOLDERS

    # Remote host choice
    if [ "$RHARR" != "" ]; then
        rhchoice $RHARR
    else
        echo "No remote hosts, please configure the settings file: $LISTFOLDERS"
    fi

    ID_FILE="${HOME}/.ssh/id_rsa.pub"

    if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then
        GET_ID="$GET_ID ssh-add -L"
    fi

    if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ]; then
        GET_ID="cat ${ID_FILE}"
    fi

    if [ -z "`eval $GET_ID`" ]; then
        echo "$0: ERROR: No identities found" >&2
        exit 1
    fi

    if [ "$RHARR" != "" ]; then
        { eval "$GET_ID" ; } | ssh ${REMOTEHOST%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
    fi
}

ME=$(basename "$0")
print_help() {
    echo
    echo "Usage: $ME [OPTION...]"
    echo
    echo "Options:"
    echo "         -g     Generate public/private rsa key pair:"
    echo "                ssh-keygen -t rsa -b 4096"
    echo "         -c     Copy your public key on a remote machine:"
    echo "                ssh-copy-id user@host"
    echo "         -h     Help."
    echo
    echo "Example: $ME -gc"
    echo "Use both options, generate & copy."
    echo
}

while getopts ":gch" opt;
do
    case $opt in
        g) ssh_keygen;
            ;;
        c) ssh_copy_id;
            ;;
        h) print_help;
            ;;
        *) echo "Wrong option";
            echo "For help, use: $ME -h";
            exit 1
            ;;
        esac
done
# -------------------------------------------- end of [Do not touch this section]

» Читать далее »

Nook Simple Touch with GlowLight — Root package and a minimal set of tools

Обновил свою прошивку для Nook Touch, добавлена поддержка Nook Simple Touch with GlowLight (версия с подсветкой). В прошивку добавлено автоопределение версии прошивки Nook, вручную больше этого указывать не нужно. Подробная инструкция и ссылка на скачивание в прежнем посте.

Установка SSD в MacBook Pro

Вновь решил отсрочить замену своего MacBook Pro MB990, обойдясь очередным апгрейдом. На этот раз ставить буду SSD диск. Ставиться он будет на место оптического привода через Hard Drive Caddy Tray. Использоваться будет только под систему (под данные и Boot Camp останется ранее установленный HDD от Hitachi на 500GB и 7200 RPM), а без оптического привода я легко обойдусь, последние годы использовать его приходится все реже и реже.

» Читать далее »

Twitter

MSI Lab Twitter
Яндекс.Деньги:

VISA/MasterCard:

PayPal:
PayPal USD
PayPal RUB
WMZ WMZ: Z375880088307
WMR WMR: R883546545943
YAD YAD: 4100170884493

Donate - лучшее спасибо автору
Количество благодарностей: 28

Разделы