Archive

Archive for the ‘Uncategorized’ Category

Права на файлы при ssh авторизации по ключу

November 30th, 2010

Все время забываю какие должны быть права поэтому сделаю заметку:
Права на домашний каталог юзера:

drwx------  5 admin      admin      4096 Nov 30 15:42 admin

Каталог .ssh

drwx------ 2 admin admin 4096 Nov 30 15:23 .ssh

authorized_keys

-rw------- 1 admin admin  213 Nov 30 15:23 authorized_keys

Uncategorized

Олимпиада для unix администраторов

October 9th, 2010

В ближайший понедельник 11 октября 2010 года стартуют игры первого тура Олимпиады для unix администраторов. Огранизатор Яндекс проводит первую Олимпиаду для системных администраторов —
специалистов в области Open Source и Unix. Участники олимпиады соревнуются в умении быстро и правильно отвечать на вопросы, с которыми ежедневно сталкиваются системные администраторы Яндекса.
Офф. сайт олимпиады.

Uncategorized

Установка легкого и быстрого прокси 3proxy на FreeBSD

June 8th, 2010
cd /usr/ports/net/3proxy && make install
echo "threeproxy_enable="YES"" >> /etc/rc.conf

Конфиг:

timeouts 1 5 30 60 180 1800 15 60
users test:CL:24555
daemon
archiver gz /bin/gzip %F
rotate 30
auth strong
external 0.0.0.0
internal 1.2.3.1
auth strong
deny * * 127.0.0.1,192.168.1.1
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
auth strong
flush
internal 127.0.0.1
allow 3APA3A 127.0.0.1
maxconn 3
admin

Запуск:

/usr/local/etc/rc.d/3proxy start

Все. Прокси будет слушать на 1.2.3.1:3128 и пускать по test / 24555

Uncategorized ,

Примеры использования ffmpeg

April 12th, 2010

Показать информацию по файлу:

ffmpeg -i sample.avi

Склеить изображений в видео:

ffmpeg -f image2 -i image%d.jpg video.mpg

Все картинки из текущей директории с именами файлов image1.jpg, image2.jpg и т.д. будут преобразованы в один ролик video.mpg.

Разложение видеоряда на кадры:

ffmpeg -i video.mpg image%d.jpg

Будут сгенерированы файлы image1.jpg, image2.jpg и т.д… Поддерживаемые графические форматы: PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.

Кодирование видеоряда для Apple iPod/iPhone:

ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

Извлечение звука из видео с последующим сохранением в MP3:

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3

Преобразование WAV в MP3:

ffmpeg -i son_original.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3

AVI в MPG:

ffmpeg -i video_source.avi video_final.mpg

MPG в AVI:

ffmpeg -i video_source.mpg video_final.avi

Конвертация AVI-файла в несжатый анимированный GIF:

ffmpeg -i video_source.avi gif_anime.gif

Смешение аудио- и видеопотока в один результирующий файл:

ffmpeg -i son.wav -i video_source.avi video_final.mpg

Преобразование AVI в FLV:

ffmpeg -i video_source.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_final.flv

FLV в AVI:

ffmpeg -i video_source.flv -ab 56 -ar 44100 -b 200 -s 320x240 video_final.avi

Uncategorized

Восстановление системных файлов в Windows Server 2003

January 25th, 2010

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

sfc /scannow

Если есть установочный CD, то его надо вставить. А если дистрибутив скопирован на диск, то надо в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup изменить ключ SourcePath указав путь к дистрибутиву.

Uncategorized

Активация сервера терминалов в Windows Server 2003

December 26th, 2009

Если вдруг возникнет необходимость активировать сервер терминалов в Windows Server 2003 то вот здесь отличная статья на эту тему

Uncategorized

Ставим простой и легкий прокси – privoxy

December 25th, 2009

Иногда бывает нужно посмотреть выдачу для другой страны или еще что-нибудь для чего удобно было бы использовать прокси на своем сервере/впс. Сквид – большой и тяжелый, поэтому разумно будет поставить privoxy. Он есть и в репозиториях для RHEL/CentOS и в портах FreeBSD. Бонусом privoxy является то, что он фильтрует всякую рекламу и подозрительные скрипты. Ставим:

yum install privoxy

В конфиге /etc/privoxy/config пишем строчку

permit-access [свой внешний ип]
listen-address  [внешний ип сервера]:8118

И далее:

chkconfig privoxy on
/etc/init.d/privoxy start

Все, можно подключаться.

Uncategorized ,

Нюансы по WordPress

December 14th, 2009

Проблемы с кодировками может помочь решить в wp-config.php

define('DB_CHARSET', 'utf8');

Часто автоматическое обновление плагинов глючит и тогда имеет смысл переключить его с обновления через фтп на локальное. После этого надо проверить права для веб-сервера на папки plugins, wp-content

define('FS_METHOD', 'direct');

Так же будет иметь смысл поставить такие права.

define('FS_CHMOD_FILE',0777);
define('FS_CHMOD_DIR',0777);

Иногда бывает, что WordPress не подхватывает прописанные ему временные директории через конфиг апача

php_admin_value open_basedir /home/domain.com
php_admin_value upload_tmp_dir /home/domain.com/wp-tmp
php_admin_value session.save_path /home/domain.com/wp-tmp

И временные файлы все равно пытается закачать в /var/tmp
тогда надо:

define('WP_TEMP_DIR', ini_get('upload_tmp_dir'));

Для увеличения лимита используемой памяти:

define('WP_MEMORY_LIMIT', '96M');

Всякие другие полезные переменные для wordpress

Uncategorized

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

September 23rd, 2009

Ставим iperf из портов или из yum-a.
Запускаем сервер:

iperf -s -i2 # tcp-сервер с выводом стастистики каждые 2 сек.
iperf -s -u -w1400 #udp-сервер, с размером окна 1400 байт

Запускаем клиента:

iperf -c server_host -u -t 60 # подключение по udp к server_host и тестирование в течение 60сек
iperf -n 10m -p 65005 -c server_host # Послать 10 мегабайт, на порт 65005

Uncategorized

Обновление DirectAdmin вручную

July 30th, 2009
cd /usr/local/directadmin
wget -O update.tar.gz https://www.directadmin.com/cgi-bin/daupdate?uid=111&lid=222
tar xvzf update.tar.gz
./directadmin p
cd scripts
./update.sh
service directadmin restart

Uncategorized ,

Примеры использования rsync

July 7th, 2009

Синхронизируем две локальные папки с сохранением прав доступа, выводом списка файлов, компрессией, выводом статистики:

rsync -avz --stats  /dir1 /dir2

Синхронизируем локальную и удаленную папки через ssh с выводом прогресс-бара:

rsync -avz --stats --progress /dir1 root@host.com:/dir2
rsync -e "ssh -p222"  --progress -lzuogthr --compress-level=9 --delete-after /usr/local/www/domain.ru root@server.com:/usr/local/www

Тоже синхронизируем локальную и удаленную папки. Через ssh на 222-порту.
l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
z — использовать сжатие
u — update. Обновление, он будет пропускать файлы которые новей, чем на удалённом сервере
o — установить владельца конечного файла таким же, как и у исходного
g — установить группу конечного файла таким же, как и у исходного
t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
h — вывод информации на терминал в удобном для чтения (human-readable) виде
v — verbose. Вывод сообщений в терминал.
r — рекурсивный режим
n — отладочный режим
compress-level — уровень сжатия
delete-after — удалять файлы, которые не были найдены на удалённом сервере, “-after” означает, что удалить их нужно, только после окончания синхранизации. Так-же есть delete-before, delete-during, delete-excluded и просто delete

Uncategorized

Настройки производительности VMWare Server 2

July 2nd, 2009

При достаточных аппаратных ресурсах рекомендуется установить следующие настройки.
Диски:
– Independent
– Persistent
– Optimize for performance
– Allocated сразу и полностью

Для памяти и свопа добавить в конфиг виртуальной машины:

MemTrimRate = "0"
sched.mem.pshare.enable = "FALSE"

В конфиге хоста:

Fit all virtual machine memory into reserved host RAM

Uncategorized

Простой скрипт бэкапа типового веб-сервера

June 23rd, 2009

Скрипт может создавать локальный архив из указанных каталогов, с указанными исключениями; архив mysql-баз. Может закачивать их на указанный FTP-сервер. Автоматически удаляет старые архивные копии (два варианта правил). Есть поддержка полного и инкрементального бэкапов. Работает под FreeBSD и Linux. Есть шифрование архивов и отправка уведомления о результатах на электронную почту.
Текст всех файлов ниже. Возможно удобнее будет скачатьархив:
файл backup.sh

#!/bin/sh

# Kiloservers.com sample backup script
# Last changes from: 23-07-2009

# Global backup tasks
mysql="YES" # need backup mysql bases? YES || NO
filebackup="YES" # need perform backup local files? YES || NO
savelocalbackup="YES" # need save backup on local drive? YES || NO
uploadbackup="YES" # need upload backup to FTP server? YES || NO
encryptbackup="NO" # need encrypt backup? YES || NO. If "YES" setup "encryptkey".
emailresult="YES" # need send e-mail with the results of backup? YES || NO. If "YES" setup "emailforresult".

# Common parametrs
backuptype="full" # 'full' or 'incremental'-files changed after last full backup
scriptdir="/etc/backup-complect" # homedir of this script
backupdir="/home/backup" # where save local backup
incfile="incfile" # file/dirs include to backup. Change content of this file
exfile="exfile" # file/dirs exclude from backup. Change content of this file
minfreespace="5000" # Minimal free space on backup slice in MB to start backup
encryptkey="" # Secret key to encrypt backup. Min 10 symbols recommended. Make sure that this key is kept in a safe place!
gpgpath="/usr/local/bin/" # path to gpg program
ftppath="/usr/bin/" # path to ftp client program
emailforresult="" # e-mail for backup results
sendmailpath="/usr/sbin/" # path to sendmail program

# FTP settings
ftphost="" # backup host
ftpuser=""
ftppass=""

# SQL settings
sqluser="root"
sqlpass=""
sqlhost="localhost"
allbases="YES" # 'YES' or 'NO'. Backup all bases or only from 'backupsqlbases' parametr
backupsqlbases="mysql" # bases list separate by space
mysqlutilspath="/usr/local/bin/" # path to 'mysql' and 'mysqldump' folder. No need to change.
sqldef="--single-transaction --skip-add-locks --skip-disable-keys --force" # parametrs for mysqldump


#######################
##### just do it! #####
#######################

salt=`< /dev/urandom tr -dc A-Za-z0-9 | head -c8` # random string for more secure ftp uploads
freespace=`df -m $backupdir | grep dev | awk '{print $4}'` # current free space on backupdir slice
hostn=`hostname`
backupstartdate=`date "+%Y-%m-%d %H:%M %Z%n"`

# check to exist backupdir
if [ ! -d $backupdir ];  then
   echo "$backupdir backupdir is no exist! Backup canceled."
   exit
fi

# check to exist mysql/mysqldump program
if [ $mysql = YES ]; then
    if [ ! -f $mysqlutilspath"/mysql" ];  then
        mysqlutilspath="/usr/bin/"
        if [ ! -f $mysqlutilspath"/mysqldump" ];  then
            echo "mysqldump program is not exist on this path $mysqlutilspath ! Backup canceled."
            exit
        fi
    fi
fi

# check to email setup
if [ $emailresult = YES ]; then
    if [ $emailforresult = "" ]; then
        echo "You should setup emailforresult parametr. Backup canceled."
        exit
    fi

    if [ ! -f $sendmailpath"/sendmail" ];  then
        echo "You should setup sendmail before. Backup canceled."
        exit
    fi
fi

# check to exist ftp client program
if [ $uploadbackup = YES ]; then
    if [ ! -f $ftppath"/ftp" ];  then
        ftppath="/usr/local/bin/"
        if [ ! -f $ftppath"/ftp" ];  then
            echo "FTP client program is not exist on this path $ftppath ! Backup canceled."
            echo "To install ftp client on CentOS/RHEL:"
            echo "yum install ftp"
            exit
        fi
    fi

    # remove old ftp logs
    if [ -f $scriptdir"/ftpdump.txt" ];  then
        rm $scriptdir"/ftpdump.txt"
    fi
fi

# check to free space on backupdir
if [ $minfreespace -ge $freespace ]; then
    echo "Free space not enought! Backup canceled."
    exit
fi

# check gpg and secret key
gpgext=""
if [ $encryptbackup = YES ]; then
    if [ $encryptkey = "" ]; then
        echo "You must install the encryption key. Exit."
        exit
    fi

    if [ ! -f $gpgpath"/gpg" ];  then
        gpgpath="/usr/bin/"
        if [ ! -f $gpgpath"/gpg" ];  then
            echo "GnuPG v.1 is not found. You must setup path to GnuPG v.1 in gpgpath or setup GnuPG v.1."
            echo "To setup GnuPG v.1 on FreeBSD use:"
            echo "pkg_add -r gnupg1"
            echo "or"
            echo "cd /usr/ports/security/gnupg1 && make install"
            echo ""
            echo "To setup GnuPG v.1 on CentOS/RHEL use:"
            echo "yum install gnupg"
            echo ""
            echo "Backup canceled."
            exit
        fi
    fi
    gpgext=".gpg"
fi

# check OS
checkos=`uname -a | grep -c "FreeBSD"`

# if FreeBSD
if [ $checkos = "1" ]; then
    newerparam=" --newer-mtime-than "$scriptdir"/metka"
fi

# if Linux
if [ $checkos = "0" ]; then
    newerparam=" --newer "$scriptdir"/metka"
fi

if [ $backuptype = full ]; then
    newerparam=""
fi


incfile=$scriptdir"/"$incfile
exfile=$scriptdir"/"$exfile
curdate=`date "+%Y-%m-%d%n"`
curdatewithhours=`date "+%Y-%m-%d-%H%n"`

# get list of all mysql bases
if [ $mysql = YES ]; then
    echo "Get MySQL databases list"
    if [ $allbases = YES ]; then
        backupsqlbases=`echo "show databases"|$mysqlutilspath'mysql' --user=$sqluser --password=$sqlpass --host=$sqlhost|grep -v "^D"`
    fi
fi

# create remote current day folder
if [ $uploadbackup = YES ]; then
    echo "Create remote current day folder"
    ftp -i -n $ftphost 2>&1 1>>$scriptdir/ftpdump.txt <<END_SCRIPT
    quote USER $ftpuser
    quote PASS $ftppass
    mkdir /$curdate
    quit
END_SCRIPT
fi


if [ ! -d $backupdir"/"$curdate ];  then
    echo "Creating "$backupdir"/"$curdate
    mkdir $backupdir"/"$curdate
    chmod 777 $backupdir"/"$curdate
fi
cd $backupdir"/"$curdate

# create and upload mysql bases backup
if [ $mysql = YES ]; then
    echo "Begin export databases"
    for base in $backupsqlbases
        do
        $mysqlutilspath'mysqldump' $sqldef --user=$sqluser --password=$sqlpass --host=$sqlhost $base > $backupdir/$curdate/$base.sql
    done

    echo "Begin compress databases"
    nice -n 15 tar -cz -f $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz $backupdir/$curdate/*.sql
    rm $backupdir/$curdate/*.sql

    # get filesize
    if [ $checkos = "1" ]; then
        sqlbackupfilesize=`stat -f %z $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz`
        else
        sqlbackupfilesize=`stat -c %s $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz`
    fi

    if [ $encryptbackup = YES ]; then
        echo "Begin encrypt databases archive"

        echo "$encryptkey" | $gpgpath/gpg --no-tty --passphrase-fd 0 --cipher-algo AES256  -cq $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz
        rm $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz

        # get filesize for gpg files
        if [ $checkos = "1" ]; then
            sqlbackupfilesizegpg=`stat -f %z $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext`
            else
            sqlbackupfilesizegpg=`stat -c %s $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext`
        fi
    fi

    if [ $uploadbackup = YES ]; then
        echo "Begin upload databases archive"
        ftp -i -n $ftphost 2>&1 1>>$scriptdir/ftpdump.txt <<END_SCRIPT
        quote USER $ftpuser
        quote PASS $ftppass
        binary
        put $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext /$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext
        quit
END_SCRIPT
    fi

    if [ $savelocalbackup = NO ]; then
        echo "Remove local copy databases archive"
        rm $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz
        rm $backupdir/$curdate/$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext
    fi
fi

# create and upload file backup
if [ $filebackup = YES ]; then
    echo "Begin compress files archive"

    nice -n 15 tar -cz $newerparam -f $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz -T $incfile -X $exfile

    # get filesize
    if [ $checkos = "1" ]; then
        filebackupfilesize=`stat -f %z $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz`
        else
        filebackupfilesize=`stat -c %s $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz`
    fi

    if [ $encryptbackup = YES ]; then
        echo "Begin encrypt files archive"

        echo "$encryptkey" | $gpgpath/gpg --no-tty --passphrase-fd 0 --cipher-algo AES256  -cq $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz
        rm $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz

        # get filesize for gpg files
        if [ $checkos = "1" ]; then
            filebackupfilesizegpg=`stat -f %z $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext`
            else
            filebackupfilesizegpg=`stat -c %s $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext`
        fi
    fi

    if [ $uploadbackup = YES ]; then
        echo "Begin upload files archive"
        ftp -i -n $ftphost 2>&1 1>>$scriptdir/ftpdump.txt <<END_SCRIPT
        quote USER $ftpuser
        quote PASS $ftppass
        binary
        put $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext /$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext
        quit
END_SCRIPT
    fi

    if [ $savelocalbackup = NO ]; then
        echo "Begin remove local copy files archive"
        rm $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz
        rm $backupdir/$curdate/$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext
    fi
fi


# update special file for incremental backup
touch $scriptdir/metka

backupenddate=`date "+%Y-%m-%d %H:%M %Z%n"`

# send result e-mail
if [ -f $backupdir/report ];  then
    rm $backupdir/report
fi

if [ $emailresult = YES ]; then
    echo "Send a e-mail with the results"

    echo "Subject: $hostn `date "+%Y-%m-%d%n"` backup result" >> $backupdir/report

    echo "Backup started: $backupstartdate
Backup ended: $backupenddate" >> $backupdir/report

    echo "After backup free space on "$backupdir" - "`df -m $backupdir | grep dev | awk '{print $4}'`" MB" >> $backupdir/report

    if [ $filebackup = YES ]; then
        echo "Current file backup - "$filebackupfilesize" bytes - "$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz >> $backupdir/report

        if [ $encryptbackup = YES ]; then
            echo "Current encrypted file backup - "$filebackupfilesizegpg" bytes - "$hostn-$backuptype-file-backup-$curdatewithhours-$salt.tar.gz$gpgext >> $backupdir/report
        fi
    fi

    if [ $mysql = YES ]; then
        echo "Current mysql backup - "$sqlbackupfilesize" bytes - "$hostn-sql-backup-$curdatewithhours-$salt.tar.gz >> $backupdir/report

        if [ $encryptbackup = YES ]; then
            echo "Current encrypted mysql backup - "$sqlbackupfilesizegpg" bytes - "$hostn-sql-backup-$curdatewithhours-$salt.tar.gz$gpgext >> $backupdir/report
        fi
    fi

    if [ $uploadbackup = YES ]; then
        echo "Error during ftp upload: " >> $backupdir/report
        cat $scriptdir"/ftpdump.txt" >> $backupdir/report
    fi

    echo "
Local backup folder statistics:" >> $backupdir/report
    if [ $checkos = "1" ]; then
        du -hc -d 1 $backupdir >> $backupdir/report
        else
        du -hc --max-depth=1 $backupdir >> $backupdir/report
    fi

    cat $backupdir/report | $sendmailpath"/sendmail" $emailforresult
    rm $backupdir/report
fi

echo "Backup complete"
exit

Файл exfile

/var/log/
/home/mysql
*.bz2
*.err
*.flv
*.log
*.zzz
*.rar
*.wmv
*.gz
*.bz2
*.avi
*.zip

Файл incfile

/etc
/usr/local/etc

файл install.txt

INSTALLATION:

1. Copy this folder to /etc/
2. Create "backupdir" folder
3. Edit "incfile" (dirs are included in the backup) and "exfile" (dirs deleted from the backup) files
4. If need - create SQL user for backup and set "mysql" to YES
5. If need - set "encryptbackup" to YES and set encryptkey. To decrypt use "gpg -o output_filename.tar.gz -d encrypted_filename.gpg"
6. Setup "emailforresult"
7. Configure spacer.sh to check the free space
8. Create cron task. For example, for full backup, at first day of month .. and check free space:
###################
5       7       1       *       *       root    /etc/backup-complect/spacer.sh 2> /dev/null
15       7       1       *       *       root    /etc/backup-complect/backup.sh 2> /dev/null
###################
9. Perform the test run:
cd /etc/backup-complect
./backup.sh


IMPORTANT!
Do not forget to do a test restore!

Файл spacer.sh

#!/bin/sh

# Kiloservers free space and count files checker.
# The script deletes old files from "backupdir" until not enough free space
# OR
# deletes old files from "backupdir" until number of files reaches the required
# Last changes from: 23-07-2009

# Settings
mode="space" # work mode: "space" or "count".
minfreespace="5000" # Minimal free space in MB. Actual for "space" mode
count="6" # how many files stored. Actual for "count" mode
backupdir="/home/backup" # directory to check

### Begin ###
echo "Mode $mode active"

# check OS
checkos=`uname -a | grep -c "FreeBSD"`

if [ $mode = "space" ]; then
    while [ `df -m $backupdir | grep dev | awk '{print $4}'` -lt $minfreespace ]
    do
        if [ $checkos = "1" ]; then
            filetodelete=`find $backupdir -type f -exec stat -f "%Sm %N" -t %Y%m%d%H%M%S {} \; | sort -n | head -1 | cut -d' ' -f2`
            else
            filetodelete=`find $backupdir -type f -exec stat -c "%Y %n" {} \; | sort -n | head -1 | cut -d' ' -f2`
        fi

        if [ -z $filetodelete ]; then
            echo "No files found. Exit"
            exit
            else
            rm $filetodelete
            echo "Deleted $filetodelete"
        fi
    done
fi

if [ $mode = "count" ]; then
    while [ `find $backupdir -type f | wc -l` -gt $count ]
    do
        if [ $checkos = "1" ]; then
            filetodelete=`find $backupdir -type f -exec stat -f "%Sm %N" -t %Y%m%d%H%M%S {} \; | sort -n | head -1 | cut -d' ' -f2`
            else
            filetodelete=`find $backupdir -type f -exec stat -c "%Y %n" {} \; | sort -n | head -1 | cut -d' ' -f2`
        fi

        if [ -z $filetodelete ]; then
            echo "No files found. Exit"
            exit
            else
            rm $filetodelete
            echo "Deleted $filetodelete"
        fi
    done
fi

echo "Check complete"

FreeBSD, linux, Uncategorized ,

Автообновление базы GeoIP в CentOS

June 8th, 2009

Для базы по странам добавить в crontab:

cd /usr/share/GeoIP/ && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip -f GeoIP.dat.gz

Для базы по городам:

cd /usr/share/GeoIP/ && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz && gunzip -f GeoLiteCity.dat && mv ./GeoLiteCity.dat ./GeoIPCity.dat

Uncategorized

Уведомление о состоянии RAID в linux (mdadm) и FreeBSD (gmirror)

February 24th, 2009

Для получения на почту уведомлений о изменении состояния программного рэйда построенного на базе mdadm надо добавить в /etc/mdadm.conf:

MAILADDR admin@domain.com

и сделать:

/etc/init.d/mdadm restart

Посмотреть состояние RAID вручную:

cat /proc/mdstat

Для включения уведомлений о состоянии рэйда в ежедневные отчеты во FreeBSD надо добавить в /etc/periodic.conf:

daily_status_gmirror_enable="YES"

Посмотреть состояние RAID вручную:

gmirror status

Uncategorized

Многопоточная консольная качалка

February 11th, 2009

Иногда появляется необходимость перелить с одного сервака на другой какой-нибудь большой архив в пару десятков гигабайт. Обычным wget-ом или fetch-ем это будет медленно, потому как в один поток. Тогда на помощь приходит ProZilla. Сия тулза есть во фревых портах, а вот репозиторий для yum-а мне найти не удалось. Прийдется ставить из rpm-ки с офсайта или здесь

Uncategorized

Краткая шпаргалка по использованию screen

February 2nd, 2009

screen – запускаем сессию скрина
exit – завершение сессии
Ctrl+A ? – справка
Ctrl+a c для открытия нового окна
Ctrl+a n для переключения на следующеее окно
Ctrl+a p для переключения на предыдущее окно
Ctrl+a d для отсоединения от сессии
screen -ls для просмотра активных сессий
screen -r <идентификатор сессии> для подключения к определенной сессии
screen -RD name
в данном случае, если сессии нет – она создастся. Если сессия есть, и она находится в фоне – то к ней будет произведено подключение. И даже если сессия сейчас активна, произойдёт её отключение от предыдущего терминала, и подключение к нынешнему.

Отличная подробная статья на тему использования screen

Uncategorized