apt-get install transmission-cli
transmissioncli -w /storage/ debian-6.0.6-amd64-CD-1.iso.torrent
Вот думаю на основе этого сделать торрентокачалку облачную..
пятница, 28 декабря 2012 г.
вторник, 18 декабря 2012 г.
Linux Maker Blog: Поднимаем сервер виртуализации на Centos 6.3 (libv...
Задача
- Иметь сервер виртуализации на Centos 6.3 (qemu/kvm, с libvirt-обёрткой).
- Иметь возможность устанавливать виртуальные машины на основе шаблонов.
Решение
Linux Maker Blog: Поднимаем сервер виртуализации.вторник, 11 декабря 2012 г.
Centos 6.2 и авторизация по ключам в ssh
Заработало только после отключения SeLinux
Ещё была проблема Authentication refused: bad ownership or modes for directory /home/hard/.ssh
Решилась установкой прав 600 на папку .ssh и 700 на файл authorized_keys.
четверг, 6 декабря 2012 г.
Openssl rsa sign create and check example
#!/bin/bash
echo 'Задница' > file.txt
openssl genrsa -out rsa.pvt 1024
openssl rsa -in rsa.pvt -pubout -out rsa.pub
openssl dgst -sign rsa.pvt -out sign.txt -md5 file.txt
openssl dgst -verify rsa.pub -signature sign.txt file.txt
echo 'Задница' > file.txt
openssl genrsa -out rsa.pvt 1024
openssl rsa -in rsa.pvt -pubout -out rsa.pub
openssl dgst -sign rsa.pvt -out sign.txt -md5 file.txt
openssl dgst -verify rsa.pub -signature sign.txt file.txt
среда, 12 сентября 2012 г.
Проект которым я сейчас занимаюсь: Ideco AS.
Linux Maker Blog: Один классный сервер доступа, которым я занимаюсь: Ideco AS 3 Уже около полугода я занимаюсь сервером доступа, созданного для максимально быстрой установки и настройки для работы с биллингом Ideco АСР...
четверг, 30 августа 2012 г.
How to send key to running KVM guests from bash
I don't recommend this way, but I didn't found any another.
It works at rhel 6:
[root@virt ~]# LANG=C virsh version
Compiled against library: libvir 0.8.7
Using library: libvir 0.8.7
Using API: QEMU 0.8.7
Running hypervisor: QEMU 0.12.1
On ubuntu 10.04 virsh haven't command:
qemu-monitor-command
Some working shell to send strings:
#!/bin/bash
if [ "$#" = 0 -o "$1" = '--help' ]; then
echo "Usage $(basename $0): <Domain> '<String>'"
exit 66
fi
exec 1>/dev/null
MACHINE="$1"; shift
echo "$*" | grep -o . | while IFS= read key; do
[ "$key" = " " ] && key='spc'
[ ! -n "$key" ] && continue
virsh qemu-monitor-command --hmp "$MACHINE" "sendkey $key"
done
virsh qemu-monitor-command --hmp "$MACHINE" 'sendkey kp_enter'
It works at rhel 6:
[root@virt ~]# LANG=C virsh version
Compiled against library: libvir 0.8.7
Using library: libvir 0.8.7
Using API: QEMU 0.8.7
Running hypervisor: QEMU 0.12.1
On ubuntu 10.04 virsh haven't command:
qemu-monitor-command
Some working shell to send strings:
#!/bin/bash
if [ "$#" = 0 -o "$1" = '--help' ]; then
echo "Usage $(basename $0): <Domain> '<String>'"
exit 66
fi
exec 1>/dev/null
MACHINE="$1"; shift
echo "$*" | grep -o . | while IFS= read key; do
[ "$key" = " " ] && key='spc'
[ ! -n "$key" ] && continue
virsh qemu-monitor-command --hmp "$MACHINE" "sendkey $key"
done
virsh qemu-monitor-command --hmp "$MACHINE" 'sendkey kp_enter'
среда, 18 июля 2012 г.
Alignment column in bash
echo "_${name}${s:0:${#s}-${#name}}_"
update: а можно проще
g=some_string
printf "%-20s %d\n" ${g} ${#g}
update: а можно проще
g=some_string
printf "%-20s %d\n" ${g} ${#g}
вторник, 10 июля 2012 г.
понедельник, 11 июня 2012 г.
Nonauto upping VPN to office example
pppd nodeflate nobsdcomp require-mppe pty "pptp $GATEWAY --nolaunchpppd" user "$USERNAME" password "$PASSWORD"
четверг, 10 мая 2012 г.
How to disconnect all pppoe connections to your server?
ps ax | grep pppd | egrep -v "(pptp|E|grep)" | while read PID tmp; do
kill -HUP $PID
done
1. Grep all pppd processes
2. Filters out our grep process pid, all pptp (VPN) connections. 'E' means external interface in my current project, you can dismiss it.
3. Read in PID variable pid of remaining processes and kill -HUP them one by one.
Q: Why kill them?
A: If you restart networking, ppp interfaces (for pppoe) on server are removed, but on clients they still up, but gives no access to the internets. HUP disconnect them correctly.
kill -HUP $PID
done
1. Grep all pppd processes
2. Filters out our grep process pid, all pptp (VPN) connections. 'E' means external interface in my current project, you can dismiss it.
3. Read in PID variable pid of remaining processes and kill -HUP them one by one.
Q: Why kill them?
A: If you restart networking, ppp interfaces (for pppoe) on server are removed, but on clients they still up, but gives no access to the internets. HUP disconnect them correctly.
пятница, 6 апреля 2012 г.
пятница, 30 марта 2012 г.
virdiff 0.9
Теперь поправлены тонны косяков
http://paste.ubuntu.com/906837/
me:~$ cat /etc/rdiff-backup/machines
git
jira
confluence
http://paste.ubuntu.com/906837/
me:~$ cat /etc/rdiff-backup/machines
git
jira
confluence
воскресенье, 11 марта 2012 г.
Simple DNAT function
makednat() {
[ "$#" != "3" ] && return 1
iptables -t nat -I PREROUTING -p tcp --dport $1 -j DNAT --to-dest $2:$3
iptables -I FORWARD -s $2 -j ACCEPT
iptables -I FORWARD -d $2 -j ACCEPT
}
makednat 8686 10.80.140.1 22 #desktop
Libvirtd virtual machines backup
Задача
Сделать полноценную систему копирования с конфиг файлом состоящим из... списка имён виртуальных машинИспользуемый софт
- libvirtd (qemu + kvm) для виртуализации
- ssh для связи с сервером виртуализации
- rdiff-backup для создания резервных копий
- bash для создания удобной обёртки
- cron для автоматизации всего этого безумия
Реализация
Итак, как было указано выше, в качестве конфига - список имён виртуалок.Учитывая то, что сервер виртуализации один, то его адрес является константой и задаётся в скрипте.
Что из себя представляет бэкап виртуальной машины?
- Его конфиг в xml
- Все его виртуальные диски
Как получить всю эту радость
XML описание
echo “virsh dumpxml $machine” | ssh root@$remotehost &1>$backupdir$machine.xmlСписок дисков
egrep -o \/.*\”(img|qcow|qcow2)\”” $backupdir$machine.xml &1>/tmp/$machine.disk.list.$$Скорость создания бэкапа
Поскольку горячая копия дисков является небезопасной, то предварительно виртуальные машины должны быть выключены (не с помощью destroy, а с помощью shutdown). Следовательно операционная система должна поддерживать работу с ACPI.Если время в течении которого виртуальная машина выключена критично, то оптимальный алгоритм выглядит следующим образом
#!/bin/bash REMOTEHOST=10.80.1.120 set -x [ -n "$1" ] || exit 1 MACHINES="/etc/rdiff-backup/machine" BACKUPDIR="/storage/backup/$1/" SSH="ssh root@$REMOTEHOST" [ -f "$MACHINES" ] || exit 2 if [ ! -w "$BACKUPDIR" -o ! -d "$BACKUPDIR" ]; then mkdir "$BACKUPDIR" || exit 3 fi echo "Start time: $(date +%H:%M:%S)" while read machine; do # паузим виртуалку echo "virsh dumpxml $machine" | $SSH 1>$BACKUPDIR$machine.xml cat $BACKUPDIR$machine.xml echo "virsh shutdown $machine" | $SSH # ждём пока она вырубится while true; do echo "virsh shutdown $machine" | $SSH echo "virsh list" | $SSH | grep "$machine" [ $? = 0 ] && sleep 10 || break done # получаем список дисков list=$(egrep -o "/.*(img|qcow|qcow2)" $BACKUPDIR$machine.xml) for i in $list; do # копируем их на удаленном хосте в temp echo $i echo "cp -f $i /tmp/${i##*/}" | $SSH done # стартуем виртуалку чтобы не простаивала echo "virsh start $machine" | $SSH # забираем rdiff'ом for i in $list; do rdir="/tmp/" ldir="$BACKUPDIR$machine" [ -d "$ldir" ] || mkdir "$ldir" [ -d "$ldir" -a -w "$ldir" ] || exit 4 pattern="${i##*/}" echo -n "$REMOTEHOST:${rdir}${pattern} > $ldir"... rdiff-backup --create-full-path --exclude-symbolic-links --exclude-sockets --exclude-special-files --exclude-fifos --exclude-device-files --include-regexp ".*($pattern)" \ --exclude $rdir $REMOTEHOST::$rdir $ldir echo '... Done!' rm -f $rdir$pattern done done < $MACHINES echo "End time: $(date +%H:%M:%S)"
Автоматизация
Я автоматизировал бэкапы по крону, сделав три конфига:- daily
- weekly
- monthly
Нужный кусок кронтаба выглядит следующим образом:
#TODO
четверг, 23 февраля 2012 г.
Service Uptime
#!/bin/bash
echo $((`date +%s`-`stat -c %Y /var/run/$1.pid`))
usage: servicetime snmpd
output: time in seconds
echo $((`date +%s`-`stat -c %Y /var/run/$1.pid`))
usage: servicetime snmpd
output: time in seconds
четверг, 9 февраля 2012 г.
vi: multiline autoreplace (s/something\nsomething2//g)
vi -c "%s/.*network {$\n^}//g" -c "wq" test
It will find in file all empty network-sections and delete them.
network {
}
четверг, 19 января 2012 г.
Simple shell for virt-viewer
#!/bin/bash
sudo virsh list | cut -d " " -f4 | cat -n | tee /tmp/virshlist.$$
echo -n "Подключиться к: "
read number
if [ "$number" = "0" ]; then
exit 0
else
name="$(cat /tmp/virshlist.$$ | head -$number | tail -1 | awk '{print $2}')"
rm -f /tmp/virshlist.$$
sudo virt-viewer "$name" || exit 2
fi
rm -f /tmp/virshlist.$$ exit 0
sudo virsh list | cut -d " " -f4 | cat -n | tee /tmp/virshlist.$$
echo -n "Подключиться к: "
read number
if [ "$number" = "0" ]; then
exit 0
else
name="$(cat /tmp/virshlist.$$ | head -$number | tail -1 | awk '{print $2}')"
rm -f /tmp/virshlist.$$
sudo virt-viewer "$name" || exit 2
fi
rm -f /tmp/virshlist.$$ exit 0
суббота, 7 января 2012 г.
Подписаться на:
Комментарии (Atom)