LINUX.ORG.RU

Сообщения Yur4eg

 

различие дистрибутивов, онлайн сервис

А есть ли такой сайт, чтобы вбить название сишной библиотеки и посмотреть какой версии она включена в разные дистрибутивы?

 

Yur4eg
()

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

Решил разобраться как работает Линукс low-level и при изучении столкнулся с тем что ничего не понимаю. Всегда думал что pts это такое устройство типо блочного с него идет и чтение команд и запись вывода одновременно. И вдруг внезапно в исходниках ядра есть drivers/tty/pty.c в котором описана функция pty_write() , а никакой pty_read() нету. Я перехватил эту pty_write() при помощи systemtap она выводит ввод и вывод, но ввод только после нажатия энтера, а мне бы получить все клавиши: вниз, вверх, удалить и тд. Тут даже не клавиши, а их коды, так как при подключении к серверу по ssh никаких кнопок на клавиатуре не нажимается.

 ,

Yur4eg
()

на что стоит поменять zabbix и puppet

Неспешно начинаю новый проект, будет пять а в течении года двадцать серверов. Время есть и решил я исследовать новые технологии, потому что к старым накопились претензии. Тот же паппет раздражает ужасно раздражает своим синтаксисом, современные конфиги тот же yaml на порядок выглядят чище, а во вторых эта централизация, хочется утилиты, которую изначально можно запускать как скрипт без всяких там агентов и серверов. Всем хорош Zabbix, но при большом количестве метрик, он начинает насиловать базу вставками, с другой стороны всякие нагиосы с какти, которые держат данные в rrd, а там есть эффект выравнивания из за уплотнения данных и прошлое нельзя просмотреть детально. Эта проблема как-то решена? И чтобы конфиги были текствые, без всяких там кликаний мышкой в веб морде.

 ,

Yur4eg
()

проверить убунту на руткиты

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

 

Yur4eg
()

геораспределенный кластер

Допустим у меня два сервера в разных ЦОДах, на них я развернул свой сервис и настроил репликацию всяких бэкендов. И вот у меня такой кластер в режиме active - passive.И я не могу понять один момент, а как пользователь подключающийся через интернет узнает что ЦОД1 лег. Схемы, которые я видел, предполагают наличие некого третьего балансировщика, на который вешается доменное имя, но подобная схемы мне не нравится тем, что этот третий учасник является единой точкой отказа

 

Yur4eg
()

sip kamailio и будущее телефонии

А есть ли на ЛОРе люди, которые настраивали kamailio (или как я его называю его каналья) для какой то цели, кроме посмотреть? По тегам шесть новостей за пять лет, что совсем не густо.

Тут хочется сделать лирическое отступление. За последние года три астериск из нишевого продукта стал чуть ли не стандартным софтом, который требуется к соискателю на должность линукс-админа. Тенденция к взаимопроникновению интернет и телефонных сетей, которая называется умным словом конвергенция, привела к тому что протокол SIP стал стандартом, выщемив традиционную ISDN телефонию с ее DSS1 и ОКС7. И в будущем эта тенденция продолжится.

Так вот что я хочу сказать. Настроив астериск, нельзя утверждать что знаешь SIP. На собеседовании могут срезать вопросом чем INVITE отличается от re-INVITE или зачем нужно поле branch. Для всего этого нужно уметь работать на более низком уровне, так что организуем пропогандистскую группу. Думаю на ЛОРе давно пора сделать подфорум по VoIP

 , ,

Yur4eg
()

а как вы инициализируете переменные

Я тут пишу примеры на питоне, но все о чем я говорю подходит и для других языков. Темя пятничная, поэтому комментарии о том, что в вашем любимом языке вообще нет операции присваивания думаю будут вполне уместны. Своих комментарии пока давать не буду, только номера

1.

if 'direct-dial' in menu_cfg and menu_cfg['direct-dial']:
    max_digits = 4
else:
    max_digits = 1
2.
max_digits = 1
if 'direct-dial' in menu_cfg and menu_cfg['direct-dial']:
    max_digits = 4
3.
max_digits = 4 if 'direct-dial' in menu_cfg and menu_cfg['direct-dial'] else 1
Впринципе еще можно через исключения, по принципу попробуй как хочешь, а если не получится, то сделай по умолчанию. Но изза того, что я специально выбрал двусоставное условие код выглядит совсем не очень.

 

Yur4eg
()

не клиент серверный puppet

Врубаюсь в puppet и настроил себе клиента и сервера на одном компьютере, но так и не понял одну вещь. Можно ли мне запустить манифест папета тупо как скрипт, без серверной части вообще?

 

Yur4eg
()

питон замыкания

Поясните мне логику питона. Функция x1() выводит 1, а x2() вообще падает с ошибкой reference before assigment. Получается что я из вложенной функции имею только доступ на чтение к переменным «родительской» функции?

def x1():
    def y():
        z = 3
    z = 1
    y()
    print z

def x2():
    def y():
        print z
        z = 3
    z = 1
    y()
    print z

x1()
x2()

 

Yur4eg
()

прочитать JSON файл из скрипта на bash

Понадобился мне на днях добавить некий скрипт в крон. Загвоздка в том, что я хочу брать настройки, у меня это доступ к ftp, из json файла некой программы. Изобразил я такой код

X=$(cat $1 | python -c '
import sys
import json
try:
    ftp = json.load(sys.stdin)["ftp"]
except Exception as why:
    print "PARSE_ERR=\"{0}\"".format(why)
    exit(1)
print "FTPHOST={host}\nUSER={user}\nSECRET={password}".format(**ftp)
')

eval $X

Но скрипт на питоне внутри скрипта на баше это как-то меня смущает. Как тру баш-кодеры, а они на ЛОРе есть, я знаю, решают подобную задачу. Есть ли общепринятые инструменты? Что говорит нам POSIX?

 , ,

Yur4eg
()

посмотреть список подключенных по локалхосту программ

Хочется увидеть название клиентов mysql, я начал писать универсальную версию так

# netstat  -a4pn | grep mysqld
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:47523         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:58317         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:58136         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:56409         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:51914         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:58138         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:54747         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:41219         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:40179         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:58151         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:55759         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:52844         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:40230         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:44663         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:36689         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:37666         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:58137         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:44327         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:37710         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:55407         ESTABLISHED 19285/mysqld
tcp        0      0 127.0.0.1:3306          127.0.0.1:36317         ESTABLISHED 19285/mysqld


Есть еще команда посмотреть сокеты ss -apn но как все свести я затупил

 , ,

Yur4eg
()

Питон, юникод и конвеер

Есть программа test_u.py

# -*- coding: utf-8 -*-

s = u"Вася"
print u"Hello {0}".format(s)

При этом

$ python test_u.py
Hello Вася
$ python test_u.py | cat
Traceback (most recent call last):
  File "test_u.py", line 7, in <module>
    print u"Hello {0}".format(s)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-9: ordinal not in range(128)

Проверял на верссиях 2.6 и 2.7

 ,

Yur4eg
()

материнка на arm

Может кто подскажет, нужна плата с двумя сетевушками и чтобы под нее был linux и toolchain. Или сайт подскажите, где можно повыбирать, а то материнки на arm как то хреново гуглятся. В основном платки с андроидом на борту.

 

Yur4eg
()

оптимизация с march=native

Собрал себе бинарный пакет asterisk на процессоре celeron, а запускать надо в том числе и на атоме. Вылетает с ошибкой invalid opcode.

Нашел в инете некую команду

 echo | gcc -dM -E - -march=native
Изучение ее выхлопа показало что у атома нет следующих строк
 #define __SSE4_1__ 1
 #define __SSE4_2__ 1
 #define __PCLMUL__ 1

Вопрос это можно как-то аккуратно отключить чтобы мне не плодить бинарные сборки

 

Yur4eg
()

таймаут в скрипте

Как изнутри bash скрипта выставить таймаут, чтобы он если затупит, то принудительно сам себя завершил через минуту.

 ,

Yur4eg
()

bash как вернуть строку из функции

Решил структурировать скрипт-портянку, но столкнулся с такой штукой, что директива return принимает число и заполняет им переменную $?

На ум пришло создание глобальной переменной для передачи данных, но за такой рефакторинг Фаулер бы руку не пожал. Еще вариант это использовать конвеер, но выглядит как-то не очень.

f1(){
    echo "str1"
}


if [[ $(f1) == "str1" ]]; then
    echo this is good
fi

 ,

Yur4eg
()

ruby `require': cannot load such file

Нужна помощь рубиста. Скачал я c гитхаба некий скрипт https://github.com/zimbatm/jsonpp

Но при запуске он падает с трассировкой

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- /usr/local/okjson.rb (LoadError)
	from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
	from /usr/local/bin/jsonpp:4:in `<main>'

Интуиция подсказывает что ему не хватает какой-то библиотеки, но вот как ее поставить и почему он ищет в /usr/local ?

 ,

Yur4eg
()

объясните fork

Есть простой скрипт fork.py

#!/usr/bin/python

import os

print "start"
if os.fork() == 0:
    print "fork"
print "finish"
yur4@homebox:~ $ ./fork.py 
start
finish
fork
finish

А вот вывод через пайп неожиданный.

yur4@homebox:~ $ ./fork.py |cat
start
finish
start
fork
finish

 ,

Yur4eg
()

мониторинг потребления ресурсов процессами

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

* * * * *  ps axu >> /var/log/ps.log
вывод которого потом парсится простеньким скриптом.

Но крон запускается раз в минуту, а хотелось бы раз в несколько секунд. И второе хотелось бы знать потребление процессора не в процентах чего-то, а в тиках или что там в современном ядре, ну и так же точные данные по памяти и дисковому вводу выводу. Нужна простая программа или скрипт, которая не потянет за собой вебсервер, базу данных и что-то еще. Может на cgroups есть какое нибудь решение.

Yur4eg
()

libvirt с чего начать

Годами использую kvm, для удобства он оброс кучей скриптиков на шелле, но чтобы не отстать безнадежно, решил освоить какую нить современную систему управления виртуалками в рамках одной машины, облачные решения не интересуют.

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

Еще хочется пошаговый гайд, как создавать виртуалки, давать им доступ к сети, дискам, делать снапшоты клонировать. Лучше книжку, но урлы тоже приветствуются. У libvirt обширная вики, но с какого места ее читать я сходу не вкурил.

 , ,

Yur4eg
()

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