2014-03-20

Linux. Склерозник. Полезные наборы команд.

Рекурсивно подсчитает количество файлов в текущем каталоге и всех вложенных

find . -type f|wc -l

Смотрим изменения в файле в динамике

watch -n 1 -d "egrep 'High|Low' /proc/meminfo"

Делаем локальную копию сайта

wget -r -k -l 7 -p -E -nc http://www.puschitz.com

Установка проски без редактирования конфигов

export http_proxy=http://10.77.111.111:3128

Проверяем, какие слорты ОЗУ на матери заняты, какие свободны:

dmidecode -t memory


Читать далее

2014-03-12

Автозапуск VM на XenServer 6.2

Как всегда только через консоль...

xe vm-param-set uuid=92c10c64-51cb-5ede-c257-f428b6f291a9 other-config:auto_poweron=true

Читать далее

2014-03-05

Xen Orchestra 3.2 Настройка сети

Из коробки виртуалка Xen Orchestra идет с сетевым интерфейсом, настроенным по DHCP.
Кстати, XOA3 сделан на базе Debian 7
Кто хочет статику, меняете файл /etc/network/interfaces. По умолчанию он такой:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

А у меня он такой:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback                                                                                                 
                                                                                                                       
# The primary network interface                                                                                        
allow-hotplug eth0                                                                                                     
iface eth0 inet static                                                                                                 
address 10.77.11.8                                                                                                     
netmask 255.255.255.0                                                                                                  
gateway 10.77.11.62                                                                                                    
auto eth0


Читать далее

Блокирование трафика с подсети (iptables)

Часто нужно залочить трафик с подсети на какой-то хост.
Делаем просто - на хосту, куда подсеть не должна попасть:

Блокировка диапазона ip

iptables -I INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Разблокирование диапазона ip

iptables -D INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Или аналогично с маской:

iptables -A INPUT -s 10.77.1.0/24 -j DROP
iptables -D INPUT -s 10.77.1.0/24 -j DROP

Читать далее

2014-03-04

SSH без пароля

Это реально удобно.
Реальная ситуация - есть два сервера, с одного на другой каждую ночь нужно копировать некий файл. Чтобы ничего не монтировать, не настраивать nsf или samba cisf, можно использовать scp, предварительно проведя небольшую настройку.

Итак, первый сервер adonis01. С него будет копироваться файл на второй сервер ora8t1. На обоих серверах динозаврик SLES8SP3(OpenSSH_3.4p1, SSH protocols 1.5/2.0)

ssh root@adonis01
adonis01:~ # ssh-keygen -t rsa -b4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:                                                                                           
Your identification has been saved in /root/.ssh/id_rsa.                                                               
Your public key has been saved in /root/.ssh/id_rsa.pub.                                                               
The key fingerprint is:                                                                                                
12:23:56:78::ab:cd:ef:12:ee:56:4r:58:e2:d8:d1 root@adonis01

После этого в /root/.ssh появилось 2 файла - id_rsa и id_rsa.pub

adonis01:~ # scp /root/.ssh/id_rsa.pub root@ora8t1:/root/.ssh/id_rsa_adonis01

ssh root@ora8t1
ora8t1:~ # cat /root/.ssh/id_rsa_adonis01 >> /root/.ssh/id_rsa_remote
ora8t1:~ # mcedit /etc/ssh/sshd_config

PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/id_rsa_remote
HostbasedAuthentication no
UseLogin no
ChallengeResponseAuthentication no
X11Forwarding yes
UsePrivilegeSeparation no
Subsystem       sftp    /usr/lib/ssh/sftp-server

ora8t1:~ # /etc/init.d/sshd restart

Все, настроили.
Проверяем

ssh root@adonis01
adonis01:~ # ssh ora8t1 df -hl

Должны получить нужный результат. Все, теперь для scp ничего вводить не надо - все будет работать без паролей.

Читать далее

2014-02-26

Старинные меры длины. Визуальненько.

Давно искал хороший склерозник для старинных мер длины. Вот у братухи в одноклассниках выхватил:



Читать далее

2014-02-24

Citrix XenServer 6.2 Изменение количества CPU

Бывает такая фигня - через интерфейс XenCenter невозможно изменить количество CPU. Вот так можно это сделать с консоли

[root@xen11 ~]# xe vm-param-set VCPUs-max=32 uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f
[root@xen11 ~]# xe vm-param-set VCPUs-at-startup=32 uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f
[root@xen11 ~]# xe vm-param-set PV-args='console=ttyS0 xencons=ttyS maxcpus=32'  uuid=7f905bc6-6d60-65fd-34f5-caa1121deb8f

Читать далее

2014-02-12

Пинок для оптимизатора PostgreSQL 9.1

Война с базой продолжается.
Вот программисты во время оптимизации запросов нашли набор параметров, который, по их словам, ускорил работу базы просто пипецкакофигенно... Я разницы не заметил, но может я не так смотрю. Параметры добавил в postgresql.conf

join_collapse_limit = 10
seq_page_cost = 0.0000001
random_page_cost = 0.0000001
cpu_operator_cost = 0.0000001
default_statistics_target = 3000
 

Читать далее

2014-02-07

Ловим засранцев на PostgreSQL 9.1, или кто подвесил базу...

У нас такая ситуация часто - какой-то запрос повесил блокировку, из-за которой все остальные запросы жестко сосут. Вот в интернете нашел метод, как таких гадов ловить :

SELECT usename, application_name, client_addr, client_hostname,
                NOW() - query_start as s, procpid, current_query, 'pg_ctl kill TERM '||procpid
FROM pg_stat_activity
WHERE current_query NOT IN ('','')
ORDER BY s DESC;

и убивать:

pg_ctl kill TERM сюда_вставить_procid


Читать далее

2014-01-20

CentOS 4.9 на Citrix XenServer 6.2 SP1. Пляски с бубном...

Если бы не необходимость переехать с VMWare ESXi Server на Citrix XenServer 6.2, никаких плясок с бубнами не было бы. А так...

Короче, нужно запустить Oracle 9iR2 на виртуальной машине linux. Как известно, варианта 2 - SLES9 либо CentOS4(или RHEL4). SLES9 на XenServer 6.2 не поддерживается, и не ставится, сука, хотя я и люблю его очень... Но поставить не удалось. Так что вариант 1 - RH4.

Итак, во склерозник по приведению CentOS4 в нормальное состояние для решения моей задачи:

1. Графики на CentOS в виртуальной консоли НЕ БУДЕТ!!! ВЫКУСИТЕ ФСЕ!!! Пипец. Когда ставишь с шаблоном для не поддерживаемых ВМ, графика есть, но есть и проблемы с настройкой ядра и установкой XenTools, а вот из шаблона графики нет. vncserver вам в помощь, хоть он работает... Но, внимание, уровень исполнения д.б. 5, так что редайтируйте inittab, а то замахаетесь руками между уровнями прыгать...

2. После обновления до 4.9 ломается yum, выдает ошибку:

Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.main(sys.argv[1:])
  File "/usr/share/yum-cli/yummain.py", line 97, in main
    result, resultmsgs = do()
  File "/usr/share/yum-cli/cli.py", line 477, in doCommands
    return self.updatePkgs()
  File "/usr/share/yum-cli/cli.py", line 955, in updatePkgs
    self.doRepoSetup()
  File "/usr/share/yum-cli/cli.py", line 71, in doRepoSetup
    yum.YumBase.doRepoSetup(self, thisrepo=thisrepo)
  File "__init__.py", line 225, in doRepoSetup
  File "repos.py", line 523, in baseurlSetup
  File "repos.py", line 832, in getMirrorList
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 583, in urlopen
    return default_grabber.urlopen(url, **kwargs)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 741, in urlopen
    return self._retry(opts, retryfunc, url)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 702, in _retry
    r = apply(func, (opts,) + args, {})
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 740, in retryfunc
    return URLGrabberFileObject(url, filename=None, opts=opts)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 893, in __init__
    self._do_open()
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 960, in _do_open
    fo, hdr = self._make_request(req, opener)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 1059, in _make_request
    fo = opener.open(req)
  File "/usr/lib/python2.3/urllib2.py", line 326, in open
    '_open', req)
  File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.3/urllib2.py", line 502, in
    lambda r, proxy=url, type=type, meth=self.proxy_open: \
  File "/usr/lib/python2.3/urllib2.py", line 509, in proxy_open
    if '@' in host:
TypeError: iterable argument required


Полечить можно только правильно прописав proxy в /etc/yum.conf


Читать далее

2013-12-19

Linux. Используем файл как файловую систему.

Мучались мы долго с квотированием файловых ресурсов на samba, в итоге пришли к простому решению. Делаем файл ограниченного размера, подключаем его как файловую систему, шарим через самбу. Все, никто никогда за пределы файла не вылезет:

Создаем и монтируем ресурс размером 100М:

dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1024 count=100000
mkfs.ext3 /files01/fs/alexsf.fs
mkdir /files01/mnt/alexsf
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf

Если нужно увеличить размер, например до 300М:

umount -l /files01/mnt/alexsf
dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1 count=0 seek=300M
e2fsck -f /files01/fs/alexsf.fs
resize2fs /files01/fs/alexsf.fs
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf
e2fsck -f /files01/fs/alexsf.fs

Проще в некоторых случаях создать новый файл,  смонтировать и перелить данные, а исходный удалить.

Для монтирования при загрузке, в /etc/fstab добавить

/files01/fs/alexsf.fs   /files01/mnt/alexsf     ext3    acl,user_xattr  1 0

С флагами внимательно, провтыкаете - сервер не загрузится. Если стремно постоянно редактировать fstab, что придется делать на большой файлопомойке, где порядка сотни самбовских шар, можно написать скриптец и запихнуть его в init.d, ну и линки соответственно сделать для вашего уровня выполнения.

Такой вот скрипт:

#! /bin/sh
#
# Copyright (c) 2013 Filippov A.S.
#
# /etc/init.d/mntusersfs
#
### BEGIN INIT INFO
# Provides:          mntusersfs
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network
# Default-Start:    3 5
# Default-Stop:    3 5
# Description:       Mount users filesystems
### END INIT INFO

. /etc/rc.status

rc_reset

case "$1" in
  start)
        echo "Mount users filesystems..."
        mount -v -t ext3 -o loop /files01/fs/a1.ext3 /files01/mnt/a1
        mount -v -t ext3 -o loop /files01/fs/a2.ext3 /files01/mnt/a2
        mount -v -t ext3 -o loop /files01/fs/alexsf.ext3 /files01/mnt/alexsf
        rc_status -v -r
        ;;
    stop)
        echo "Umount users filesystems..."
        umount -l -v /files01/mnt/a1
        umount -l -v /files01/mnt/a2
        umount -l -v /files01/mnt/alexsf
        rc_status -v
        ;;
    status)
        mount -l -t ext3
        ;;
    restart)
        $0 stop
        $0 start
        rc_status
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
        exit 1
        ;;
esac

rc_exit

В этом случае при провтыке в скрипте он просто не отработает целиком. Ошибки легче исправлять на живой системе :)

А вот так ставим на автозагрузку:

chkconfig mntusersfs on

Спустя пять дней закончились loop devices. Сейчас делаю так(номер loop увеличиваю при создании новой ФС)

dd if=/dev/zero of=/files01/userfs/admsektor.ext3 bs=1024 count=2048000
mkfs.ext3 /files01/userfs/admsektor.ext3
mkdir /files01/usermnt/admsektor
mknod -m 660 /dev/loop8 b 7 8
mount -t ext3 -o loop /files01/userfs/admsektor.ext3 /files01/usermnt/admsektor
mkdir /files01/usermnt/admsektor/admsektor
chmod 777 /files01/usermnt/admsektor/admsektor
tune2fs -m 1 /dev/loop8
tune2fs -r 1 /dev/loop8

Читать далее

2013-12-18

XenServer 6.2 исправление дефолтной настройки maxcpus

По умолчанию, в Citrix XenServer 6.2 есть такая неприятная штука - практически все шаблоны для создания витруальных машин идут с параметром maxcpus=1, что означает, что сколько бы процов вы не дали на виртуалку, в ней будет только 1. Исправить можно, установив принудительно maxcpus в другое значение. Через XenCenter (os boot parameter) сделать это можно не всегда, а вот через командную строку...

Цепляемся по ssh на XenServer, где работает виртуальная машина, предположим, которая называется s11s3x64, и


[root@xen02 ~]# xe vm-list name-label=s11s3x64
uuid ( RO)           : 973563fd-00da-0a89-54de-a70e78b37351
     name-label ( RW): s11s3x64
    power-state ( RO): running

[root@xen02 ~]# xe vm-param-set PV-args='console=ttyS0 xencons=ttyS maxcpus=32' uuid=973563fd-00da-0a89-54de-a70e78b37351

Все, теперь в нашей виртуалке будет максимум 32 проца, не больше. То есть если в настройках 4, будет 4, если 40 - будет 32.

Читать далее

2013-05-13

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

Дурак не знает сомнений – он берется и делает. Зато каждый второй умный отказывается поверить в себя и потому так и сидит у разбитого корыта. Оттого-то миром и правят энергичные тупицы.

Зыков В.В. "Дорога Домой"


Читать далее

2013-02-14

logrotate. Как переворачивать часто...

Про линукс.
Часто бывает, что какие-то логи растут с бешеной скоростью, терять их нельзя, давать разрастаться тоже. А logrotate в формате даты, которую дописывает к файлу при перевороте, может добавлять время с указанием не менее дня. Что делать, если надо указывать все до секунды??? А вот что(пример переворотов логов bucardo):

/var/log/bucardo/bucardo.log {
notifempty
size=100M
rotate 200
missingok
dateext
dateformat -%Y%m%d
copytruncate
olddir /var/log/arhiv/bucardo
postrotate
  CURDTT=$(date +%Y%m%d)
  CURDT=$(date +%Y-%m-%d.%H.%M.%S)
  mv /var/log/arhiv/bucardo/bucardo.log-$CURDTT /var/log/arhiv/bucardo/bucardo.log-$CURDT
  tar -cvzf /var/log/arhiv/bucardo/bucardo.log-$CURDT.tar.gz /var/log/arhiv/bucardo/bucardo.log-$CURDT
  rm /var/log/arhiv/bucardo/bucardo.log-$CURDT
endscript
}

Читать далее