различие дистрибутивов, онлайн сервис
А есть ли такой сайт, чтобы вбить название сишной библиотеки и посмотреть какой версии она включена в разные дистрибутивы?
А есть ли такой сайт, чтобы вбить название сишной библиотеки и посмотреть какой версии она включена в разные дистрибутивы?
Решил разобраться как работает Линукс low-level и при изучении столкнулся с тем что ничего не понимаю. Всегда думал что pts это такое устройство типо блочного с него идет и чтение команд и запись вывода одновременно. И вдруг внезапно в исходниках ядра есть drivers/tty/pty.c в котором описана функция pty_write() , а никакой pty_read() нету. Я перехватил эту pty_write() при помощи systemtap она выводит ввод и вывод, но ввод только после нажатия энтера, а мне бы получить все клавиши: вниз, вверх, удалить и тд. Тут даже не клавиши, а их коды, так как при подключении к серверу по ssh никаких кнопок на клавиатуре не нажимается.
Неспешно начинаю новый проект, будет пять а в течении года двадцать серверов. Время есть и решил я исследовать новые технологии, потому что к старым накопились претензии. Тот же паппет раздражает ужасно раздражает своим синтаксисом, современные конфиги тот же yaml на порядок выглядят чище, а во вторых эта централизация, хочется утилиты, которую изначально можно запускать как скрипт без всяких там агентов и серверов. Всем хорош Zabbix, но при большом количестве метрик, он начинает насиловать базу вставками, с другой стороны всякие нагиосы с какти, которые держат данные в rrd, а там есть эффект выравнивания из за уплотнения данных и прошлое нельзя просмотреть детально. Эта проблема как-то решена? И чтобы конфиги были текствые, без всяких там кликаний мышкой в веб морде.
Сегодня утром подломили сервак, залили эксплоит и пытались получить рута, но к счастью он не сработал, ось была свежая. Сбойный сервис я отключил, но что-то мучает меня паранойя. Как мне проверить что у меня все бинарники и ядро у меня не модифицированные.
Допустим у меня два сервера в разных ЦОДах, на них я развернул свой сервис и настроил репликацию всяких бэкендов. И вот у меня такой кластер в режиме active - passive.И я не могу понять один момент, а как пользователь подключающийся через интернет узнает что ЦОД1 лег. Схемы, которые я видел, предполагают наличие некого третьего балансировщика, на который вешается доменное имя, но подобная схемы мне не нравится тем, что этот третий учасник является единой точкой отказа
А есть ли на ЛОРе люди, которые настраивали kamailio (или как я его называю его каналья) для какой то цели, кроме посмотреть? По тегам шесть новостей за пять лет, что совсем не густо.
Тут хочется сделать лирическое отступление. За последние года три астериск из нишевого продукта стал чуть ли не стандартным софтом, который требуется к соискателю на должность линукс-админа. Тенденция к взаимопроникновению интернет и телефонных сетей, которая называется умным словом конвергенция, привела к тому что протокол SIP стал стандартом, выщемив традиционную ISDN телефонию с ее DSS1 и ОКС7. И в будущем эта тенденция продолжится.
Так вот что я хочу сказать. Настроив астериск, нельзя утверждать что знаешь SIP. На собеседовании могут срезать вопросом чем INVITE отличается от re-INVITE или зачем нужно поле branch. Для всего этого нужно уметь работать на более низком уровне, так что организуем пропогандистскую группу. Думаю на ЛОРе давно пора сделать подфорум по VoIP
Я тут пишу примеры на питоне, но все о чем я говорю подходит и для других языков. Темя пятничная, поэтому комментарии о том, что в вашем любимом языке вообще нет операции присваивания думаю будут вполне уместны. Своих комментарии пока давать не буду, только номера
1.
if 'direct-dial' in menu_cfg and menu_cfg['direct-dial']:
max_digits = 4
else:
max_digits = 1
max_digits = 1
if 'direct-dial' in menu_cfg and menu_cfg['direct-dial']:
max_digits = 4
max_digits = 4 if 'direct-dial' in menu_cfg and menu_cfg['direct-dial'] else 1
Врубаюсь в puppet и настроил себе клиента и сервера на одном компьютере, но так и не понял одну вещь. Можно ли мне запустить манифест папета тупо как скрипт, без серверной части вообще?
Поясните мне логику питона. Функция 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()
Понадобился мне на днях добавить некий скрипт в крон. Загвоздка в том, что я хочу брать настройки, у меня это доступ к 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?
Хочется увидеть название клиентов 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 но как все свести я затупил
Есть программа 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
Может кто подскажет, нужна плата с двумя сетевушками и чтобы под нее был linux и toolchain. Или сайт подскажите, где можно повыбирать, а то материнки на arm как то хреново гуглятся. В основном платки с андроидом на борту.
Собрал себе бинарный пакет asterisk на процессоре celeron, а запускать надо в том числе и на атоме. Вылетает с ошибкой invalid opcode.
Нашел в инете некую команду
echo | gcc -dM -E - -march=native
#define __SSE4_1__ 1
#define __SSE4_2__ 1
#define __PCLMUL__ 1
Вопрос это можно как-то аккуратно отключить чтобы мне не плодить бинарные сборки
Как изнутри bash скрипта выставить таймаут, чтобы он если затупит, то принудительно сам себя завершил через минуту.
Решил структурировать скрипт-портянку, но столкнулся с такой штукой, что директива return принимает число и заполняет им переменную $?
На ум пришло создание глобальной переменной для передачи данных, но за такой рефакторинг Фаулер бы руку не пожал. Еще вариант это использовать конвеер, но выглядит как-то не очень.
f1(){
echo "str1"
}
if [[ $(f1) == "str1" ]]; then
echo this is good
fi
Нужна помощь рубиста. Скачал я 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 ?
Есть простой скрипт 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
Есть некая программа, и надо бы понаблюдать за ней. Сейчас сделал в крон
* * * * * ps axu >> /var/log/ps.log
Но крон запускается раз в минуту, а хотелось бы раз в несколько секунд. И второе хотелось бы знать потребление процессора не в процентах чего-то, а в тиках или что там в современном ядре, ну и так же точные данные по памяти и дисковому вводу выводу. Нужна простая программа или скрипт, которая не потянет за собой вебсервер, базу данных и что-то еще. Может на cgroups есть какое нибудь решение.
Годами использую kvm, для удобства он оброс кучей скриптиков на шелле, но чтобы не отстать безнадежно, решил освоить какую нить современную систему управления виртуалками в рамках одной машины, облачные решения не интересуют.
Поэтому ищу рекомендаций кто чем пользуется. Хочется что-то распространненое, желательно промышленный стандарт, как я понял после недолгого гугления это libvirt, еще хочется чтобы был и консольный интерфейс и вебинтерфейс одновременно.
Еще хочется пошаговый гайд, как создавать виртуалки, давать им доступ к сети, дискам, делать снапшоты клонировать. Лучше книжку, но урлы тоже приветствуются. У libvirt обширная вики, но с какого места ее читать я сходу не вкурил.
следующие → |