INT 21h

Домашняя страница самого страшного прерывания

sqlite3socket – Сервер для предоставления неблокирующего доступа к sqlite3 базе данных

№ 8134 В разделах: Администрирование Программирование от April 4th, 2016,

Эта программа написана мной чтобы конкурирующие процессы не натыкались на блокировку базы даннных в sqlite3. Используется на репитере нашего городского автоканала как альтернатива слишком громоздкому для таких целей mysql. Можно организовать доступ как по сети (с биндингом к сетевому интерфейсу), так и через unix socket файл.

http://dev.blindage.org/projects/sqlite3socket

Программа написана на python3. При запуске блокирует файл базы данных и все последующие обращения к нему происходят только по сети. Класс betterSocket расширяет класс socketserver для предоставления более быстрого интерфейса, чем через TCP, но всегда можно переключиться обратно просто изменив переменную конфигурации. У каждого обращения есть собственный хендлер к БД, но хендлер самой БД для всех одинаковый. Это позволяет тредам иметь неблокирующий доступ к данным.

class DB:
    def __init__(self, confDB):
        self.db = sqlite3.connect(confDB)

    def fetchall(self, query):
        dbcursor = self.db.cursor()
        dbcursor.execute(query)
        return dbcursor.fetchall()


class s3socket(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        try:
            sql = self.data.decode('UTF-8')
            sqlresult = dbHandler.fetchall(sql)
            answer = ['result', sqlresult]
        except sqlite3.Error as er:
            answer = ['error', er.args[0]]

        self.request.sendall(bytes(json.dumps(answer, ensure_ascii=False), 'UTF-8'))

Все SQL запросы отправляются простым текстом, а ответ приходит массивом в JSON. Возврат объекта пока еще не реализован, но планы имеются. Настройка происходит очень просто:

Взаимодействовать с БД очень просто. Можно даже на bash. Примеры можно посмотреть в wiki.

Нет комментариев »

asql – лучший друг системного администратора

№ 8128 В разделе "Администрирование" от March 11th, 2016,

asql это убер штука из репозитория дебиана\убунты, которая парсит логи apache\nginx в память и хранит их там в виде БД. Но “sql” не просто так в названии появилось. Эта мегакрутая херовина позволяет к полученой базе посылать sql запросы! Итак, простой пример из жизни по отлову ботнета, который усиленно пытался подобрать пароль к моему няшному бложику.

root@boroda:/var/log/nginx# asql
asql v1.6 - type 'help' for help.
asql> load access-blog.log
Loading: access-blog.log
asql> show

   The table 'log' table has the following columns:

  id      - ID of the request
  source  - IP, or hostname, which made the request.
  request - The HTTP request
  status  - The HTTP status-code returned
  size    - The size of the response served, in bytes.
  method  - The HTTP method invoked (GET, PUT, POST etc).
  referer - The HTTP referer (sic).
  agent   - The User-Agent which made the request.
  version - The HTTP version used by this client.
  date    - The date and time at which the request was made.
  label   - Any label applied when the logfile was read.
  user    - The remote (authenticated) user, if any.
asql> select distinct(source) from logs where request="/xmlrpc.php"
91.239.66.84
104.128.228.61
50.62.161.20
62.149.143.62
66.147.240.154
92.60.114.159
5.178.68.254
....

Как вы видите, использование этой программы экстремально облегчает анализ логов. Полученый список IP отправляете в iptables. Чтобы забыть окончательно о проблеме заблокируйте доступ к xmlrpc.php ;)

Нет комментариев »

Centos 7 на Amazon не меняет свой hostname

№ 8126 В разделе "Администрирование" от March 2nd, 2016,

А всему виной то, что он генерируется автоматически при загрузке. Это чисто амазоновская фишка. Как обычно меняете /etc/hostname и hosts, а далее создаете файл /etc/cloud/cloud.cfg.d/99-noautohostname.cfg и пишете в него строку preserve_hostname: true. Перезагружаетесь и теперь все как нужно.

Нет комментариев »

Система мониторинга Zabbix

№ 8101 . В разделе " Администрирование " от February 26th, 2016 ,
Screenshot-21

Борьба с хотлинками в nginx

№ 8099 В разделе "Администрирование" от February 25th, 2016,

Надоели хотлинкеры, сосущие траффик гигабайтами? Отличный рецепт:

location ~ .(gif|png|jpe?g)$ {
    valid_referers blindage.org;
    if ($invalid_referer) {
        access_log /var/log/nginx/hotlinks.log;
        rewrite (.*)\.(jpg|jpeg|png|gif)$ http://blindage.org/;
    }
}

Нет комментариев »


Комментарии
  • John: Стекла для электроник – техночас.ру
  • 21h: не думаю, что прокатит. там вроде часть железок другая была.
  • alex: Извини может вопрос глупый но все же хочеться уточнить на sensetion xe тоже прокатит или как? И еще один вопрос...
  • Евгений: Спасибо! Бумажку потерял, нигде не мог найти.
  • 21h: ну конечно не надо :)
  • виктор: Спасибо за видео и шпаргалки ! Очень познавательно , но возникает вопрос : есть 2 воки-толки ну совсем уж из...
  • 21h: не считал конечную цифру. не думаю, что больше 10 ватт\ч.
  • wzor: сколько потребляет электроэнергии.
  • 21h: собрал. лежит где-то. но десктопную прогу так и не написал. через консольку все смотрел.
  • МВлад: Как-то починял магнитолку алпайн, в ней от конденсата сгнил радиомодуль. Вот там как раз помогло бы такое...