Метка «bash» - 2

До недавнего времени в качестве VoIP аппаратов мы использовали продукцию Fanvil. И в целом всем были довольны. Управление из единой точки есть, качество связи удовлетворительное, но оставалось ощущение какой-то незаконченности или даже недосказанности (понимайте как хотите :))) В общем поиск «идеального телефона» в фоновом режиме, но все время продолжался. И вот мне в руки попал Grandstream GXP1165. Имея более именитого производителя данная модель находится в той же ценовой категории, что и китайские Fanvil-ы. Обладает всеми необходимыми функциями и имеет более интуитивное обозначение на кнопках и портах подключения. Кроме того, с некоторых пор, одним из решающих факторов при выборе IP телефона для меня является функция авто провижинга. Данная модель grandstream его обещала. Об этом дальше и пойдет речь.
Читать полностью »

imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
Читать полностью »

в 9:36, , рубрики: bash, linux, метки:

Это не статья, а краткий how to по кастомизации bash'a.
Думаю каждый, не очень опытный, пользователь производных от линукса систем работает с консолью, и иногда сталкивается с разными проблемами или неудобностями. Однажды, точнее сегодня утром, я подумал «хватит это терпеть» и нагуглил путь к интересному файлу, который помог мне решить все мои проблемы:
~/.bashrc
Если вы о нем не знали, то загляните под кат, там найдете пару костылей

Небольшое оглавление:

1. Подсветка
2. Алиасы
3. Функции
3. Все сломалось, как вернуть?

Читать полностью »

в 9:22, , рубрики: bash, linux, pipe, метки: , ,

Pipe — что это?

Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:

cmd1 | cmd2 | .... | cmdN

Например:

$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика

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

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг

Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:

$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...

Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать полностью »

Шахматы на чистом sed В Линуксе и многих других системах существует утилита командной строки sed («сед») — это несложный редактор, которые преобразует текст, попадающий ему на вход при помощи несложных команд.

Его, в основном, используют для всяких мелких нужд в bash-скриптах — заменить одну строку на другую, что-то удалить и так далее. Если говорить терминами более привычных языков, в «седе» доступны две строковые переменные, в одной из которых можно что-нибудь проверять, заменять, а со второй только обмениваться данными из первой, метки, команды переходов на метки и группировка команд, плюс ещё несколько менее полезных.

Вот на этом безобразии я решился написать шахматы, причём такие, чтобы можно было бы играть с компьютером.
Читать полностью »

в 8:59, , рубрики: bash, ESX, ESXi, виртуализация, метки: , ,

Руководство в конторе, где я работаю, поставило задачу отработать автоматическое выключение серверов, когда бесперебойник переходит на работу от аккумуляторов. Часть серверов бегает на windows (о них я даже не думал) и часть на esx/esxi, которые беспокоили меня больше всего, ибо опыта работы с никсами у меня очень и очень мало, особенно написания всяческих скриптов. Но задача поставлена и надо ее решать.
Начал потихоньку изучать этот вопрос, и я прям обрадовался, когда вышел на бинарник в esxi 5.x powerOffVms, который завершает работу гостевых систем при включенной у них соответствующий опции. Но энтузиазма поубавилось, когда такой штуки не обнаружилось в esx версии. В общем, было принято решение реализовать эту фичу на bash в esx (как раз понять, чем он и для чего дышит).

Все, что пойдет сейчас ниже, может быть реализовано различными способами, которые, возможно, будут правильнее, но кидать задуманное уже не хотелось.
Читать полностью »

… имеется три типа драконов: нулевые, мнимые и отрицательные. Все они не существуют, однако каждый тип — на свой особый манер. Мнимые и нулевые драконы, называемые на профессиональном языке мнимоконами и нульконами, не существуют значительно менее интересным способом, чем отрицательные.
Станислав Лем,
Кибериада

Преамбула

Конструктивной критики статьи «Проблемы слияния записей в сложносвязанной таблице Oracle» пост. Попытаемся проанализировать методы решения задачи выявления пола человека на основе его клиентских данных в БД Oracle.
Читать полностью »

Этот простой скриптик может пригодиться когда хочется, ничего специально не настраивая, запустить проект на выполнение прям из Vim по клавише F5, когда открыт файл из любой поддиректории.
Читать полностью »

imageДоброго времени суток читатели! Всё началось с того, что работая удалённо в терминале понадобилось перезагрузить сервер. Толи день не задался, толи мысли были о чём-то другом и вместо команды:
sudo shutdown -r now
отправил его отдыхать после нелёгкого рабочего дня, командой:
sudo shutdown now Enter
И всё произошло машинально и так быстро, что даже сам не успел понять. Понимание стало приходить минут через 15-20, после безудержных попыток подключится удалённо к терминалу. И думаю даже не стоит говорить о том как далеко находился сервер, и добраться до него было практически невозможно. После долгих телефонных разговоров и объяснений куда кому пойти, и что где нажать, сервер всё же вернулся в рабочий ритм. После чего и появилась идея о включении сервера удалённо.
Читать полностью »

Доброго времени суток, Хаброчитатель!

Возникла у меня необходимость перевести интерфейс одной системы. Перевод для каждой формы лежит в отдельном XML-файле, а файлы группами разбросаны по папкам, что очень неудобно. Решено было создать единый словарь, чтобы в Excel’е работать с переводом всех форм. Данная задача в свою очередь разбивается на 2 подзадачи: извлечь информацию из всех XML-файлов в один CSV-файл, после перевода из CSV-файла создать XML-файлы с прежней структурой. В качестве инструментов были выбраны bash и awk. Первую подзадачу описывать смысла нет, так как она достаточно тривиальная. А вот как распарсить CSV-файл?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js