script

Bacula: prune all volumes from all pools

http://old.nabble.com/prune-from-a-script-td16259610.html

#!/bin/sh
 
volumes=`mysql -ubacula -B -e'select VolumeName from Media order by VolumeName;' bacula | tail -n+2`
 
for vol in `echo $volumes`
do
   echo "prune volume=${vol} yes" | bconsole
done 

mysql репликация

в случае падения репликации, а такое иногда бывает в непредвиденных обстоятельствах, заново поднимать её ацки лень бывает.
поэтому сделал механизм, с помощью которого можно восстановить всё одной командой.

НА МАСТЕРЕ:
добавить в /etc/mysql/my.conf

[mysqld]
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M

по крону раз в сутки запускается скрипт, который дампит базу и записывает в файл номер bin-лога и позицию

скрипт backup_db.sh:

Дополнительные изображения товара в hostcms

http://www.hostcms.ru/forums/17/1093/

или мой вариант кода без использования JavaScript

	<!-- Шаблон вывода дополнительных свойств -->
 
	<xsl:template match="property">
		<p>
			<xsl:choose>
				<xsl:when test="type = '1'"><b><xsl:value-of disable-output-escaping="yes"
						select="name"/>:</b>&#xA0;
					<xsl:if test="small_image != ''">
						<a href="{file_path}" target="_blank">
							<img src="{small_image/file_path}" class="image" />
						</a>
					</xsl:if>
 
				</xsl:when>
 
				<xsl:otherwise>
 

rsync incremental backup

mv backup.3 backup.tmp
mv backup.2 backup.3
mv backup.1 backup.2
mv backup.0 backup.1
mv backup.tmp backup.0
cp -al backup.1/. backup.0   #make hard links
rsync -a --delete source_directory/ backup.0/   #rsync always unlinks before overwriting

Патчим torrent-файлы для ретрекера на лету

правила iptables

iptables -t nat -N TRACKERS
# ловим пакеты, идущие на трекеры
iptables -t mangle -A PREROUTING -m string --string "Content-Type: application/x-bittorrent" --algo kmp --to 1500 -j LOG
# передаем проксе пакеты, идущие на трекер
iptables -t nat -A TRACKERS -s 176.16.8.0/22 -j ACCEPT
iptables -t nat -A TRACKERS -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A TRACKERS -j ACCEPT

остальные правила добавляются скриптом get_tracker_list
#!/bin/bash

A bash forkbomb

не стоит запускать без ulimit -u кол-во_процессов
$ :(){ :|:& };:

шейпер на скорую руку

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit burst 20k
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20mbit burst 20k prio 2
tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip dst 192.168.0.5 flowid 1:10

получить список подсетей из кваги и залить по ftp

#!/bin/bash
# получает список подсетей эр-телекома и заливает его по фтп
file=/tmp/peering_subnets
echo "sh ip rout bgp" | vtysh | grep 95.79.56.42 | awk {'print $2'} > $file
echo "send $file" | pftp lt.lan
rm $file

remote tar

#get
$ ssh user@host "tar zcf - /var/lib/mysql" > file.tar.gz

#send
$ tar zcf - /var/lib/mysql | ssh user@host "cat > file.tar.gz"

замена строки в нескольких файлах

find -type f -iname *.txt | xargs perl -p -i -e 's/foo/bar/g'