Latest posts

Исключаем из лога apache запросы

On: понедельник, 31 августа 2009 г.

Вообщем обновление одного запроса может быть раз в 1сек, и мне он не особо важен в логе, поэтому я его исключаю для чистоты лога :)

Добавляем в конфиге виртуального хоста:

SetEnvIf Request_URI /toolbar/chat/$ nolog #сообственно сам запрос 
SetEnvIf Request_URI /update_online_status/$ nolog
И в конец лога добавим env=!nolog

CustomLog "/usr/local/www/logs/filmnettrio.com-access.log" combined env=!nolog
Вот и все.

ffmpeg из SVN

On: среда, 29 июля 2009 г.

Понадобилось на сервере поставить свежий ffmpeg. В портах он уж явно старый. Поэтому выкачали из svn

svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
Далее 

./configure --disable-devices --disable-ipv6 --enable-nonfree --enable-libx264 --enable-libfaac --enable-gpl --enable-pthreads --extra-cflags=-DBROKEN_RELOCATIONS --extra-cflags=-I/usr/local/include --extra-libs=-L/usr/local/lib
gmake
gmake install
Все пользуемся новым ffmpeg

Массовое переименование файлов с помощью утилиты find

On: понедельник, 6 июля 2009 г.

#!/bin/sh


# Определяем глубину вложенности директорий

depth=$((`find "$1" -type d -print | \

      sed -E 's/[^\/]+//g' | \

      sort | tail -n 1 | \

      wc -c`+1));

# Макрос, переименовывающий файлы и директории

replacer='new="`dirname "{}"`/`basename "{}" | sed "s/ /_/g"`"; if [ "$new" != "{}" ]; then mv "{}" "$new"; fi;';

# Обходим все уровни вложенности

while [ $depth -ge 0 ];

do

    # Находим и заменяем 

    find "$1" -depth $depth -and -name '* *' -print -exec sh -c "$replacer" \;

    # Меняем уровень вложенности

    depth=$(($depth-1));

done;

FreeBSD Размер папки

On: вторник, 24 марта 2009 г.

# du -hsx ./
П.С. что б было :)

Генератор случайного 8-ми символьного пароля

On: понедельник, 8 сентября 2008 г.

#!/bin/bash
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
LENGTH="8"
# ==> 'LENGTH' можно увеличить, для генерации более длинных паролей.


while [ "${n:=1}" -le "$LENGTH" ]
do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
# ==> echo "$PASS"
let n+=1
done

echo "$PASS"

exit 0


(c)Advanced Bash-Scripting Guide: Искусство
программирования на языке сценариев командной оболочки;
Версия 2.5 (15 февраля 2004)

Find and rm

On: суббота, 6 сентября 2008 г.

Найти файлы по шаблону и удалить их:
find . -name "шаблон" | while read f; do rm -r "$f" ; done

Массовое переименование файлов

On: среда, 3 сентября 2008 г.

Понадобилось переименовать кучу файлов в переходя по директориям. Такое задание давали, когда принимали на работу, но я как то отморозился от него. А тут пришлось сделать. Нашел в книге по shell'у пример про переименование файлов и вывод дерева катологов. Соедив вместе получилось вот такое:

#!/bin/sh

search () {
for dir in `echo *`
do
if [ -d "$dir" ] ; then # ==> Если это каталог (-d)...
zz=0 # ==> Временная переменная, для сохранения уровня вложенности каталога.
while [ $zz != $deep ] # Keep track of inner nested loop.
do
zz=`expr $zz + 1` # ==> Нарастить zz.
done
if cd "$dir" ; then # ==> Если можно войти в каталог...
deep=`expr $deep + 1` # ==> Нарастить уровень вложенности.
search # рекурсия ;-)
numdirs=`expr $numdirs + 1` # ==> Нарастить счетчик каталогов.
fi
fi
done
##################переименовываем
for i in `ls | grep -e ".*\.tt"`
do
name=`echo "$i" | sed 's/ШАБЛОН_ДЛЯ_ЗАМЕНЫ/ЧЕМ_ЗАМЕНЯЕМ/'`
mv "$i" "$name" #если нужно оставить копию, то заменяем mv на cp
done
##########################################

cd .. # ==> Подняться на один уровень вверх.
if [ "$deep" ] ; then # ==> Если depth = 0 (возвращает TRUE)...
swfi=1 # ==> выставить признак окончания поиска.
fi
deep=`expr $deep - 1` # ==> Уменьшить уровень вложенности.
}

# - Main -
if [ $# = 0 ] ; then
cd `pwd` # ==> Если аргумент командной строки отсутствует, то используется текущий каталог.
else
cd $1 # ==> иначе перейти в заданный каталог.
fi
echo "Начальный каталог = `pwd`"
swfi=0 # ==> Признак завершения поиска.
deep=0 # ==> Уровень вложенности.
numdirs=0
zz=0

while [ "$swfi" != 1 ] # Пока поиск не закончен...
do
search # ==> Вызвать функцию поиска.
done
echo "Всего каталогов = $numdirs"

exit 0



запускаем его в нужной нам директории и все.