Вылысыпыдыст

Автозапуск и автоматическое резервное копирование VirtualBox в Centos

   Итак, начнём.
   Ситуация: имеется линукс, на котором в виртуальной машине крутится контроллер домена на Windows server 2003 standard, имеется машина Большого Ночальнега, на которую необходимо делать бэкапы (ввиду отсутствия NAS). Также, наша виртуалка должна стартовать с системой.
   Я это сделал и из-под рута всё работало совершенно замечательно, но после установки phpVirtualBox я посчитал, что безопасности не хватает, и переделал всё под отдельного пользователя с ограниченными правами. И тут столкнулся с несколькими подводными камнями, о которых постараюсь не забыть упомянуть ниже.
   Коротко о системе: Centos 5.8 x86, на ней установлена (из-под рута) VirtualBox 4.1.12 (77245). Есть пользователь vbox (член групп wheel vbox vboxusers), виртуальная машина (чтобы не путаться, укажу используемое в моей системе название) srv-win-pdc, запускаемая из-под пользователя vbox. Автостарт srv-win-pdc при запуске системы осуществляется следующим скриптом для chkconfig:
[посмотреть скрипт]
#!/bin/sh
# chkconfig: 345 20 80
# description: VBox Machine server
# Source function library.
. /etc/rc.d/init.d/functions

run_by_init() {
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}

export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin"

VM_USER="vbox"
SU="su $VM_USER -c"
VBOXMANAGE="VBoxManage -nologo"
VBOXHeadless="/usr/bin/VBoxHeadless"

start () {
    echo "Starting VBox Machine"
    $SU "$VBOXHeadless -startvm "srv-win-pdc" &"
        }
                
    stop () {
$SU "$VBOXMANAGE list runningvms" | while read VM; do
    echo "Shutting down VM: $VM ..."
$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton"
    done
        }
    restart() {
    stop
    start
    }
case $1 in
    start)
    start
    ;;
    stop)
    stop
    ;;
restart)
restart
    ;;
    status)
    echo "The following virtual machines are currently running:"
    $SU "$VBOXMANAGE list runningvms" | while read VM; do
        echo -n "$VM ("
echo -n `$SU "VBoxManage showvminfo $VM|grep Name:|sed -e 's/^Name:\s*//g'"`
        echo ")"
        done
            ;;
                *)
echo $"Usage: $prog {start|stop|restart|status}"
exit 3
esac
exit 0


   Нижеследующий скрипт Дмитрия Николаева, слегка испорченный мной, используется для бэкапа виртуалок. Вначале он проверяет, включена ли целевая машина (тупо пингом), затем примонтирует удалённую шару к системе, затем сохраняет состояние моей виртуалки, потом бэкапит/подчищает старые бэкапы непосредственно в примонтированный раздел, затем отмонтирует ставшую ненужной шару и стартует виртуалку обратно. Скрипт сделает вышеперечисленные действия со всеми виртуальными машинами пользователя, от имени которого запущен. Кстати, с подчисткой старых у него не всё ок, но что нужно сделать чтобы оно работало, - я не в курсе, у меня совсем плохо с языками программирования. Возможно, я что-то не доделал в sub cleanup, дело в том, что скрипт был писан для freeBSD, а там другой формат даты. Да, все пути, связанные с примонтированием/отмонтированием шары, надо править под существующую систему. Итак:
[посмотреть скрипт]
#!/usr/bin/perl
#################################################
# Virtual machines backuping script             #
#                                               #
# File/Файл: virtualbox_backup.pl               #
# Autor/Автор: Nikolaev Dmitry/Николаев Дмитрий #
# Site/Сайт: Subnets.ru                         #
# URL/Статья: http://subnets.ru/blog/?p=1691    #
# Version/Версия: 0.1                           #
# Date/Дата: 25.05.2011                         #
#################################################
if (system('ping -c 1 xxx.xxx.xxx.xxx>/dev/null'))
{
print "Целевая машина оффлайн";
}
else {
print "Целевая машина онлайн";
system('sudo mount -t cifs //xxx.xxx.xxx.xxx/VirtualBox$ -o users,file_mode=0777,dir_mode=0777,username="DOMAIN\User",password=OurPass /mnt/mount_dir');
$debug=1;
$dstdir="/mnt/mount_dir/backup_dir";
$pidfile="/var/run/vbox_backup.pid";
$pr=0;
    
open (TMP,"<$pidfile") or newpid();
if ($pr == 0){
    $op=<TMP>;
    $cmd=sprintf ("/bin/ps -axo pid | /usr/bin/grep -w '%d' | /usr/bin/grep -v 'grep'",$op);
    do_debug($cmd);
    $op=`$cmd`;
    chomp($op);
    if ($op eq ""){
        do_debug("Override old PID");
        newpid();
    }else{
        print "VirtualBox backup can't start: process already executed";
    }
}
close TMP;
}                                                                                                                    
sub newpid {
        $pr=1;
        open (PID,">$pidfile");
        print PID $$;
        close PID;
        run();
}
                                                                                                                                        
sub run {
    $date=`/bin/date "+%Y/%m/%d"`;
    chomp($date);
    $backupdir=sprintf("%s/%s",$dstdir,$date);
    $vboxmanage="/usr/bin/VBoxManage";

    $vmslist=`$vboxmanage list runningvms | /bin/grep {`;
    chomp($vmslist);
    @vms_tmp=split('\n',$vmslist);
    for $m(@vms_tmp){
        @vms=split(' ',$m);
        $vms[0]=~s/"//g;        #"
        $vms[1]=~s/{//;
        $vms[1]=~s/}//;
        do_debug("Name: $vms[0] UID: $vms[1]");
        $cmd=`$vboxmanage showvminfo $vms[1]`;
        $vmbackupdir=sprintf("%s/%s",$backupdir,$vms[0]);
        opendir DIR,$vmbackupdir or create_dir($vmbackupdir);
        open(TXT, sprintf(">%s/readme.txt",$vmbackupdir));
        print TXT $cmd;
        close(TXT);
        $cmd="$vboxmanage -q controlvm $vms[1] savestate";
        do_debug($cmd);
        $savestate=`$cmd`;
        chomp($savestate);
        do_debug($savestate);
        if ($savestate ne "0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%"){
        print "[WARNING]: VM $vms[0] has some problem with savestate\nResult: $savestate\n";
        }

        `/bin/sleep 5`;

        $cmd=sprintf("%s -q export %s -o %s/%s.ovf",$vboxmanage,$vms[1],$vmbackupdir,$vms[0]);
        do_debug($cmd);
        $export=`$cmd`;
        chomp($export);
        @out=split("\n",$export);
        $export_res=$out[$#out];
        do_debug($export_res);
        if ($export_res ne "Successfully exported 1 machine(s)."){
            print "[WARNING]: VM $vms[0] has some problem with export\nResult: $export_res\n";
        }

        `/bin/sleep 2`;

        $cmd="$vboxmanage -q startvm $vms[1] --type headless";
        do_debug($cmd);
        $start=`$cmd`;
        @out=split("\n",$start);
        $power=$out[$#out];
        do_debug($power);
        if ($power ne "VM has been successfully started."){
            print "[WARNING]: VM $vms[0] don`t started after backuping !\nResult: $power";
        }
        do_debug("VM $vms[0] backup finished...\n");
    }
    cleanup();
    system('sudo umount -l -t cifs /mnt/mount_dir');
    unlink($pidfile);
}
                                                                                                                                
sub create_dir {
    $dir=shift;
    `/bin/mkdir -p $dir`;
}
 
sub cleanup{
    $date=`/bin/date --date="1 month ago" +%Y/%m/%d`;
    chomp($date);
    do_debug("Clean up $date");
    $cleandir=sprintf("%s/%s",$dstdir,$date);
    `/bin/rm -rf $cleandir`;
}

sub do_debug{
    $text=shift;
    if ($debug){
        print "[DEBUG]: $text\n";
    }
}


   Подводные камни: для использования sudo недостаточно членства пользователя vbox в группе wheel. В файле /etc/sudoers должна быть закомментирована строка Default requiretty для того, чтобы наш пользователь мог запускать скрипты. Иначе на этапе монтирования скрипт даёт ошибку: sudo: sorry, you must have a tty to run sudo. Далее. Файлик /var/spool/cron/vbox у меня имеет следующий вид:
[посмотреть файлик]
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/temp
MAILTO=vbox
HOME=/path_to_user_vbox_homedir/
30 22 * * tue /usr/bin/perl /script_dir/virtualbox_backup.pl > /temp/logbackup.txt
30 22 * * wed /usr/bin/perl /script_dir/virtualbox_backup.pl > /temp/logbackup.txt
30 22 * * thu /usr/bin/perl /script_dir/virtualbox_backup.pl > /temp/logbackup.txt
30 22 * * fri /usr/bin/perl /script_dir/virtualbox_backup.pl > /temp/logbackup.txt


   Первоначально я копировал "шапку" с путями из /etc/crontab и путь к хомдирке у меня выглядел как HOME=/, поэтому vboxmanage ругался вот так: VBoxManage: error: Failed to initialize COM! Для того, чтобы работали команды vboxmanage, необходима доступность папочки ./Vboxmanage/ из домашней папки нашего пользователя. Как добавить пользователя vbox, внести его в нужные группы, как настроить разрешения к папкам, если что-то не заработает и пр. - рассказывать не стану. Я эту памятку пишу больше для себя, чем для Вас - разберусь как-нибудь. Возможно, статья будет дополнена описанием установки и настройки вебморды ко всему этому. В морде очень не хотела запускаться консоль, насколько я помню. Вкратце всё. Наверняка, всё самое важное и нужное, как всегда, забыл.
Вылысыпыдыст

Сказы Леса

      Рыскал, утоляя скуку между времяёмкими операциями восстановления рейд-массива и файловой структуры сервака моего клиента, вконтактике. И набрел на группу. Сказы Леса. Очень понравилось, почти прослезился, вспомнил прежнего Фёдора Чистяков, его задор и тоску, живость исполнения альбомов "Ноля". Группа, как ни странно, тоже питерская, офсайт тут, вот здесь написано: "Выездной райдер группы согласовывается с организаторами концерта в индивидуальном порядке. Бухло в гримерку обязательно." Нет, этот пост - не напоминалка себе самому. Такое не забывается... Вот бы побывать на концерте!
Вылысыпыдыст

Зашел, называется, френдленту почитать...

Есть фильм французский, в переводе "Бочарика" (вроде бы как... голос главного героя на озвучке точно его, а титры почитать не удосужился), называется: "Мы легенды". Там главный герой, бродя по пустому офису, разговаривает сам с собой: "Ну что, пора френдленту почитать... как же тут интернет включается? Может голосом? интернЕт... Интернет..." ну и так далее. Вот и я тоже. И неожиданно обнаружил во френдленте такое вот счастье:



Ноу комментс. Я в восторге. Ведь это о моих любимых писателях (не придирайтесь, я почти не покривил душой)...
Вылысыпыдыст

Экгм...

Обнаружил отличный сервис. Гадание на поцелуй. Опробовал на двух своих именах.

Кто подарит тебе незабываемый поцелуй))
Ваше имя
И тот счасливчик который подарит тебе поцелуй)image

все гадания на aeterna.ru



Кто подарит тебе незабываемый поцелуй))
Ваше имя
И тот счасливчик который подарит тебе поцелуй)image

все гадания на aeterna.ru
Я одновременно в шоке и в восторге. Так же видел блог-первоисточник, обнаружил там несметное количество тупых сук  гламурных девиц, подумал - сюда бы хорошенького тролля. Толстенького. Потом перестал думать. Стал нормальным.
  • Current Music
    Dark Tranquillity - Damage Done
Вылысыпыдыст

Ночная беседа... С моими каментами.

ZZZ (13.08.2010 02:27) 
Я так понимаю, что деградация 90-х разрушила все искусство, как бы оно близко или отдалено от мейнстрима не было. Ничего не смотрю и не слушаю из современного 
_____________________________________________
чувак несет откровенную, на мой взгляд, чушь... Как будто телик смотришь, канал "Культура"...
Eds13 (13.08.2010 02:27) 
есть вещи 
_____________________________________________
слегка зацепил меня...-
ZZZ (13.08.2010 02:28) 
Наверное, потому, что даже рок в то время слушали люди, куда более умные и грамотные, чем сейчас
Eds13 (13.08.2010 02:28) 
найди - Вася Обломов - Еду в Магадан - клипец тока, а не просто песня... тоже ничего так. Показательно и как раз втч про российскую эстраду 
ZZZ (13.08.2010 02:28) 
Eds13 (02:27:36 13/08/2010)
есть вещи
А их сложно вычленять, только по блогам
Eds13 (13.08.2010 02:29) 
есть сообщества друзей в рунете, связывающиеся так или иначе... ну вот кагбэ, там всё 
ZZZ (13.08.2010 02:37) 
Послушал Васю, но думаю, что все же надо над собой им подниматься и создавать хорошую музыку, приглашать людей, если у самих не получается. Вообще, интеллигентнее быть 
Ориентироваться на советское искусство - а там культурные ожидания людей весьма при деле были. Нужны таланты 
______________________________________________
риальне зацепил... и тут...
Eds13 (13.08.2010 02:39) 
нет 
таланты нахуй никому не нужны 
фильм был 
предупреждали 
кин-дза-дза 
"Скрипач НЕ НУЖЕН" 
толпа, быдло, религиозное образование, фурсенко, бабки, бабки, бабки. Цель жизни - бабки.  
______________________________________________
Остапа понесло!
ZZZ (13.08.2010 02:41) 
Ну, таланты нужны пусть небольшому числу людей, еще помнящих ипонимающих, как должно быть правильно. Т.е., да, работать не на славу и бабло, а на искусство 
______________________________________________
Мимо кассы. Меня уже несет, неудержимо, как....
Eds13 (13.08.2010 02:41) 
Никакой уравниловки, никакого совка!
таланты нужны тому, у кого есть бабки 
шуты развлекают королей 
если король умен и просвещен, он, возможно, пожелает шута со вкусом и интеллектом 
не неси чепуху, таланты никому не нужны. Интеллигенция это отрыжка бизнеса, странные люди, которые каким-то образом умудрились без денег получить разностороннее образование. С переходом на болонскую систему образования... нет. На платную систему образования - от этого мы избавимся. А ты - пережиток поганого совка!
зацитирую отрывок с хабра, по памяти, могу ошибаться:
- В наше страшное время выживают только проходимцы всех мастей, подлецы и воры!
- Как же вы живы до сих пор?
- Я такая же сволочь как и вы... 
Вылысыпыдыст

Мои игрушки

     Играюсь я, понятно, всё еще в линь. Ничего интересного. Прикрутил второй монитор, причем nvidia-settings от проприетарных дров перепутали мои мониторы по непонятной мне причине. Вывод на 19" TFT Самсунга он считает 17" CRT эЛДЖи флэтроном. И наоборот. Попытки переписи ксорг.конфа привели к падению иксов, но это для меня дело уже обычное. Ничего страшного, подымается всё на ура. Общем я исправил-таки конфиг вручную так, что линь считает-таки один моник другим, но показывает всё куда надо и как надо.
     Давно пытался запустить IPTV от провайдера. Ввиду этого после возни с мониками запустил VLC с плейлистом от риалинковского IPTV и стал внимательно его (влц) разглядывать. Оно же должно работать само! Ничо не вышло (скорее всего - плохо разглядывал), тогда я сохранил себе плейлист локально под именем iptv.m3u, запустил VLC уже с ним и снова принялся его внимательно разглядывать. В результате выяснилось, что в таком виде он работает, но почему-то не показывает первые же два канала. Опщем я сделался при счастье, несмотря на то, что... а! Несмотря не то, что я телик в общем-то и не смотрю. Ну и я терь играюсь в третьих героев и пишу эту фигню на одном монике, а дочь смотрит уоллеса и громита на другом. Можно попробовать подрубить еще аналоговый телик через тюльпан :-)
     Еще обнаружил, что зашевелились виндовые приложения после очередных обновлений. И теперь, если поковырять вайн, они пойдут. Тока это всё пока сложно. Ну раньше-то вообще ничо виндовое не пускалось... А теперь старрейнджеры вылетели с какой-то страшной ошибкой. Уууух! Интересно. И как это оно само? Правду сказали - федорино коре - испытательный полигон.
     А, вот еще. Прикрутил консоль от керио-майл-сервера. Прикрутилась, стала, работает. Коннектится. Гыгы. И вообще - линь не такая уж и страшная штука. Особенно если знаешь что и куда бэкапить. Меня вообще, естати, возможно, ждёт генту. Вот что страшно. Потом канить расскажу про эти ужасы...
     Общем так, ни о чем. Ничего интересного.

P.S. Не накатался сегодня на велике. Хотелось бы еще... И что самое прикольное - за окном дождь. Не, не стану прикручивать отвалившуюся фару к велику, оставшейся мощи батареек все равно маловато... Или прикрутить?..
Вылысыпыдыст

Снова Linux

Итак! Поднимаем сервер вещания... Используется Fedora10, какой-то системник, как обычно, собранный из говна (P III, 256 Mb, 80 Gb). Нужен был удаленный доступ к целевой сети, вышеупомянутая тачка послужила роутером и ВПН-сервером (OpenVPN). Потом клиент дал вебкамеру Logitec Quickkam Zoom предположительно 2002-2003 года выпуска (которую я примотал скотчем к "держалке", ибо отваливалась) и сказал что хочет наблюдать за офисом со своего рабочего места. Ничего сложного, но желательно, чтобы работники удаленного офиса не знали, когда камера включена, а когда выключена. Т.е. "подсматривать". Идею сделать всё на винде я бросил довольно быстро, т.к. единственная тачка (не считая сервера), куда разрешили ставить камеру, была по моще такой же как и мой роутер - под вендой всё жутко тормозит. Звоночек в удаленный офис: "Переткните камеру, плиз, в соседний системник", и поехали.


Collapse )
Вылысыпыдыст

Юность шагает.




Эти люди смеются. А знаете, я как-то смотрел по зомбоящику педерачу. Давно, лет 10 назад. Я, если честно, не уверен - может и меньше: лет 5-6. Не уверен. Там пожилой бизнесмен рассказывал (с гордостью) как его отец в блокадном Ленинграде торговал медикаментами, закупленными в пригороде. Рисковал жизнью, покупая - пули свистели над головой. Рисковал жизнью, продавая - кровавая гэбня могла в любой момент окончить эти пиршество духа. Тем, собственно, и выжили. Спекуляцией. Вот еще история: еду от клиента. Учились в БИТМе, почти вместе. Он - на программиста, я - на дизелиста. Он мне и говорит: "Вот ты теперь айтишник. А я..." - и тут он сделал паузу... Поясню: я - одмин. Клиент - владелец оптовой конторы, торгующей всякими банками, бутилками... стеклянной тарой... - "А я - спекулянт". Вот. Он - спекулянт. А тот человек с телевизора - бизнесмен. Как и отец того человека. А эти люди на видео - смеются. Нельзя лгать людям. И нельзя лгать себе. Бизнес это бизнес, а спекуляция - это спекуляция. Как учили - так и научили. И ничего теперь смешного. Учителей - в школы, спекулянтов - на рынок, бизнесменов на производство, а лжецов - к стенке. К СТЕНКЕ БЛЯДЬ!!! ТРИ ГОДА СТРОГОГО РАССТРЕЛА!!! Или можно просто поржать ;-)