Удаление списка ожидающих заданий bacula

Случается, что на сторадже заканчивается место до того как bacula соберётся удалять старые файлы. В результате вы получаете одно оповещение, что задача не была выполнена и второе от мониторинга, что закончилось место. Если задача одна-две, это не проблема. Удалили руками и всё в порядке. Но ситуация меняется когда задач много и тем более вы не среагировали за период более чем один цикл бэкапа. Очередь закупоривается и пока она не будет выполнена целиком новые задания не будут выполнены. Данный скрипт позволяет по очереди удалить все задания начиная с последнего по очереди, чтобы дойдя до первого не стартовало следующее за ним.

#!/bin/bash

for ID in `echo 'status dir running' | bconsole | sed -n '/Running Jobs:/,/^$/p' | sed -n '/^=\+$/,/^=\+$/p' | grep -v '^=\+$' | awk '/is waiting/{print $1}' | sed -e '1!G;h;$!d'` ; do
    if [[ ! ${ID} =~ ^[0-9]+$ ]] ; then
      echo "JobID \"${ID}\" is not a number! Skipping."
    else
      echo -e "Do you want to kill waiting job ${ID}"
      read -p 'Type YES if you really want to delete job: ' input
      if [[ ! ${input} =~ ^[Yy]$  ]] ; then
        echo -e "Skip job ${ID}.\n"
        continue
      else
        echo "cancel jobid=${ID}" | bconsole
      fi
    fi
done

Получение списка соответствия портов рейд контроллера дискам в системе

Имеем RAID контроллер который экспортирует свои диски в систему как набор дисков (JBOD).
Нужно получить какой физический порт какому устройству в системе соответствует.

Пример был сделан для контроллера 3ware и CentOS release 6.5 (Final). Но с небольшими поправками подойдёт и для других контроллеров.

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    JBOD      OK             -       -       -       931.513   Ri     OFF
u1    JBOD      OK             -       -       -       1863.02   Ri     OFF
u2    JBOD      OK             -       -       -       1863.02   Ri     OFF
u3    JBOD      OK             -       -       -       1863.02   Ri     OFF

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   931.51 GB SATA  0   -            WL1000GSA64RA100B
p1    OK             u1   1.82 TB   SATA  1   -            WDC WD2002FYPS-02W3
p2    OK             u2   1.82 TB   SATA  2   -            WDC WD2002FYPS-02W3
p3    OK             u3   1.82 TB   SATA  3   -            WDC WD2002FYPS-02W3

Continue reading Получение списка соответствия портов рейд контроллера дискам в системе

Firefox, Thunderbird, SeaMonkey запрет установки расширений XPI

Как запретить пользователям устанавливать расширения Firefox, Thunderbird или SeaMonkey?
Необходимо создать два файла.
Для Windows 32-бит
C:\Program Files\Mozilla Firefox\defaults\pref\local-settings.js
Для Windows 64-бит
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\local-settings.js

pref("general.config.filename", "mozilla.cfg");
pref("general.config.obscure_value", 0);

Для Windows 32-бит
C:\Program Files\Mozilla Firefox\mozilla.cfg
Для Windows 64-бит
C:\Program Files (x86)\Mozilla Firefox\mozilla.cfg

// Первая строка с коментарием необходима так как 
// парсер специально игнорирует первую строку в этом файле
// Запрет инсталяции XPI плагинов
lockPref("xpinstall.enabled", false);

Continue reading Firefox, Thunderbird, SeaMonkey запрет установки расширений XPI

Как снифить протокол приложения или пользователя

Ядро Linux начиная с версии 2.6.14 предоставлет возможность перехватывать пакеты из userspace которые затем можно записывать используя фильтр пакетов ядра.

В таблицу INPUT iptables в самом верху добавить правило

-A INPUT -m connmark --mark 1 -j NFLOG --nflog-group 30

В таблицу OUTPUT в самом верху добавить

-A OUTPUT -m owner --uid-owner 1006 -j CONNMARK --set-mark 1
-A OUTPUT -m connmark --mark 1 -j NFLOG --nflog-group 30

А затем запустить dumpcap чтобы он сохранил в файл протокол обмена

# dumpcap -i nflog:30 -w uid-1006.pcap

И сам файл потом открыть при помощи WireShark.
Источник

Пакетная очистка вируса из EXIF информации в картинках

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

|2014-09-23 12:53:44 CEST |41522804 |JPG:PHPAgent-A Trj |xxx.xxx.xxx.xxx |*******.*** |http://www.*******.***/media/k2/items/cache/12abae3c81505932f6f2610e7cdfbe24_S.jpg

Картинка представляла собой небольшую иконку и файл занимал 4.6 килобайт. Внутри оказалась EXIF информация, что для такой малоформатной иконки было странным.

Exif Byte Order                 : Little-endian (Intel, II)
Make                            : /.*/e
Camera Model Name               : eval(base64_decode('aWYgKGlzc2V0KCRfUE9TVFsienoxIl0pKSB7ZXZhbChzdHJpcHNsYXNoZXMoJF9QT1NUWyJ6ejEiXSkpO30='));
Comment                         : CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 85.

Continue reading Пакетная очистка вируса из EXIF информации в картинках

Как избавиться от диакритики

Один из моих bash скриптов обрабатывающих входящие счета от чешской компании вдруг сломался. Оказалось, что тот кто фомирует счета допустил ошибку в шаблоне и одна из букв перестала быть с диакритикой. Чтобы впредь из-за такой мелочи не ломался скрипт я решил избавить входящий документ от диакритики полностью. Можно было использовать recode но зачем если sed справляется с транслитерацией не менее быстро, а главное что он имеется в любой *nix системе.

echo "Daňový portál" | sed 'y/áéíóúýčďěňřšťžůÁÉÍÓÚÝČĎĚŇŘŠŤŽŮ/aeiouycdenrstzuAEIOUYCDENRSTZU/'
Danovy portal

Как узнать путь откуда запущен bash скрипт

BASEDIR=$(readlink -e "$0")
if [ $? -ne 0 ] ; then
  echo -e "Script path get error."
  exit 1
fi
BASEDIR="${BASEDIR%/*}"
echo "${BASEDIR}" 
exit 0

В дополнение к команде readlink есть ещё realpath и realname которые вернут полный путь и имя переданного им файла. Разумеется файл должен существовать.

Но внимание! Приведённые выше команды вернут путь на сам файл даже если скрипт запустили через симлинк (symlink). Например может понадобиться чтобы скрипт мог что либо записать в папку из которой был запущен даже через симлинк. Чтобы этого добиться необходимо поступить например вот так:

SAVEDIR=`pwd`
BASEDIR=`cd "$(dirname "$0")" && pwd`
cd "${SAVEDIR}"
echo -e "${BASEDIR}"
exit 0

Как продлить жизнь Skype 4.2.0.13

Меня, как и многих невольных пользователей текущие владельцы Skype поставили перед выбором: либо обновление, либо иди нахрен. Я посмотрел на свой довольно большой список контактов в котором находится много клиентов и скрепя сердцем выбрал первое — update. Внимательно осмотрел инсталяционый скрипт внутри rpm пакета и не найдя там ничего крамольного установил скайп 4.3.0.37. Оказалось, что новая версия не может загрузиться со старым профилем. Просто вываливается сразу после соединения. Я “пошаманил” с базами попробовал в новый профиль записать старые базы, но не помогло. (Обновлено. Решение было найдено). Это подсадило меня на коня. Масло в огонь подлило и то что они сломали интерфейс взаимодействия с внешними скриптами. Мои отлаженные скрипты перестали работать потому, что им передаются пустые параметры. Ну и чтобы окончательно вынудить людей искать альтернативу скайпу они прекратили поддержку звуковой подсистемы ALSA отдав предпочтение исключительно PulseAudio. Сначала сломали API для сторонних приложений, а теперь ещё и это.

Continue reading Как продлить жизнь Skype 4.2.0.13

Как запретить автообновления Skype

MS заставила всех перейти на новый скайп. А вместе с этим с каждой этой новой инсталяцией поставила своего шпиёна который будет лазить в интернет стягивать и устанавливать новую как обычно более тяжёлую версию скайп после чего то старые кнопки куда-то спрячутся то функциии отключатся. Получается что пользователь вроде бы как и не хозяин компьютера за который заплатил деньги. Копирайты копирайтами но табачёк врозь. Возвращаем всё на родину.

Continue reading Как запретить автообновления Skype

Используем fetchmail для автоматизации разбора почты.

Потребовалось мне принимать емейлы фильтровать их по определённым критериям и обрабатывать скриптами (отделять вложения, выполнять действия над вложениями). С такой задачей мог бы справиться плагин FiltaQuilla для Thunderbird. Однако плагин некорректно работает с моим Thunderbird версии 30 для Linux. Если он выполняется автоматически то сохраняет пустое вложение, хотя при ручном выполнении всё делает корректно. Автор упорно молчит, а править чужой плагин у меня небыло времени.

Итак мне было нужно:

  • периодически проверять наличие писем в специальном почтовом ящике;
  • стягивать их в раздельные файлы;
  • сохранять все вложения из каждого письма;
  • анализировать заголовки и тексты писем;
  • запускать скрипты по манипуляции с текстами писем и вложениями.

Continue reading Используем fetchmail для автоматизации разбора почты.