Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Основы BASH. Часть 1

Настройка Linux *
Tutorial
Безусловно, все те кто общается с ОС Linux хоть раз да имели дело(во всяком случае слышали точно) с командной оболочкой BASH. Но BASH не только командная оболочка, это еще и превосходный скриптовый язык программирования.
Цель этой статьи — познакомить поближе юзеров с bash, рассказать про синтаксис, основные приемы и фишки языка, для того чтобы даже обычный пользователь смог быстренько написать простой скрипт для выполнения ежедневной(-недельной, -месячной) рутинной работы или, скажем, «на коленке» наваять скриптик для бэкапа директории.
Читать дальше →
Всего голосов 146: ↑135 и ↓11 +124
Просмотры 1.1M
Комментарии 114

Пароли для ленивых

Информационная безопасность *
Недавно один из провайдеров, где я арендую выделенные сервера, был взломан. Нанесенный ущерб был достаточно невелик, благо бэкапы делаются ежедневно. С другой стороны — менять пароли на несколько десятков аккаунтов бессонной ночью перед отпуском это тоже занятие не из радостных.

Идея автоматизации смены паролей свербила мозг довольно долго, несколько хабратопиков подтолкнули в нужном направлении. Идея была простой — менять пароли насколько можно часто (например — каждый день), чтобы даже если кто-то и заполучил пароль из переписки двухдневной давности — с ним уже ничего нельзя было сделать. В идеале — система должна генерировать и менять пароль сразу перед ежедневным бэкапом каждого аккаунта.
Читать дальше →
Всего голосов 17: ↑11 и ↓6 +5
Просмотры 4.4K
Комментарии 22

Распараллеливание задач в Linux

Настройка Linux *
Потребовалось мне перекодировать некоторое количество видео-файлов. Для этого я написал следующий сценарий:

#!/bin/bash

recode() {
mencoder -o $2 $1 -ovc x264 -x264encopts bitrate=22000:keyint=50 -oac mp3lame -lameopts vbr=3:br=320 -fps 50
}
recode input/00108.mts 00108.avi
recode input/00109.mts 00109.avi
...
...


Казалось-бы все готово, но я заметил, что загружен только один процессор из двух, а это значит, что этот процесс можно ускорить, раза в два.
Читать дальше
Всего голосов 103: ↑95 и ↓8 +87
Просмотры 9.8K
Комментарии 58

GMail — проверка новых писем из командной строки

*nix *
Не будем тянуть кота за хвост. Сразу к делу

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | wc -l

Результатом будет количество новых писем у вас в ящике.

Читать дальше →
Всего голосов 123: ↑113 и ↓10 +103
Просмотры 5.4K
Комментарии 95

в KDE 4 убрали kdict

Чулан
в KDE4 убрали kdict, в связи с неактивностью автора.
плазмоид не совсем то, что хотелось бы.(да и не заработал он у меня). пришлось выкручиваться своими силами.
плодить лишние сущности не хотелось.
поэтому идем по unix-way(маленькие программки которые делают свое дело ну и пайпы естественно)
меня интересовала возможность быстро перевести слово для этого его достаточно выделить. и слово будет в буфере.
и по Meta+K вызывается вот такой вот скрипт:

#!/bin/bash
TEXT=`xclip -f -o`
kdialog --passivepopup "`dict $TEXT|head -n 50`"


простенько и со вкусом
xclip -f -o
выкидывает нам содержимое буфера обмена на stdout
kdialog умеет много разного
dict $TEXT собственно опрашивает dict сервер
а head -n 50 ограничивает количество строк в 50.
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 201
Комментарии 0

Настройка IPv6 или IPv6 в массы

Системное администрирование *IPv6 *
image

UPDATE: Так как все это писалось давно, то смысл использовать скрипты сильно теряется, осталось ради истории.
Все можно и наверно лучше настроить через inadyn.
Синтаксис файла конфигурации примерно такой:

dyndns_system ipv6tb@he.net
username es1125cc87b23bfe1f3ba8923ca7f2ee
password PASS-WORD
alias 10220

На Habrahabr уже существуют статьи по настройке IPv6, например тут и тут. и тут
Сам я рекомендую почитать version6, там примеры зачем это надо.

Я же решил сделать процесс поднятие туннеля более универсальным и автоматизированным…
Для этого я написал два простых скрипта, но ..., давайте по порядку.
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 41K
Комментарии 8

Бэкап на linux

Чулан
В один прекрасный день мне понадобился скрипт бэкапов. Рассматривал большое количество различных вариантов. Многие не устроили по причине громоздкости. В итоге я написал свой скрипт :)

Для бэкапа сайтов на веб-сервере — очень полезно и просто :) Пожелания по улучшению — приветствуются

Код тут
Всего голосов 18: ↑7 и ↓11 -4
Просмотры 851
Комментарии 15

Учим ПК разговаривать

Настройка Linux *
Для тех, у кого дома есть стационарный компьютер аля «home сервер». Предлагаю вашему вниманию одну интересную функцию, которую под силу реализовать многим.

Типичные задачи для такой машинки:
  • Медиа-центр
  • Torrent-качалка
  • Файловым хранилище
  • Репозиторий
Возложим на него еще одну задачу — человеческим голосом сообщать нам разные интересные вещи…
Читать дальше →
Всего голосов 77: ↑70 и ↓7 +63
Просмотры 15K
Комментарии 43

Screen Shot script

Настройка Linux *
image Всем доброго времени!
В один прекрасный момент меня достало:
  1. Нажимать PrintScreen
  2. Искать место куда же его сохранить
  3. Открывать сервис imageshack\radikal\хабр-эффект
  4. Искать на диске, куда же я сохранил все таки именно этот скриншот
  5. Копировать полученную ссылку, и делать с ней .....

Теперь я делаю:
  1. Нажимаю Ctrl+/
  2. Копирую полученную ссылку и делаю с ней .....

Неправдо ли лучше? И вас это тоже достало? Тогда лезем под кат!
Читать дальше →
Всего голосов 71: ↑45 и ↓26 +19
Просмотры 7.6K
Комментарии 83

Автоматизация создания виртуального хоста для web-разработки на базе Apache+Nginx

Nginx *

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


Так уж сложилось, что для web-разработки я использую отдельный сервер на базе Debian. В первую очередь это обусловлено тем, что я часто работаю вне дома, а так-же это позволяет совместно работать над проектом с коллегами.
Раньше мне приходилось вручную создавать директории для сайта, копировать и править конфиги. Я тратил на это кучу времени и иногда ошибался, а потом судорожно искал где и что я упуслил.

Не так давно я задумался над автоматизацией процесса создания виртуальных хостов. Порыв немного в интернетах, и заодно вспомнив bash, родился скрипт, который избавил меня от рутины и ошибок одновременно.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 9.6K
Комментарии 34

Как узнать какие порты на коммутаторах уже не используются

Системное администрирование *
Из песочницы
Чуть больше года назад столкнулся с проблемой, знакомой, наверное, каждому админу: в одном из коммуникационных шкафов закончились почти все свободные порты. Визуально было видно, что почти к каждому порту подключён кабель, свободных осталось только один-два порта, а требовалось подключить около десяти новых девайсов.

Мне было чётко ясно, что на самом деле используются не все порты: какие-то, скорее всего, подключали временно, а затем забыли отключить, сетевые принтеры могли переместить и подключить к другому коммутатору, часть портов были подключены для пользователей, за время сменивших свои кабинеты, и т.д.

Отключение неактивных портов было неприемлемо, так как то, что какой-то порт в данный момент не активен, не говорит о том, что он не использовался 10 минут назад, а пользователь просто отключил свой компьютер, и, скажем, уехал на встречу.
Читать дальше →
Всего голосов 60: ↑56 и ↓4 +52
Просмотры 45K
Комментарии 62

Экстремальное восстановление данных с деградировавшего 5го рейда

Восстановление данных *
Из песочницы

Написано на реальных событиях.


Любое повторение действий и необдуманные решения могут привести к полной утрате данных. Не для HowTo-шников, данный материал лишь для воссоздания картины о представлении данных на дисковых носителях.

Итак, приступим. Вводные данные:
  • 7 дисков, 2 primary-раздела на каждом;
  • 1й раздел 7и кратное зеркалирование (RAID1);
  • 2й раздел RAID5, под которым крутится LVM.

Два диска отказывают в одночасье из-за скачка электричества и каких-то еще проблем с железом. Попытки ассемблировать диски обратно не увенчались успехом, т.к. система проработала в автопилоте на умершем рейде часа два, в добавок ко всему диски то оживали то умирали заново, ядро не отрабатывало какой диск на каком месте в данный момент, т.е. что на них писалось и как это происходилос — можно только догадываться.
В общем, имеем, полностью погибший рейд. и mdadm тут бессилен.
Читать дальше →
Всего голосов 68: ↑66 и ↓2 +64
Просмотры 12K
Комментарии 34

Скрипт резервного копирования через rsync

Системное администрирование *
Возникла необходимость как-то и куда-то бэкапится. Причём чтобы процессоры не грузились и место не занималось, а бэкапы ротэйтились и удобно доставались. Раньше всегда пользовался fsbackup, но захотелось отказаться от архивирования. Для решения задачи была использована rsync и механизм жёстких ссылок (так называемых хардлинков) файловой системы.

Архитектура: есть отдельно стоящий сервер с большим винтом — на нём и работает скрипт. Есть много разных серверов с доступом по ssh, на которых в ~/.ssh/authorized_keys добавлен публичный ключ пользователя, под которым работает скрипт резервного копирования.
Читать дальше →
Всего голосов 43: ↑38 и ↓5 +33
Просмотры 25K
Комментарии 36

Обновление ДубльГИС консольными средствами Linux

Системное администрирование *

Введение


image
Очень часто пользователи просят установить ДубльГИС (не сочтите за рекламу) справочник, особенно если пользователь ездит в командировки, общается с людьми из других городов.

И как у любого системного администратора у меня возникла идея автоматически и централизованно обновлять ДубльГИС для всех городов.

По ряду причин решено было сделать это средствами Linux.
Одной из причин являлось отсутствия решения для централизованного обновления под данную операционную систему.
Еще одной — отсутствие файла на сайте со всеми базами и оболочкой в одном архиве для пользователей Linux.

В данной статье я расскажу как можно обновить ДубльГИС для всех городов, консольными средствами Linux.
Читать дальше →
Всего голосов 8: ↑3 и ↓5 -2
Просмотры 3.2K
Комментарии 10

Как в linux консоли скопировать файлы и папки исключая некоторые из них по регулярному выражению

Настройка Linux *
Здравствуйте, хабражители.

Не судите строго, я новичёк в linux-е и это мой первый пост на хабре, но может кому-то похожему на меня он окажется полезным.

Столкнулся с необходимостью решить задачу, описанную в заголовке. Готового решения не нашёл. Написал sh скрипт (cpexclude.sh), который сначала копирует всё, а потом удаляет лишнее:

#!/bin/bash
if [ $# -lt 3 ] ; then
	echo "cpexclude usage: pathFrom pathTo excludeRegex"
	exit 0
fi
pathFrom=$1
pathTo=$2
excludeRegex=$3
# Copy everything
echo `cp -a $pathFrom/. $pathTo`
# Delete by excludeRegex
echo `find $pathTo -regex $excludeRegex -delete`

Добавил его в ~/.bashrc

alias cpexclude='/path/to/cpexclude.sh'

Пользуюсь время от времени.
Если у кого-нибудь на уме есть более приемлемое решение, милости прошу.
Читать дальше →
Всего голосов 46: ↑25 и ↓21 +4
Просмотры 20K
Комментарии 43

Отказоустойчивая архитектура из двух веб-серверов на примере Debian Squeeze

*nix *Серверное администрирование *
Из песочницы
Мне поступила задача организовать отказоустойчивость веб-приложения из двух серверов. Веб-приложение включает в себя статические файлы и данные в СУБД MySQL.
Основное требование заказчика — веб-приложение должно быть всегда доступно и в случае сбоя в течении 5 минут сбой должен быть восстановлен.
2 сервера, территориально разнесенные в разных ЦОДах, должны удовлетворить данное требование.

Подробности
Всего голосов 61: ↑52 и ↓9 +43
Просмотры 15K
Комментарии 82

Как дешево напечатать книгу в Linux

Настройка Linux **nix *
Из песочницы
Думаю, почти каждый сталкивался с проблемой печати больших pdf файлов. Недавно и мне пришлось напечатать мануал в 600 страниц. Так как документ целиком состоит из текста не очень то хотелось печатать все 300 листов а4. В поисках решения наткнулся на статью от rapkasta.

Вот так я и набрел на замечательный пакет psutils, вот только способ брошюрирования меня не обрадовал. Слишком много работы. А мне ленивому хочется автоматики, вдруг в дальнейшем пригодится.
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Просмотры 25K
Комментарии 9

Как облегчить установку .apk на Android или GUI для adb install

Настройка Linux **nix *
Из песочницы
Доброго времени суток, уважаемые Хабравчане! Так сложилось, что мне часто приходиться устанавливать .apk-файлы на Android-устройства — работаю тестировщиком. И вот в очередной раз, открывая терминал и набирая команду для установки очередного приложения, я задумался о том, как можно избавиться от рутинной работы. Статья предназначена для новичков, по-этому будет много пояснений.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 25K
Комментарии 12

Установка и настройка VPS с CentOS 6.x парой команд с VestaCP

Настройка Linux *Серверное администрирование *
Приветствую, Хабр!

Для своего продукта я сделал инсталлятор на чистый VPS с CentOS 6.x и оперативной памятью 512MB+. Это такой VPS, который можно приобрести у DigitalOcean.com за $5 в месяц. Но инсталлятор получился довольно универсальный, и его можно форкнуть с гитхаба, чтобы исключить ненужные вам компоненты.

В качестве панели управления была выбрана VestaCP, о которой я раньше и не слышал, так как несколько лет слепо пользуюсь cPanel/WHM, в последнее время вместе с CloudLinux. Но это платная панель, и CloudLinux тоже платный, и последнее дело просить у пользователей еще за что-то платить, кроме как за продукт.

Читать дальше →
Всего голосов 26: ↑16 и ↓10 +6
Просмотры 27K
Комментарии 25

Разноцветные терминалы

Оболочки *
Из песочницы


В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле ~/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).

Для начала рассмотрим простой вариант, мой любимый формат командной строки.
Читать дальше →
Всего голосов 48: ↑40 и ↓8 +32
Просмотры 71K
Комментарии 46
1