LINUX.ORG.RU

Сообщения zolden

 

Аналог DB view на уровне файловой системы

Форум — General

Я тут дунул и подумал - а возможно ли на уровне FS организовать следующее
Есть файлопомойка, куда загружается всё подряд.
При этом есть виртуальные директории, в которых видны только файлы из файлопомойки подпадающие под некие фильтры, типа директория с джыпегами, директория с сегодняшними файлами, директория с файлами больше 100Мб и тд

Вопрос именно про уровень FS, а не file manager'а

 ,

zolden
()

Наглядное сравнение I/O

Форум — Admin

Исходные данные:
Есть сервер логов, который упирается в I/O
Я предполагаю, что возможно ситуацию можно несколько улучшить изменением стратегии хранения данных и более агрессивным сжатием (ибо по CPU есть большой запас)

Задача:
Найти способ наглядного сравнения использования I/O на конкретном разделе. Так как выигрыш будет скорее всего не очень большим то нужна хорошая наглядность, идеальным вариантом мне видится наложение графиков.

Доступные средства:
Из коробки на сервере есть atop(по которому и выявлен bottleneck), смысл показаний и способ использования которого мне пока не очень ясны.То ли нужно задействовать абстрактный busy%, то ли конкретные цифры TPS - хз
Задача разовая, поэтому монстры мониторинга не велкам, однострочники на перле - велкам

 , , ,

zolden
()

На что ругается pgrep?

Форум — General

Делаю скрипт для проверки на состояние процессов по списку.
Так как процессов много, решил распараллелить проверку посредством Popen, но сразу встал в тупик

% cat test.py
from subprocess import Popen
result = Popen(['pgrep','-f','test'], shell = True)

% python test.py
pgrep: не указаны критерии соответствия
Наберите `pgrep --help' для дополнительной информации

% pgrep -f test
966
1495


За что он так со мной и как его дебажить?

 pgrep, ,

zolden
()

Стек(?) для Python+HTTPS

Форум — Development

Привет лорогугл
Надумал я тут для самообучения попилить один велосипед, подскажи же мне модный стек технологий для этого, чтобы всё было молодёжно и асинхронно.
Схема примерно такая:
клиент подключается к серверу по HTTPS, шлёт POST/GET c XMLками в качестве контента, сервер дёргает DB, отдаёт выхлоп клиенту взад.
Клиент - не браузер, а другое приложение, поэтому сверхнавороченный HTTP сервер и чудеса шаблонов наверное без надобности (в первом приближении клиент кроме HTTP 200 даже и кодов других не будет обрабатывать)
Так как знаю только питон немножко, то в основе будет он
Как я понял, сам сервер лучше поставить за Nginx, дальше пока не придумал.

 , ,

zolden
()

VRRP сквозь bond интерфейс

Форум — Admin

Сценарий следующий:

 
Switch1-----VRRP IP-----Switch2
      \                /
       \              /
       eth0         eth1
          Host(bond) 

Линк между свичами очень надёжен, но всё-же один и если он упадёт, то получим split-brain и оба свича станут VRRP Master
Чисто ради расширения кругозора хочу понять можно ли пропускать VRRP пакеты сквозь bond(режим Fault tolerance)
Ping mky, vel

 , ,

zolden
()

Связность/маршрутизация через другой интерфейс

Форум — Admin

Схема:

      eth0 (1.1.1.1)<->server1 (3.3.3.3:1234)
     /
host
    \
     vlan123(2.2.2.2)<->server2 (5.5.5.5:1234)


Хост может общаться с server1 через дефолтный шлюз через eth0
Связности через VLAN интерфейс до server1 нет.

Как сделать чтобы приложение, которое может инициировать запросы только с src_ip=2.2.2.2 могло подключиться к 3.3.3.3:1234?

Cвязность с server2:1234 при этом не должна быть затронута

 ,

zolden
()

Настраиваемый аналог tcpreplay для UDP?

Форум — Admin

Есть приложение которое принимает по UDP запросы от внешней железки.
Для тестирования хотелось бы генерировать эти запросы локально, чтобы не зависеть от внешних факторов и делать это быстрее.
Условия:
1. Приложение ожидает пакеты с определённого IP адреса, локально я такой на интерфейс назначить не могу.
2. Есть дамп пакетов, т.е. структура известна
Вопрос:
Можно ли и если можно то чем, используя существующий дамп генерировать запросы локально, гибко меняя нужные поля?
Использование существующего дампа непринципиально, но это сэкономило бы время, а то вручную его воспроизводить слишком муторно
Подумывал о какой-нибудь библиотеке для питона, но инструмент в общем тоже непринципиален.

 , ,

zolden
()

Манипуляция (перестановка) строк

Форум — General

Привет лор, посоветуй мне опять манипуляторов
Хочу уметь красиво форматировать консольный вывод

Входные данные:

vlan 123
master 1.1.1.1
slave 2.2.2.1
vlan 345
master 1.1.1.2
slave 2.2.2.2

Желаемый результат:
vlan 123 345
master 1.1.1.1 1.1.1.2
slave 2.2.2.1 2.2.2.2

emulek, выручай

 ,

zolden
()

Автодополнение zsh для vim scp

Форум — Admin

Часто сравниваю локальные конфиги с конфигами на других хостах используя

vimdiff /path/to/config.cfg scp://remotehost//path/to/config.cfg

Если для простого ssh/scp автокомплит zsh работает практически искаропки, то для такого формата автокомплит ниасиливает догадаться, что именно я от него хочу и приходится путь на удалённом хосте каждый раз писать полностью руками.
Руками, Карл.
Гугл сходу ничего не подсказал, лор, выручай меня скорее

 , ,

zolden
()

Peerflix с человеческим лицом

Форум — Desktop

Недавно открыл для себя peerflix и возрадовался.
По мне это гораздо удобнее для киношек, чем классические торрент-клиенты, экономится много кликов и всё такое, но есть пара ньюансов юзабилити, которые портят дело.
Вот что хотелось бы в идеале:
1) скачивается торрент файл
2) при открытии торрент файла запускается
- плеер, если это единичный видео файл и сразу начинается проигрывание
- торрент клиент, если это пачка файлов/или не видео файл
3) если игрался видео файл, то при открытии другого файла, старые данные подчищаются автоматом (открыл киношку, повтыкал пять минут, понял что отстой и открыл другую), при закрытии плеера старые данные тоже должны подчищаться (открыл киношку, повтыкал пять минут, понял что отстой и пошёл спать)

Я неспешно начал пилить велосипед на питоне (JS вообще не знаю, а нём наверное даже лучше было бы), реализовав логику второго пункта, но с 3м пунктом у меня иссякла фантазия (процессы peerflix плодятся при открытии следующего торрент файла, старые данные не подчищаются при закрытии плеера, итп), и поэтому я решил спросить совета у ЛОРа
ЛОР, посоветуй мне, может это всё уже давно реализовано - проигрывание торрентов «без скачивания», лишних кликов и окон

Вот то, что пока получилось, может гуру питона ещё что подскажут

 , peerflix,

zolden
()

Добыча кислорода в экстренных условиях

Форум — Science & Engineering

В честь вторника наброшу одну не очень весёлую историю из детства.
Маленький приморский городок.
Во время работ не очень в общем-то глубоко и не очень далеко от берега, произошёл несчастный случай с водолазом. Его вытащили, живого.
Так как историю слышал из третьих рук, то всех деталей случая не знаю
Глубины там не очень большие, поэтому может и не в декомпрессии дело, но в результате водолазу понадобилась кислородная подушка.
Город маленький, время позднее и его мало.
Сходу подушку не нашли ни в больнице, ни где либо ещё, родственники обзванивали всё что могли, от безысходности даже службу газа.
Не нашли, итог печальный.

Что бы теоретики ЛОРа посоветовали в таких случаях?

Update:
Больше интересен теоретический (физика/химия в домашних или почти домашних условиях) аспект дела, чем социально-экономический, всё-таки раздел форума у нас соответствующий

zolden
()

Параллельное выполнение скрипта по ssh

Форум — Development

В целях изучения питона и спортивного интереса делаю нечто вроде системы мониторинга с веб-интерфейсом
Python 2.6, сервер не имеет доступа в интернет, доустановка пакетов со сложными зависимостями (типа Paramiko) слишком геморройна, поэтому в идеале хотелось бы обойтись стандартной библиотекой
Пока что просто вывожу аптайм интересующих меня процессов.
Для единичного сервера это делается так

cat proc_uptime.sh | ssh server /bin/bash
Результат выглядит примерно так: 1324634 343245 546456 657567

Непосредственно в скрипте:

import commands
serverlist = [[] for i in range(SERVERS_NUM)]
for n in range(SERVERS_NUM):
    cmd = 'cat test.sh | ssh server' + str(n+1) + ' /bin/bash'
    serverlist[n] = commands.getoutput(cmd).split()

Т.е. получаем список списков, где для каждого сервера будет список аптаймов его процессов
Это всё даже работает и даже с приемлемой скоростью, но это пока все сервера в строю и нет ошибок.
При каких-то затыках с одним сервером в цикле у меня всё встанет колом.
Что я думаю нужно в идеале:
все запросы к серверам выполняются параллельно и отстреливаются на всякий случай после Х секунд неответа
Гугл подсказал мне для моего случая вполне подойдёт вариант с Popen
Но ман плохо раскуриваются и я так и не понял как мне с помощью Popen получить вывод скрипта в список (т.е. упорядоченно)
Лорогуру питона, посоветуйте мне полезных советов

UPDATE:
Что у меня пока получилось (Бог его знает насколько это канонично, феншуйно и надёжно, но ускорение почти линейное получилось)

    serverlist = ['server01','server02','server03','fake_test_server','server04','server05']
    running_procs = [Popen(['./wrapper.sh',server],stdout=PIPE, stderr=PIPE) for server in serverlist]
    d = defaultdict((lambda:['N/A','N/A','N/A','N/A','N/A']))
    while running_procs:
        for proc in running_procs:
            retcode = proc.poll()
            if retcode is not None: # процесс отработал
                res = proc.communicate()[0]
                if res:
                    d[res.partition(' ')[0]] = res.partition(' ')[2].split(' ')
                running_procs.remove(proc)
                break
            else: # процесс ещё работает, будем подождать
                time.sleep(.1)
                continue 

 , ,

zolden
()

Вытащить аптайм процесса по имени пользователя и названию процесса

Форум — Admin

Для наблюдения за аптаймом процесса использую вывод

ps -C process_name -o lstart=
всё хорошо работает, в случае если имя процесса уникально
Если же несколько пользователей запускают приложение, то получается чад кутежа во мгле ада
Меня интересует процесс конкретного пользователя, но вариант
ps -U username -C process_name -o lstart=
не срабатывает, ибо сцк выводит все процессы пользователя, т.е. ключ -C не применяется как фильтр
Я могу конечно заморочаться с грепами, но это неспортивно
Подскажи лор, есть ли красивый способ это сделать

 ,

zolden
()

Мониторинг сетевой активности процесса

Форум — Admin

Задача:
убедиться, что процесс не завис (+ничего не сломалось на другой стороне), а что-то реально гоняет по сети
Что именно гоняет это не так интересно, в принципе по растущим счётчикам Tx/Rx пакетов это вполне должно быть понятно.

Вопрос:
не хочу стрелять из пушки по воробьям, и использовать tcpdump/nethogs, хотелось бы чего то лёгкого, воздушного, пригодного для скриптования.
Подумал о парсинге /proc/$PID/net/* но сходу не понял за что там можно зацепиться.
ЛОР, посоветуй

 ,

zolden
()

Пропадает звук на ноуте

Форум — Desktop

Kubuntu 14.10
Со случайной периодичностью пропадает звук, обычно замечаю во время просмотра кино.
При этом в наушниках звук есть.
Гугл и лор указывает на pulseaudio, но не уверен, тот ли этот случай, ибо рестарт пульсы не помогает - лечится только ребутом.
В логах ничего про пульсу при этом нет, так что хз куда копать.
При переборе вариантов поставил pulseaudio 5 из PPA - никакой разницы

 

zolden
()

Регулярка для разбора лога

Форум — General

Тренируюсь в разбора логов на питоне и поставила меня в тупик ситуация с модификаторами повторения
Надо сматчить названия name1,name2,name3,name4 в следующем случае

	 [Id] = 123
	 строка
	 строка
	 строка
	 строка
	 строка
	 строка
	 [Number] = {total(4)}
	 [Element 1]- one = 1
	 [Element 1]- two = name1
	 [Element 2]- one = 3
	 [Element 2]- two = name2
	 [Element 3]- one = 5
	 [Element 3]- two = name3
	 [Element 4]- one = 14
	 [Element 4]- two = name4

Я было захардкодил регексп на 4 элемента и это работает, но потом обнаржил что количество таких совпадений может различаться.
В принципе количество можно брать из строки total, но пока пробую вариант с модификаторами числа повторений, идея вот такая:

\[Id\] = 123\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*(\[Element [0-9]\]\- first.*\n.*\[Element [0-9]\]\- second = (.*)){1,}
Но так не взлетело. Как это сделать по уму?

 

zolden
()

Удалить перевод строки перед паттерном

Форум — General

Есть длинный лог в котором встречаются записи такого вида:

timestamp hostname process Informational  YYYYYYYYYYYY  127.0.0.1  Match result. ID[12345] bla-bla-bla
	 [Policy] = 54321

Мне надо вытащить сопоставление всех ID и Policy (перебираю все записи по ID).
Всё было бы тривиально, если бы Policy находился на одной строке с ID
Очевидное решение - вытянуть Policy на предыдущую строку, для чего надо удалить предыдущий перевод строки (blah-blah-blah слишком вариативен и его трудно использовать в качестве паттерна, для удаления следующего перевода строки)
Вопрос собственно в том как это сделать
ping sdio, emulek

 ,

zolden
()

Вывод поста в одну страницу

Форум — Linux-org-ru

А напомните как смотреть топики со всеми комментами в одной странице, т.е. без пейджинга.
Какой-то вроде был параметр в URL

zolden
()

Гибконастраиваемая подсветка логов. Хочу.

Форум — General

Для разбора больших логов иногда применяю перловую конструкцию вида

echo -e "string1\nerror\nsuccess\nstring2\nfail" |\
    perl -p -e 's/(success)/\e[1;32;10m$&\e[0m/g;' -e 's/(error|fail)/\e[0;31;10m$&\e[0m/g'
чтобы подсветить success зелёным, ошибочные сообщения красным (остальные строки *тоже выводятся*, пусть и не так важны, поэтому grep не котируется)
Но в некоторых случаях было бы полезнее подсветить значения после маркера, а не сам маркер, т.е. в строках
Marker1: value1
Marker2: value2
надо подсветить value1 и value2, зная только имя маркеров.
На это моего знания perl/sed уже не хватает, плиз хелп

 ,

zolden
()

Изменение маршрута на blackhole

Форум — Admin

Для тестирования надо периодически убивать маршруты (заруливаю в blackhole для этого), но делать это двумя командами (ip r d существующий_маршрут;ip r a dest blackhole)скучно
Никак не могу раскурить ман на тему ip route replace (ip route change), чтобы изменить маршрут в blackhole (или в prohibit) одной командой, ни один вариант не проходит

mky, подскажико, а

 , ,

zolden
()

RSS подписка на новые темы