pptp чекер

LOG="/var/log/pptp-run.log"
PID="/var/run/ppp0.pid"

while true; do
echo -e "\n========================\n`date`" >> $LOG
if [ -f $PID ]; then
echo "ok" >> /dev/null
else
/usr/sbin/pptp 192.168.55.41 >> $LOG
fi
sleep 30s;
done

Парсер репозиториев убунту(дебиан)

RSYNCSOURCE=rsync://ftp.corbina.net/ubuntu
BASEDIR=/tmp/ubuntu
mkdir -p ${BASEDIR}/dists/lucid/main/binary-i386/
mkdir -p ${BASEDIR}/dists/lucid/main/binary-amd64/
mkdir -p ${BASEDIR}/dists/lucid/multiverse/binary-i386/
mkdir -p ${BASEDIR}/dists/lucid/multiverse/binary-amd64/
mkdir -p ${BASEDIR}/dists/lucid/restricted/binary-i386/
mkdir -p ${BASEDIR}/dists/lucid/restricted/binary-amd64/
mkdir -p ${BASEDIR}/dists/lucid/universe/binary-i386/
mkdir -p ${BASEDIR}/dists/lucid/universe/binary-amd64/

if [ -f ${BASEDIR}/excluded.lst ]; then
rm ${BASEDIR}/excluded.lst
echo "Удалена предыдущая версии исключения пакетов"
fi
if [ -f ${BASEDIR}/includes.lst ]; then
rm ${BASEDIR}/includes.lst
echo "Удалена предыдущая версия списка пакетов"
fi
echo "Сбор информации о пакетах"
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/main/binary-i386/Packages.bz2 ${BASEDIR}/dists/lucid/main/binary-i386/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/main/binary-amd64/Packages.bz2 ${BASEDIR}/dists/lucid/main/binary-amd64/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/multiverse/binary-i386/Packages.bz2 ${BASEDIR}/dists/lucid/multiverse/binary-i386/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/multiverse/binary-amd64/Packages.bz2 ${BASEDIR}/dists/lucid/multiverse/binary-amd64/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/restricted/binary-i386/Packages.bz2 ${BASEDIR}/dists/lucid/restricted/binary-i386/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/restricted/binary-amd64/Packages.bz2 ${BASEDIR}/dists/lucid/restricted/binary-amd64/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/universe/binary-i386/Packages.bz2 ${BASEDIR}/dists/lucid/universe/binary-i386/
rsync -v --progress ${RSYNCSOURCE}/dists/lucid/universe/binary-amd64/Packages.bz2 ${BASEDIR}/dists/lucid/universe/binary-amd64/
echo "Создание списка программного обеспечения"
bzcat ${BASEDIR}/dists/lucid/main/binary-i386/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/main/binary-amd64/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/multiverse/binary-i386/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/multiverse/binary-amd64/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/restricted/binary-i386/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/restricted/binary-amd64/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/universe/binary-i386/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
bzcat ${BASEDIR}/dists/lucid/universe/binary-amd64/Packages.bz2 | grep "Filename:" | awk '{print $2}' >> ${BASEDIR}/includes.lst
echo "Создание списка исключений"
echo "*" > ${BASEDIR}/excluded.lst
echo "Синхронизация"
rsync --recursive --times --links --hard-links -v --progress --stats --compress --files-from="${BASEDIR}/includes.lst" ${RSYNCSOURCE}/ ${BASEDIR}

# --include-from "${BASEDIR}/includes.lst" --exclude-from "${BASEDIR}/excluded.lst" ${RSYNCSOURCE} ${BASEDIR}

создание снимков portage

DATE=`/bin/date "+%Y%m%d"`
PORTDIR="/usr/portage/"
FILENAME="portage"
SAVEDIR="/home/ftp/gentoo/portage/"
OPTIONS="Create Erase Check Quit"
echo -e '\E[37;44m'"\033[1mToday : `/bin/date "+%c"`\033[0m"; tput sgr0
select opt in $OPTIONS; do
if [ "$opt" = "Create" ]; then
echo -e '\E[37;44m'"\033[1mCreate tar arch\033[0m" ; tput sgr0
time tar cf $SAVEDIR$FILENAME-$DATE.tar $PORTDIR
echo -e '\E[37;44m'"\033[1mbzip2 file\033[0m" ; tput sgr0
time bzip2 $SAVEDIR$FILENAME-$DATE.tar
md5sum $SAVEDIR$FILENAME-$DATE.tar.bz2 >> $SAVEDIR$FILENAME-$DATE.tar.bz2.md5sum
ls -lh $SAVEDIR$FILENAME-$DATE.tar.bz2 | gawk '{ print $9"\t" $5}'
elif [ "$opt" = "Quit" ]; then
echo -e '\E[37;44m'"\033[1mQuit...\033[0m" ; tput sgr0
exit
elif [ "$opt" = "Erase" ]; then
echo -e '\E[37;44m'"\033[1mPlease enter date for delete:\033[0m" ; tput sgr0
read UDATE
rm -i $SAVEDIR$FILENAME-$UDATE.tar.bz2
rm -i $SAVEDIR$FILENAME-$UDATE.tar.bz2.md5sum
elif [ "$opt" = "Check" ]; then
echo -e '\E[37;44m'"\033[1mPlease enter date for check:\033[0m" ; tput sgr0
read UDATE
cd $SAVEDIR
md5sum -w -c $FILENAME-$UDATE.tar.bz2.md5sum
fi
done

QOS в Linux

Пример реализации трафик шейпера в корпоративной сети.

tc qdisc del dev ppp0 root
tc qdisc add dev ppp0 root handle 1: htb default 2
tc class add dev ppp0 parent 1: classid 1:1 htb rate 9mbit
# BAD
tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 8kbit prio 7
tc qdisc add dev ppp0 parent 1:2 handle 2: sfq perturb 7
# NORMAL
tc class add dev ppp0 parent 1:1 classid 1:3 htb rate 128kbit prio 3
tc qdisc add dev ppp0 parent 1:3 handle 3: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 21 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 20 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 109 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 6677 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 5190 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 5222 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 2041 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 2042 0xffff classid 1:3
# GOOD
tc class add dev ppp0 parent 1:1 classid 1:4 htb rate 256kbit ceil 512kbit prio 2
tc qdisc add dev ppp0 parent 1:4 handle 4: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 25 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 110 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 143 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 220 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 465 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 995 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 993 0xffff classid 1:4
# HIGH
tc class add dev ppp0 parent 1:1 classid 1:5 htb rate 1mbit ceil 5mbit prio 1
tc qdisc add dev ppp0 parent 1:5 handle 5: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 8080 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 8081 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 53 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 80 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 443 0xffff classid 1:5
# VERY HIGH
tc class add dev ppp0 parent 1:1 classid 1:6 htb rate 9mbit prio 0
tc qdisc add dev ppp0 parent 1:6 handle 6: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 3389 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 4444 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 22 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip dport 33333 0xffff classid 1:6

сжатие логов Metalog

Добавляем в cron и жмем каждую ночь логи бзипом.
cd /var/log/
#!/bin/bash
for f in `find -name 'log-*' -a ! -name '*.bz2' -a ! -name 'current'`; do
echo "current file: $f"
bzip2 -f -v -9 $f
done