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


Перезагрузка от непривилегированного пользователя в embedded ОС Busybox

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

Вот только столкнулся я со сложностью управления iptv stb приставкой MAG 250 Micro. Работает она под linux с использованием busybox. Главной задачей было настроить удаленную перезагрузку и на этом я остановился на три дня. Как я решил эту задачу, описано в этом совете. Думаю что это решение применимо для многих устройств со встроенным linux.

4
Ваша оценка: Ничего Рейтинг: 4 (2 голоса)

PBS и LDAP

При аутентификации на ноды кластера по ldap, pbs-клиенты перестают выполнять задания. В логах видим сообщения о прерывания связи с pbs-сервером. Лечим увеличением количества подключений pbs-клиента к серверу:

echo "$ext_pwd_retry 5" >> /var/spool/torque/mom_priv/config # по умолчанию - 3

Настройка ldap-а для аутентификации на нодах - opennet.ru.

Вычислительный кластер в домашних условиях

Вычислительные кластеры (Beowulf) используются в вычислительных целях: их применение позволяет уменьшить время расчетов по сравнению с персональным компьютером разбиением задачи на параллельно выполняющиеся подзадачи, обменивающиеся данными по сети. Конфигурация такого кластера проста и относительно недорога – связанные сетью персоналки с операционной системой линукс на борту.

В данной статье будут рассмотрены основы создание высокопроизводительного вычислительного кластера на основе операционной системы Debian GNU/Linux. Кому это может быть полезно? Если Вы занимаетесь параллельными вычислениями, используете библиотеки MPI в своих программах или моделях, то непременно Вам.

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

linux bash: kill service on port

Кто-то для того, что бы убить процесс - матчит имена процесса по строкам в ps и grep -v grep. Вот же повезло пользователю с ником grepulya!

По хорошему - процесс хранит свой pid в залоченом файле.

Если не хранит, но мы знаем какой порт хотим освободить:

Прямой способ:

$ fuser -n tcp [номер порта] -k

Объединяем кирпичики:

$ netstat -lntp | grep -E '^tcp +[^ ]+ +[^ ]+ +[^ ]+:2013' | awk '{print $7}' | grep '^[0-9]\+' -o | xargs -r kill
$ netstat -lntp - listening, numeric output, TCP, show processes

xargs, флаг -r ... - не звать аргумент, если stdin пустой.
находим в выводе pid процесса, и грохаем его.

0
Ваша оценка: Ничего

Переключение из командной строки системы вывода звука

# Получить список устройств вывода звука

$ pacmd list-sinks | egrep -o "(device.description.*|index:.*)"

# Выбрыть устройство вывода звука, где 0 и 1 индексы устройств

$ pacmd pacmd set-default-sink 0
$ pacmd pacmd set-default-sink 1

Проверено в Ubuntu 11.10.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
banda аватар

Настройка кэширующего сервера pdnsd

Кэширующый сервер pdnsd позволяет быстро разрешать интернет адреса — в данном случае при первом обращении к сайту, его IP записывается во внутреннюю базу pdnsd или как говорится pdnsd -- это IPv6 совместимый сервер DNS прокси с постоянным кешированием (содержимое кэша записывается на жёсткий диск при выходе), разработанный для обеспечения работоспособности при недостижимых или выключенных DNS-серверах (например, при подключении к сети через коммутируемый удаленный доступ)
После перегрузки база адресов сохраняется.
И так создадим свой собственный DNS сервер в сети (или локальной машине).

0
Ваша оценка: Ничего
ramok аватар

Удалить сломаные символические ссылки

Удалить все сломаные символические ссылки в текущей директории и поддиректориях
bash

find . -type l ! -xtype f ! -xtype d -delete

zsh

rm **/*(-@)
0
Ваша оценка: Ничего
romy4 аватар

Фильтрация stderr без слития с stdout

Сделав два раза swap и между ними grep - мы добиваемся желаемого, фильтруем stderr (почти) без побочных эффектов.

( prog 3>&2 2>&1 1>&3 | grep -v "лишний warning который нельзя отключить" ) 3>&2 2>&1 1>&3

----------------
ликбез:
Когда мы пишем в bash prog X>&Y , то перед запуском происходит присваивание
file_descriptors[X] = file_descriptors[Y]
Присваивания происходят в порядке написания, через них можно сделать swap дескрипторов:

prog 3>&2 2>&1 1>&3
0
Ваша оценка: Ничего
ramok аватар

Как устроен .deb пакет

Как устроен .deb пакет

0
Ваша оценка: Ничего
ramok аватар

Пройти свой путь до конца...

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

Яркий пример это Debian alternatives system. Эта подсистема позволяет использовать однотипные программы под одним и тем же именем, в зависимости от предпочтений. И основана она на символических ссылках.

Помочь в этом может команда namei.
Например что бы узнать куда в результате указывает x-terminal-emulator можно сделать так

$ namei $(which x-terminal-emulator)
f: /usr/bin/x-terminal-emulator
 d /
 d usr
 d bin
 l x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
   d /
   d etc
   d alternatives
   l x-terminal-emulator -> /usr/bin/urxvt
     d /
     d usr
     d bin
     - urxvt

Хотя если разобраться в системе альтернатив, то можно найти другую команду:

$ update-alternatives --config x-terminal-emulator 
4.666665
Ваша оценка: Ничего Рейтинг: 4.7 (3 голоса)
romy4 аватар

Статистика tcp соединений

netstat -npat|grep ESTABLISHED |
  awk 'BEGIN{counter=0;} {split($5,a,":");ip=a[1];if(ip in ips)ips[ip]+=1;else ips[ip]=1;counter++;} END{for(i in ips)print i" = "ips[i]"\n"}'|
  sort | grep -vP '^\s*$'

Если убрать grep ESTABLISHED, то это добавит список ожидающих соединений.
Если оставить netstat -n то добавятся UDP

2
Ваша оценка: Ничего Рейтинг: 2 (1 vote)
ramok аватар

sed и локализаци или "почему .* не работает так как надо"

Небольшая головоломка Ж:-)

Почему эта команда

$ wget -qO- "http://farmanager.com/download.php?l=ru" |
    sed -rn 's#.*href="(files/Far20[^"]+7z).*#http://farmanager.com/\1#p'


выводит мусор, вместо предполагаемого

4.5
Ваша оценка: Ничего Рейтинг: 4.5 (2 голоса)
ramok аватар

Путь начинающийся с двойного слеша

Наверное многие замечали "баг" bash/zsh в существовании "двойного root".

$ cd //
$ pwd
//
$ /bin/pwd
/

Это не ошибка, а буквальное следование стандарту POSIX (IEEE Std 1003.1-2001. 4.11 Pathname Resolution ), в котором говорится:

Цитата:

A pathname that begins with two successive slashes may be interpreted in an
implementation-defined manner, although more than two leading slashes shall be
treated as a single slash.

То есть два слеша в начале пути может быть интерпретировано в зависимости от системы. Например в cygwin таким образом можно адресовать windows share. В linux // никакого значения не имеет.

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)
ramok аватар

Слияние двух деревьев каталогов

Перемещал я как то огромное дерево каталогов из одной директории в другую. Так как директории были на windows share, то дело было долгим и в процессе были проблемы со связью и перенос прервался.
В результате у меня оказалось частично перенесённое дерево каталогов большой вложенности. Запустить опять mv я не мог, так как mv не позволяет "сливать" такие директории. cp -r тоже не спасал, так как лишнего места не было.

Выход нашелся с помощью команды rsync с ключиком --remove-source-files.

$ rsync --remove-source-files -r bak1/* ~/backup/bak1
0
Ваша оценка: Ничего
ramok аватар

tar + ssh

GNU tar умеет создавать архив на удалённой системе через ssh

$ tar --rsh-command=/usr/bin/ssh -jcvf host:/tmp/archive.tar.bz2 dir-or-files
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текст в картинку (делаем скриншот консоли)

Учитываются системные шрифты, а вот цветовые схемы консоли не работают

$ ifconfig | convert label:@- ip.png
$ ping -c 5 ya.ru | convert label:@- ya.png
$ echo "Hello World" | convert label:@- hello.png
5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)
FrBrGeorge аватар

Активация странных кнопок ноутбука

Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текстовые браузеры

Новички когда устанавливаете Arch и вы еще не дошли до установки DE, но уже настроили интернет, не забывайте про консольные(текстовые) браузеры: lynx, elinks, w3m, links. Это всегда поможет когда вам надо заглянуть в арчвики.

0
Ваша оценка: Ничего

Краткий ликбез по меткам и (без)условным переходам в sed

sed во многом аналогичен специфичному диалекту ассемблера. Он предоставляет для работы два регистра - "pattern space" и "hold space". Во многом эти регистры аналогичны регистрам обычного процессора, типа EAX или EBX x86-ой архитектуры, но специфичных тем, что хранят они не некое 32-битное число, а некую строку текста. В любой конкретный момент возможна работа только с одним регистром, являющимся текущим. Переключать текущий регистр можно с помощью команды x. Так же, sed предоставляет механизм "меток", тоже аналогичный lable'ам ассемблеров, включая возможность условного и безусловного переходов к заданным меткам, что делает sed тьюринг-полным языком программирования.

Работают они следующим образом:

Создание метки:

:имяметки

Метка создаётся посредством оператора : со следующим именем метки. Именно это имя будет использоваться при условных и безусловных переходах

Переходы:
Безусловный:

bимяметки
0
Ваша оценка: Ничего
itakingiteasyyuyuyu аватар

Конфигурация ядра linux и сопутсвующих драйверов для Asus Eee PC 1215P

Конфигурация ядра 2.6.38 с патчами tuxonice на EeePC 1215P.

0
Ваша оценка: Ничего