Как продлить жизнь 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 для автоматизации разбора почты.

Установка openvpn на Linux mint

Прежде всего уясните себе что машина с easy-rsa это машина которая только подписывает ключи. И по логике безопасности должна быть отдельной машиной. Не стоит хранить генератор ключей и в особенности приватный CA на самом VPN сервере.

1) ставим openvpn на VPN сервере

# apt-get install openvpn

2) ставим easy-rsa на станции подписей

# apt-get install easy-rsa

3) создаём каталог куда скопируем easy-rsa и там будем изменять настройки, создавать и подписывать сертификаты

# mkdir -p /root/sign-host/easy-rsa
# cd /root/sign-host/easy-rsa
# cp /usr/share/easy-rsa/* ./

Continue reading Установка openvpn на Linux mint

Скрипт удаления старых томов для bacula

Я уже писал о том как вручную удалять старые тома из базы и с диска. Казалось что это однократная операция. Однако пришлось делать это во второй раз. Попутно выявилась проблема с приоритетом команды restore. Диск с бэкапами заполнился, задания застряли в очереди и команда restore создала задание которое послушно встало в хвост очереди. Приоритеты очереди работают только в том случае если очередь движется. Bacula не приостанавливает ткущее задание чтобы выполнить задание с более высоким приоритетом. А оно стоит в очереди и не может выполниться изза нехватки места на диске. Гугл не смог найти ответ как же запустить рестор вне очереди. Пришлось очистить очередь, при помощи команды cancel в bconsole после чего отработал рестор.

Это всё отступления, вернёмся-же к автоматизации:
Continue reading Скрипт удаления старых томов для bacula

Оператор цикла for в bash

Великая магия оператора for о которую приходится биться каждый раз пока не усвоишь урок, кроется в том что он рубит входные данные по символам разделителям которые перечислены в переменной IFS=

Не менее странным является и то, что этой переменной невозможно присвоить один байт-символ CR (возврат каретки) 0xA.
Никакие танцы с бубнами и операторы echo не дают этой возможности.
Два символа можно

IFS=$(echo -en "\n\b") # работает
echo -en "$IFS" | hexdump -C
00000000  0a 08                                             |..|
00000002

но один или много \n — не получается.

IFS=$(echo -en "\n\n\n\n\n") # не работает. Переменная будет пустой.
echo -en "$IFS" | hexdump -C # да говорю же следующая строка будет пустой

IFS=$(echo -en "A" | tr 'A' '\n') # не пойдёт!
IFS="\
\
" # тоже не будет работать

Continue reading Оператор цикла for в bash

ssh внутри while цикла который получает данные из stdin

Наткнулся я на то что скрипт запущенный локально — работает, а если его запустить на удалённой машине он вываливается из цикла while

#!/bin/bash

  SERVERS="10.10.1.6\n10.15.4.240"

  echo -e "${SERVERS}" | while read SERVER ; do
    echo -e "${SERVER}"
    ssh root@${SERVER} "uptime"
  done

Как оказалось проблема в том что ssh съедает stdin в первой итерации цикла.
Для меня это было неожиданно, однако лечится либо опцией -n либо перенаправлением stdin на < /dev/null .

#!/bin/bash

  SERVERS="10.10.1.6\n10.15.4.240"

  echo -e "${SERVERS}" | while read SERVER ; do
    echo -e "${SERVER}"
    ssh -n root@${SERVER} "uptime"
    ssh root@${SERVER} "uptime" < /dev/null
  done

Возврат к доброму iptables вместо firewalld

В последних версиях Fedora (19) вместо iptables по умолчанию используется динамический фаервол firewalld. Чтобы вернуть всё как было нужно остановить и запретить автозапуск firewalld.

# systemctl disable firewalld 
# systemctl stop firewalld

Затем нужно установить iptables-services (если он не установлен):

# yum install iptables-services

Потом запустить сервис iptables

# touch /etc/sysconfig/iptables
# systemctl start iptables
# systemctl enable iptables

И если используете IPv6

# touch /etc/sysconfig/ip6tables
# systemctl start ip6tables
# systemctl enable ip6tables

И наконец как обычно настраивайте файлы конфигурации /etc/sysconfig/iptables и /etc/sysconfig/ip6tables.

Глобальные фильтры на аккаунты Thunderbird

Mozilla-thunderbird-logo

За долгие годы использования почтового клиента у меня накопилось большое количество фильтров в Thunderbird которые автоматически обрабатывают почту раскладывая её по каталогам, сохраняя файлы, формируя автоответы и т д. Фильтры в Thunderbird привязываются к конкретным папкам, что лично для меня создаёт неудобства с управлением. Например письмо от Васи Пупкина я хочу положить в папку Васи Пупкина независимо на какой из моих емейлов оно пришло. Поэтому я сделал один общий файл фильтров которые привязал ко всем папкам симлинками. А для того чтобы объединить их написал пару скриптов которые облегчили обработку суммарно нескольких мегабайт фильтров.

Прежде всего нужно закрыть Thunderbird.

На первом шаге получаем все фильтры которые у нас есть в один каталог и нумеруем их. Этот однострочный скрипт запускается из каталога выбранного профиля Thunderbird.

$ i=0; find . -name msgFilterRules.dat -print0 | tr -s '\000' '\n' | while read file ; do cp "${file}" "${HOME}/Filters_Thunderbird/${file##*/}.${i}.txt" ; i=$((i+1)); done

Continue reading Глобальные фильтры на аккаунты Thunderbird

Fast HDD Eraser – Быстрое стирание дисков

Мне часто приходится затирать жёсткие диски пачками, например при модернизации стораджей, и мне был очень необходим скоростной источник потока данных которыми затирается целевой диск. Чтобы более менее надёжно затереть данные на диске неразрушив сам диск, недостаточно затереть его нулями из /dev/zero. В тоже время поток данных из /dev/urandom слишком медленный чтобы быстро затирать современные жёсткие диски.
Поскольку необходимый мне уровень стирания не претендовал на уровень военной разведки то я решил выкрутиться через большой массив случайных (псевдослучайных) чисел. А чтобы массив этот быстро работал я решил закинуть его в память. И /dev/shm – идеальное место.
Для стирания я использовал raid контроллер чтобы затирать сразу множество дисков. А для автоматизации процесса написал bash-скрипт. Скрипт имеет свой счётчик продвижения и его можно прервать Ctrl+C и затем продожить с той позиции где он был прерван.
Continue reading Fast HDD Eraser – Быстрое стирание дисков