solaris 10 syslog-ng

Появилась рабочая необходимость собрать логи с ряда сетевых устройств в замкнутой системе. Свой ноут подключить в сеть нельзя. Все компы и сервера в системе на solaris 10 update 10. Так как задачу приходилось решать не один раз — запишу последовательность действий. Чтобы в следующий раз не тупить.

Для начала необходимо убедится что установлены все необходимые пакеты.

SUNWPython (The Python interpreter, libraries and utilities)
SUNWPython-devel (The Python interpreter, libraries and utilities, platform dependent developer files, stored in /usr)
SUNWPython-share (The Python interpreter, libraries and utilities, platform independent shared files, stored in /usr/sfw/share)

проверять командой pkginfo

pkginfo |grep SUNWPython

Если все пакеты присутствуют, следует приступать к установке собственно syslog-ng сервера. Есть два варианта — собирать из исходных кодов, или установить готовый пакет. Я без труда нашел скомпилированный пакет, поэтому буду устанавливать syslogng-1.6.11-sol10-x86-local.

pkgadd -d ./syslogng-1.6.11-sol10-x86-local
mkdir /usr/local/etc
mkdir /usr/local/etc/syslog-ng
cp /usr/local/doc/syslog-ng/doc/syslog-ng.conf.solaris /usr/local/etc/syslog-ng/syslog-ng.con

Далее нужно выключить стандартный syslog сервер соляриса. Затем проверить что он выключен. (возможно впоследствии его потребуется включить)

Выключить
svcadm disable svc:/system/system-log:default
svcadm disable svc:/network/shell:defaul

Проверить
svcs svc:/system/system-log:default
svcs svc:/network/shell:default

Включить
svcadm enable svc:/system/system-log:default
svcadm enable svc:/network/shell:default

Теперь необходимо создать скрипт запуска /lib/svc/method/svc-syslog-ng

vi /lib/svc/method/svc-syslog-ng
#!/bin/sh
. /lib/svc/share/smf_include.sh
Start processes required for syslog-ng
Required for certain libgcc and eventlog libraries
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/sfw/lib
export LD_LIBRARY_PATH
if [ -x /usr/local/sbin/syslog-ng ]; then
/usr/local/sbin/syslog-ng
else
echo "syslog-ng is missing or not executable."
exit $SMF_EXIT_ERR_CONFIG
fi
exit $SMF_EXIT_OK

Задать для него владельца и права.

chown root:bin /lib/svc/method/svc-syslog-ng
chmod 755 /lib/svc/method/svc-syslog-ng

Далее необходимо создать файл SMF манифеста /var/svc/manifest/system/syslog-ng.xml

vi /var/svc/manifest/system/syslog-ng.xml
<create_default_instance enabled='false' />
<single_instance/>
<dependency name='milestone' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/milestone/sysconfig' />
</dependency>
<dependency name='filesystem' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='autofs' grouping='optional_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/autofs' /> </dependency>
<dependency name='name-services' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/milestone/name-services' />
</dependency>
<dependent name='syslog-ng_single-user' grouping='optional_all' restart_on='none'>
<service_fmri value='svc:/milestone/multi-user' />
</dependent>
<exec_method type='method' name='start' exec='/lib/svc/method/svc-syslog-ng' timeout_seconds='60' />
<exec_method type='method' name='stop' exec=':kill' timeout_seconds='60' />
<exec_method type='method' name='refresh' exec=':kill -HUP' timeout_seconds='60' />
<property_group name='general' type='framework'>
<!-- to start stop syslog daemon -->
<propval name='action_authorization' type='astring' value='solaris.smf.manage.syslog-ng' />
</property_group>
<stability value='Unstable' />
<template>
<common_name>
<loctext xml:lang='C'> syslog-ng </loctext>
</common_name>
<documentation>
<manpage title='syslog-ng' section='1M' manpath='/usr/share/man' /> </documentation>
</template>

Задать для манифеста владельца и права

chown root:sys /var/svc/manifest/system/syslog-ng.xml
chmod 444 /var/svc/manifest/system/syslog-ng.xml

Далее нужно проверить созданный манифест

svccfg validate /var/svc/manifest/system/syslog-ng.xml

Если ошибок нет — импортировать манифест в SMF

svccfg import /var/svc/manifest/system/syslog-ng.xml

Проверить что сервис появился в SMF базе

svcs syslog-ng

Включить/выключить сервис

svcadm disable syslog-ng
svcadm enable syslog-ng

Если включатся не хочет, вместо online выпадает в статус maintenence — нужно смотреть лог-файл службы

tail /var/svc/log/system-syslog-ng:default.log

Чтобы сконфигурировать сервис нужно редактировать конфиг по адресу /usr/local/etc/syslog-ng.conf Приведу пример примитивного конфига, который слушает 514й порт и записывает все что на него прилетает в файл /var/log/remote/cisco.log

vi /usr/local/etc/syslog-ng.conf

source s_udp { udp (ip ("0.0.0.0") port (514)); };
destination d_cisco { file("/var/log/remote/cisco.log"); };
log { source(s_udp); destination(d_cisco); };

Или чуть сложнее - с фильтром по адресу сети источника
source s_udp { udp (ip ("0.0.0.0") port (514)); };
destination d_cisco { file("/var/log/remote/cisco.log"); };
filter f_cisco { netmask("192.168.55.0/255.255.255.0"); };
log { source(s_udp); filter(f_cisco); destination(d_cisco); };

cisco isr password reset

Чтобы сбросить пароль на маршрутизаторах ISR cisco необходимо подключение консольным кабелем. Далее reload (или физически передернуть кабель питаний) — при загрузке [Ctrl]+[Break] — так, чтобы появилось приглашение rommon> (режим ROM monitor).

Если терминал не позволяет передать [Ctrl]+[Break] можно просто вытащить из роутера флеш-карту и загрузить без нее.

Из режима rommon> нужно изменить конфигурацию реестра командой confreg 0x2142. После чего сделать reset

Теперь маршрутизатор загрузится без конфига. Можно настраивать новый конфиг — если план был такой. Если-же нужен старый конфиг — то необходимо из привилегированного режима сделать copy startup-config running-config.
После этой команды применится старый конфиг, но привилегированный режим позволит создать в нем новую учетную запись и/или изменить любые другие настройки.

Когда все пароли изменены/восстановлены — необходимо перевести конфигурационный регистр в нормальное состояние. config-register 0x2102

linux запись cd/dvd дисков

Говорят что диски свое отжили, но в большинстве рабочих компьютеров dvd-rom по прежнему есть. Иногда возникают ситуации, когда воспользоваться им — наиболее удобное решение.

Для того чтобы записать в centos 7 произвольные файлы на диск нужно сформировать iso

mkisofs -joliet-long -r -o /home/pakege/temp/hpz420.iso /home/pakege/distrs/Z420

и прожечь болванку

cdrecord -v speed=0 dev=ATAPI:0,0,0 /home/pakege/temp/hpz420.iso

чтобы узнать адрес DVD-RW нужен вывод команды

cdrecord -scanbus dev=ATAPI
Cdrecord-Clone 2.01.01a01 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Joerg Schilling
'@(#)scsitransp.c 1.91 04/06/17 Copyright 1988,1995,2000-2004 J. Schilling').scsibus0:
0,0,0 0) '_NEC ' 'DVD_RW ND-3550A ' '1.05' Removable CD-ROM

0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *

Если нужных команд в дистрибутиве нет — необходимо установить пакет wodim

yum install wodim


LVM pvmove

Сначала в компьютере был один HDD на 1Tb. На нем был установлен centos 7.5 с автоматической разбивкой диска. Т.е. использовался LVM который в centos опция по умолчанию. под root раздел автомат выделяет 50Гб — остальное — boot, swap, home.

Потом появился ssd но маленький — всего на 60Gb. поскольку оперативы много и заботится о производительности свапа смысла нет, было решено перенести на ssd только root раздел.

LVM позволяет сделать это всего несколькими командами.

Раздел на новом диске я создал с помощью gparted.

[root@adminhp ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 931,5G  0 disk
├─sda1            8:1    0   200M  0 part /boot/efi
├─sda2            8:2    0     1G  0 part /boot
└─sda3            8:3    0 930,3G  0 part
 ├─centos-root 253:0    0    50G  0 lvm  /
 ├─centos-swap 253:1    0   7,6G  0 lvm [SWAP]
 └─centos-home 253:2    0 872,7G  0 lvm /home
sdb               8:16   0 55,9G  0 disk
└─sdb1            8:17   0 47,9G  0 part

далее нужно создать Physical volume

pvcreate /dev/sdb1

далее расширить Volume group centos на новый PV

vgextend centos /dev/sdb1

после чего можно запускать сам перенос раздела

pvmove -n root /dev/sda3 /dev/sdb1

 

 

centos 7 syslog-ng

Часто возникает необходимость организовать сбор логов по сети. Для этого прекрасно подходят линукс пакеты rsyslog или syslog-ng. Т.к. я использую последний — про него и расскажу. Все это происходит в centos 7.6

установка тривиальная

yum install -y syslog-ng

главный конфиг. еще можно докладывать свои отдельные конфиги в ./conf.d

/etc/syslog-ng/syslog-ng.conf

Чтобы собрать логи по сети нужно определить в конфиге

источник
source s_udp { udp (ip ("0.0.0.0") port (514)); };

затем создать файл лога

mkdir /var/log/remote
touch /var/log/remote/diamond.log

и определить в конфиге

destination — назначение, ранее созданный лог файл
filter — фильтр входящего потока. обычно ip адрес
log — определяет откуда брать логи, чем фильтровать и куда записывать результат.

destination d_diamond { file("/var/log/remote/diamond.log"); };
filter f_diamond { netmask("192.9.200.71/255.255.255.255"); };
log { source(s_udp); filter(f_diamond); destination(d_diamond); };

 

KVM manual cloning vm

Появилась необходимость склонировать вм и запустить ее на соседнем гипервизоре. Есть несколько вариантов это сделать, я буду использовать ручной. вм источник — uvd1. склонировать нужно в uvd2.

virsh shutdown uvd1

cp /home/vm/{uvd1,uvd2}.qcow2

virsh dumpxml uvd1 > /tmp/uvd2-template.xml

sed -i /uuid/d /tmp/uvd2-template.xml
sed -i '/mac address/d' /tmp/uvd2-template.xml
sed -i s/uvd1/uvd2/ /tmp/uvd2-template.xml

srv1
virsh define /tmp/uvd2-template.xml

так как запустить ее надо на соседнем гипервизоре - копирую ее
scp ./uvd2.qcow2 192.9.30.202://home/vm/
scp /tmp/uvd2-template.xml 192.9.30.202:/root/


после чего запускаю на 
srv2
virsh define /root/uvd2-template.xml

 

minicom работа по rs232

Установка стандартная

yum -y install minicom

Первый запуск проводить с ключем -s для первоначальной настройки. Прежде чем запускать — выяснить какой файл отвечает за rs232 устройство. Это может быть /dev/ttyS0 (ttyS1,2,3) — стандартный встроенный в плату ком порт. Или /dev/ttyUSB0 в случае использования USB-COM переходников.

minicom -s
#выход из программы
Cntr + A затем Shift + J
#справка
Cntr + A затем Shift + Z

#отправить Cntr + С на подключенный хост
Cntr + С затем Cntr + С

Вся навигация по менюшкам работает стрелками. Никаких чудес.

Иногда при запуске получаешь ошибку

Устройство /dev/ttyS0 заблокировано.

в этом случае помогает убить процесс

killall -9 minicom

можно просто удалить файл «LCK..ttyS0» в директории /var/lock/.

 

 

centos 7 имя пакета по команде

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

# which ping
/bin/ping

# rpm -qf /bin/ping
iputils-20160308-10.el7.x86_64