Архив Март 2010

linux: Dropbox

Dropbox — файлохранилище с 2Гб свободного места(со всеми рефералами возможно добиться 10Гб), неограниченное время хранения, софт для синхронизации файлов с сервером, приватные каталоги, паблик каталоги и каталоги которые вы можете расшарить только для своих друзей.

С виндой всё ясно, скачал прогу поставил и забыл, а как же линуксом ?
Если у вас Ubuntu(НЕ! Kubuntu) или Fedora, то просто качайте соответствующие пакеты:
https://www.dropbox.com/downloading?os=lnx
Если у вас всё остальное, то для вас:
32bit:
http://www.getdropbox.com/download?plat=lnx.x86
64bit:
http://www.getdropbox.com/download?plat=lnx.x86_64
Качайте, распаковывайте, далее запускайте ./dropboxd
появится GUIёвое меню, введите данные своей учетки с дропбокса и укажите каталог куда будете ставить, я выбрал ~/public/Dropbox
Всё круто, демон синхронизации пашет, не забудьте поместить его в автозагрузку(лучше прямо сейчас).
Теперь мы хотим удобства, чтобы по клику правой кнопки мыши можно было выбрать в контекстном меню пункт «Опубликовать в Dropbox» и тут же получить в буфере ссылку на опублекованный файл.
Качайте файл http://dl.dropbox.com/u/153097/dropbox.sh и помещайте его в /usr/local/bin/
Теперь для kde4 качайте файл http://dl.getdropbox.com/u/153097/dropbox.desktop и помещайте его в /usr/share/kde4/services/ServiceMenus

Всё ура!
PS: а у кого не kde4 додумайте сами.

utilites: trickle («шейпер для детей»)

Устанавливаем и запускаем
sudo apt-get install trickle
trickle -s -d 100 apt-get upgrade

Всё! мы ограничили полосу пропускания для утилиты upgrade до 100 кбайт. Всё по детски.

Домашняя автоматизация.

Накопил немного информации с инета по схемотехнике, контроллерам, различным примерам. Как подтверждение моему небольшому развивающемуся проекту, решил написать сею статью…
Итак имеем: роутер dir-320( с dd-wrt, процесс установки описан в предыдущей статье про dir-320 + C), контроллер ATmega8535, небольшая схема управления на оптодрайвере, обьект управления ( настольная лампа, усилитель звуковой, домашний водонагреватель ), немного проводов, пОяльник, своб. время.
Что хотелось бы получить: программное управление питанием обьектов, питающихся от сети ~220 В.
Собственно управление объектом производится следующим образом:
Мобильный телефон->мобильный браузер->wifi(мобильный)->wifi(роутера dir-320)-> установленный lightpd->обработчик на perl->uart(роутера)->uart(контроллера mega8535)->управляющий сигнал(+5в контроллера)->управляющий сигнал(+5в оптодрайвера)-> управляемый сигнал(~220в оптодрайвера)->объект управления.
В данной схеме можно заменить «Мобильный телефон->мобильный браузер->wifi(мобильный)->» на ноутбук, рабочий комп и тп.
Также имеется возможность управления через wan порт, подключенный к инет сети, опять же посредством обращения к lightpd.
Какие + данной схемы управления:
  • Не нужно вставать с кровати для включение отключения света, тк управление либо с ноута, либо с мобилы.
  • Есть возможность ӕкономии ӕл. ӕнергии посредством отключения/включения водонагревателя, даже если вы не дома — через инет.
  • Комплекснов включение/отключение устройств(подходя к дому, можно заранее включить например свет везде где нужно. в том числе и ӕл. чайник перед приходом)
  • Часто забываю отключать устройства от сети перед уходом. Ӕто становится возможно в любой момент.
Какие — данный схемы управления:
  • Возможно достаточно не удобно будет доставать или держать каждый раз в руке мобильный телефон для влючения/отключения света. Но ӕто решается путем параллельного влючения оптодрайвера с физ. выключателем. Но опять же будет не отключить удаленно, если включаетель включен.
  • К каждому устройству идет дополнительный провод и устройство на оптодрайвере. Провода нужно както крепить к стене или прятать в стену, что влечет за собой смену обоев ))))) Оптодрайвер же нужно както прятать в розетку, дай бог если там хватит места )
  • Исключительная ситуация, когда мобила села, ноут не включается, а компьютер сломался. Решается лишь параллельным включением физических средств управления.

Какие возможности дополнения данной схемы управления:

  • Поставить датчики движения для включения света. На контроллере сделать регулируемую задержку отключения (3-5минут по усмотрению).
  • Беспроводное управление посредством toshiba микросхем, но придется дополнять схемой питания от ~220в.

Ну собсно на практике будем делать следующее:
Читать далее

ssh: авторизация по ключу

Вас достало вводить пароль при входе на ваш сервер ? Или может быть вас достают брутфорсом, а sshguard и pam_geoip вам влом поставить ?
Сделайте аутентификацию по ключу и отключите аутентификацию по паролю.
Как сделать аутентификацию по ключу — просто:
1) На локальной машине(т.е. той С которой вы собираетесь ходить на сервер) делаете:
ssh-keygen -t rsa // можете и dsa указать, смотря что больше нравится.
во время генерации ключа будет задан вопрос про имя файла, если вы собираетесь делать ключи на несколько серваков и хотите их сделать разными(а их НАДО сделать разными), то укажите имя /home/username/.ssh/example_rsa
2) ssh-copy-id -i ~/.ssh/example_rsa example.com
эта команда скопирует ключ на сервер по ssh протоколу и запишет его в нужный файл .ssh/authorized_keys
3) На клиенте редактируете файл /etc/ssh/ssh_config
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/example_rsa // ключевая строка

4) На сервере в /etc/ssh/sshd_config смотрите чтобы было включено(а по умолчанию должно быть)
RSAAuthentication yes
PubkeyAuthentication yes

5) Не забудьте на сервер сделать
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

6) Ну и поехали ssh user@example.com — должно пройти без пароля, если же пароль был затребован, значит на одном из предыдущих этапов был косяк, в этом случае ssh user@example.com -vvv и смотрите где запарка.

vsftpd. FTP за пару минут.

Сливаем vsftpd, можно отсюда ftp://vsftpd.beasts.org/users/cevans/.

>sudo -i

>mkdir ~/temp || cd ~/temp

>wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.0pre1.tar.gz

Распаковываем:

>tar xvfz vsftpd-2.3.0pre1.tar.gz

Собираем:

>make

Появится vsftpd бинарник, скопируем его в папку с бинарниками:

> cp vsftpd /usr/sbin/

Проверяем есть ли юзер nobody:

>cat /etc/passwd | grep nobody

Если нет — добавляем:

>useradd nobody

Для дефолтной конфигурации необходимо создать /usr/share/empty/:
Читать далее

Переменные окружения

Как задать свои переменные окружения?

В папке пользователя в .profile задаем все данные переменные.

Например, необходимо запускать периодически вручную скрипт. Если путь длинный к скрипту, проще прописать этот путь до папки со скриптом в переменную $PATH.

<PATH=»/home/<user>/bin:$PATH»>, что добавит в начало переменной еще один путь.

Удобно добавлять алиасы для сокращения команд:

alias ll=»ls -la»

Выводим действующие переменные окружения:

>env

, где —

PATH Пути для поиска программ — список директорий, разделенных двоеточиями
PROMPT, prompt, PS1 Вид приглашения shell
DISPLAY Имя дисплея для X-программ
TERM Тип терминала
EDITOR Текстовый редактор, который будут использовать программы mc, vipw, crontab и т.д. вместо vi
PAGER Программа просмотра текстовых файлов, которую будут использовать команды man, apropos и т.д. (в Linux man и apropos по умолчанию используют /usr/bin/less -is
HOME* Домашняя директория пользователя
USER*
LOGNAME*
Login-имя пользователя
SHELL* Имя основного shell

softswitch: Essentra BAX (генерация строк для импорта)

Генерация строк для импорта телефонов в софтсвитч Essentra BAX на python 2.6
nano passgen.py

#!/usr/bin/python
import random

class PassGen():
        def generator(self):
                passwd=""
                for i in xrange(0,11):
                        if (i%2==0):
                                passwd+=random.choice('abcdefghjkmnprstuvwxyzABCDEFGHJKMNPRSTUVWXYZ')
                        else:
                                passwd+=str(random.randint(2, 9))
                return passwd

        def getPassword(self):
                for i in xrange(0,1):
                        return self.generator()

nano bax.py

#!/usr/bin/python
import random
from passgen import PassGen

class AddToBax():
        pswd = PassGen()
        prefix = 73522;
        def AddSingleNumberGen(self):
                print "Enter the person surname:"
                surname = raw_input()
                print "Enter the person name:"
                name = raw_input()
                print "Enter the address: "
                address = raw_input()
                print "Enter telephon number(6 digits format: 64xxxx):"
                telnumber = raw_input()
                password = self.pswd.getPassword()
                fullnumber = str(self.prefix)+str(telnumber)
                print "U,%s,COSUser,User,%s,test@kss45.ru,810,7,8,3522,%s,,,,%s,,%s,%s,E,D,E,D,,,%s,%s,User\n" % (fullnumber, password, telnumber, address, name, surname, fullnumber, password)


        def AddGroupNumberGen(self):
                print "Enter the company name:"
                company = raw_input()
                print "Enter the address:"
                address = raw_input()
                print "Enter the first number (6 digits format: 64xxxx): "
                first = raw_input()
                print "Enter the last number (6 digits format: 64xxxx): "
                last = raw_input()
                totalnumbers = int(last) - int(first) + 1
                while (first != int(last) + 1):
                        fullnumber = str(self.prefix)+str(first)
                        password = self.pswd.getPassword()
                        print "I,%s,COSUser,User,%s,test@kss45.ru,810,7,8,3522,%s,,,,%s,,,%s,E,D,E,D,,,%s,%s,User" % (fullnumber, password, first, address, company, fullnumber, password)
                        first = int(first) + 1

newuser = AddToBax()
print "Select Single(1) or Group(2) number generation"
selection = raw_input()
if selection == "2":
        newuser.AddGroupNumberGen()
else:
        newuser.AddSingleNumberGen()

Вот и всё, нажимаем 2ку, переходим к генерации строк для пачки номеров, нажимаем любой символ(так показалось юзабельнее), переходим к генерации одного номера.