sox welcome.wav -r 8000 -b 16 -c 1 -t wav Welcome.wav
Рабочие записи.
Заметки на память.
24.11.2016
17.10.2016
Backup Stage4 Gentoo
Самым простым способом сохранить систему целиком, является архивирование корневого каталога, в gentoo терминологии Stage 4.
Монтируем раздел с системой
Переходим к подмонтированному каталогу
Архивируем корень
c — создание архива
j — использование bzip2 алгоритма сжатия
p — сохранять атрибуты файлов(НЕ УДАЛЯТЬ!!)
v — во время выполнения записывать в консоли текущий архивируемый файл
f — выводить в файл (иначе — в стандартный вывод)
Подготовьте раздел, куда будет установлена система.
Монтируем раздел.
Переходим к подмонтированному каталогу
Разархивируем
Смените корень и войдите в систему
Установите загрузчик
Монтируем раздел с системой
mount /dev/sda1 /mnt/linux
Переходим к подмонтированному каталогу
cd /mnt/linux/
Архивируем корень
tar cjpvf /path/to/save/at/stage4.tar.bz2 ./
c — создание архива
j — использование bzip2 алгоритма сжатия
p — сохранять атрибуты файлов(НЕ УДАЛЯТЬ!!)
v — во время выполнения записывать в консоли текущий архивируемый файл
f — выводить в файл (иначе — в стандартный вывод)
Подготовьте раздел, куда будет установлена система.
Монтируем раздел.
mount /dev/sda1 /mnt/linux
Переходим к подмонтированному каталогу
cd /mnt/linux/
Разархивируем
tar -xvjpf stage4.tar.bz2
Смените корень и войдите в систему
chroot /mnt/linux
Установите загрузчик
19.09.2016
Чтоб не забыть.
dd
Программа dd ( disk dump ), используется для копирования ( конвертирования ) дисков, разделов, и прочих операций копирования. Типичный пример:# dd if= of= bs= conv=Важные опции для conv:
- notrunc не обрезать нули в файле на выходе, записывая их как нули
- noerror продолжать после ошибок чтения
- sync дополнять каждый входящий блок нулями до размера ibs-size
Резервное копирование и восстановление
# dd if=/dev/hda of=/dev/hdc bs=16065b # Копировать с диска на диск с таким-же размером # dd if=/dev/sda7 of=/home/root.img bs=4096 conv=notrunc,noerror # Резервное копирование в файл образа # dd if=/home/root.img of=/dev/sda7 bs=4096 conv=notrunc,noerror # Восстановление из файла образа # dd bs=1M if=/dev/ad4s3e | gzip -c > ad4s3e.gz # Сделать резервную копию и заархивировать в Zip # gunzip -dc ad4s3e.gz | dd of=/dev/ad0s3e bs=1M # Восстановить из архива # dd bs=1M if=/dev/ad4s3e | gzip | ssh eedcoba@fry 'dd of=ad4s3e.gz' # Что и выше, удаленно # gunzip -dc ad4s3e.gz | ssh eedcoba@host 'dd of=/dev/ad0s3e bs=1M' # dd if=/dev/ad0 of=/dev/ad2 skip=1 seek=1 bs=4k conv=noerror # Пропустить MBR ( Master Boot Record ) # Необходимо если диск назначения (ad2) меньше.
Лечение
Программа dd считывает раздел поблочно, если на диске предположительно есть проблемы, нужно использовать опцию conv=sync,noerror, при этом dd будет пропускать битые блоки и записывать нули на диск назначения. Поэтому важно, установить размер блока, равным, или меньшим, чем размер блока на диске. Вполне подходящим будет размер блока в 1 килобайт, установить размер на входе и выходе можно опцией bs=1k. Если на диске имеются сбойные сектора, но основные данные нужно сохранить с данного раздела, можно создать файл образа, смонтировать образ и копировать данные на новый диск. С установленной опцией noerror, dd пропустит поврежденные блоки, записав на их место нули, при этом, потеряны будут, только данные, содержавшиеся в сбойных секторах диска.# dd if=/dev/hda of=/dev/null bs=1m # Проверить на наличие бэд блоков # dd bs=1k if=/dev/hda1 conv=sync,noerror,notrunc | gzip | ssh \ # Отправить на удаленный хост root@fry 'dd of=hda1.gz bs=1k' # dd bs=1k if=/dev/hda1 conv=sync,noerror,notrunc of=hda1.img # Сохранить в образ # mount -o loop /hda1.img /mnt # Создание и монтирование образа # rsync -ax /mnt/ /newdisk/ # Копировать на новый диск # dd if=/dev/hda of=/dev/hda # Обновить # Обновление диска, безопасная операция, но диск при этом должен быть размонтирован.
Удаление данных
# dd if=/dev/zero of=/dev/hdc # Удалить все данные с диска ( забивает диск нулями ) # dd if=/dev/urandom of=/dev/hdc # Удалить все данные с диска ( более предпочтительный вариант ) # kill -USR1 PID # Посмотреть текущее состояние dd (Linux) # kill -INFO PID # Посмотреть текущее состояние dd (FreeBSD)
Трюки с MBR ( master boot record )
MBR содержит код загрузчика и таблицу разделов. Первый 466 байт отводятся под загрузчик, 466-512 под таблицу размещения разделов.# dd if=/dev/sda of=/mbr_sda.bak bs=512 count=1 # Сделать резервную копию MBR # dd if=/dev/zero of=/dev/sda bs=512 count=1 # Удалить MBR и таблицу размещения разделов # dd if=/mbr_sda.bak of=/dev/sda bs=512 count=1 # Восстановить MBR целиком # dd if=/mbr_sda.bak of=/dev/sda bs=446 count=1 # Восстановить только загрузчик # dd if=/mbr_sda.bak of=/dev/sda bs=1 count=64 skip=446 seek=446 # Восстановить таблицу размещения разделов
Оригинал
05.01.2016
ACL+Realtime
Создаем таблицу:
В данную таблицу вписываем данные:
name - имя ACL
rule_order - порядковый номер правила
sense - действие, возможно одно из 2-х: permit/deny
rule - IP/netmask
Пример:
INSERT INTO `asterisk`.`acltable` (`name`, `rule_order`, `sense`, `rule`) VALUES ('lan', '1', 'permit', '10.0.10.0/24');
В таблице sippeers добавляем поле acl и добавляем имя ACL в это поле для нужного пира/транка.
При выполнении команды в CLI: acl show будет пустота.
При выполнении sip reload применит нужный ACL.
Для обновления ACL кроме добавления записи в таблицу надо сделать module reload acl
При этом будет ошибка:
Named ACL 'lan' is already included in the ast_acl container.
chan_sip.c:31061 build_peer: Bad ACL entry in configuration line 11 : lan
Несмотря на ошибку ALC применяется, как пофиксить ошибку пока не разобрался.
Update 3.01.2016: Описание и патчи:
https://issues.asterisk.org/jira/browse/ASTERISK-24874
https://issues.asterisk.org/jira/browse/ASTERISK-24969
В extconfig.conf говорим acls => mysql,asterisk,acltableCREATE TABLE `acltable` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(80) NOT NULL,
`rule_order` int(11) NOT NULL,
`sense` enum('permit','deny') NOT NULL DEFAULT 'deny',
`rule` varchar(95) NOT NULL,
PRIMARY KEY (`id`,`name`,`rule_order`,`sense`,`rule`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
В данную таблицу вписываем данные:
name - имя ACL
rule_order - порядковый номер правила
sense - действие, возможно одно из 2-х: permit/deny
rule - IP/netmask
Пример:
INSERT INTO `asterisk`.`acltable` (`name`, `rule_order`, `sense`, `rule`) VALUES ('lan', '1', 'permit', '10.0.10.0/24');
В таблице sippeers добавляем поле acl и добавляем имя ACL в это поле для нужного пира/транка.
При выполнении команды в CLI: acl show будет пустота.
При выполнении sip reload применит нужный ACL.
Для обновления ACL кроме добавления записи в таблицу надо сделать module reload acl
При этом будет ошибка:
Named ACL 'lan' is already included in the ast_acl container.
chan_sip.c:31061 build_peer: Bad ACL entry in configuration line 11 : lan
Update 3.01.2016: Описание и патчи:
https://issues.asterisk.org/jira/browse/ASTERISK-24874
https://issues.asterisk.org/jira/browse/ASTERISK-24969
Realtime + register(row:callbackextension)+sip reload = Unregistered
Имеем проблему: если используем поле callbackextension в таблице Mysql и кол-во регистрации более 3-х, на меньшем не проявлялась, то при sip reload можем поиметь все регистрации со статусом Unregistered, помогает только рестарт * либо выгрузка/загрузка chan_sip.
Порывшись на просторах нашел вот это: https://issues.asterisk.org/jira/browse/ASTERISK-23789
на момент публикации еще открытый. Патч помогает, насколько он правильный судить не могу.
Update 10.01.2016Порывшись на просторах нашел вот это: https://issues.asterisk.org/jira/browse/ASTERISK-23789
на момент публикации еще открытый. Патч помогает, насколько он правильный судить не могу.
--- asterisk-12.2.0/channels/chan_sip.c 2014-04-21 17:02:00.000000000 -0400
+++ asterisk-12.2.0-modified/channels/chan_sip.c 2014-05-24 20:44:28.559519094 -0400
@@ -6566,8 +6566,12 @@
AST_SCHED_DEL(sched, reg->expire);
AST_SCHED_DEL(sched, reg->timeout);
+ if ((reg->;registryadded))
+ {
+ ast_atomic_fetchadd_int(&regobjs, -1);
+ }
+
ast_string_field_free_memory(reg);
- ast_atomic_fetchadd_int(&regobjs, -1);
ast_free(reg);
}
@@ -9556,6 +9560,7 @@
registry_unref(tmp, "throw away found registry");
} else {
ast_atomic_fetchadd_int(&regobjs, 1);
+ reg->;registryadded = 1;
ASTOBJ_CONTAINER_LINK(&regl, reg);
}
--- asterisk-12.2.0/channels/sip/include/sip.h 2014-04-21 17:02:00.000000000 -0400
+++ asterisk-12.2.0-modified/channels/sip/include/sip.h 2014-05-24 20:37:42.557555124 -0400
@@ -1414,6 +1414,7 @@
struct ast_sockaddr us; /*!< Who the server thinks we are */
int noncecount; /*!< Nonce-count */
char lastmsg[256]; /*!< Last Message sent/received */
+ unsigned short registryadded:1; /*!< If this registry object is already added to registry list */
};
struct tcptls_packet {
Порывшись еще найдено еще вот это: https://issues.asterisk.org/jira/browse/ASTERISK-23542
на момент публикации еще открытый.
--- channels/chan_sip.c (revision 420532)
+++ channels/chan_sip.c (working copy)
@@ -9218,11 +9218,12 @@
reg->refresh = reg->expiry = reg->configured_expiry = default_expiry;
}
+ ast_atomic_fetchadd_int(®objs, 1);
+
/* Add the new registry entry to the list, but only if it isn't already there */
if ((tmp = ASTOBJ_CONTAINER_FIND(®l, reg->name))) {
registry_unref(tmp, "throw away found registry");
} else {
- ast_atomic_fetchadd_int(®objs, 1);
ASTOBJ_CONTAINER_LINK(®l, reg);
}
16.12.2015
Таблица CDR
Таблица CDR
CREATE TABLE `cdr` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`calldate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` VARCHAR(80) NOT NULL DEFAULT '',
`src` VARCHAR(80) NOT NULL DEFAULT '',
`dst` VARCHAR(80) NOT NULL DEFAULT '',
`dcontext` VARCHAR(80) NOT NULL DEFAULT '',
`channel` VARCHAR(80) NOT NULL DEFAULT '',
`dstchannel` VARCHAR(80) NOT NULL DEFAULT '',
`lastapp` VARCHAR(80) NOT NULL DEFAULT '',
`lastdata` VARCHAR(80) NOT NULL DEFAULT '',
`duration` INT(11) NOT NULL DEFAULT '0',
`billsec` INT(11) NOT NULL DEFAULT '0',
`disposition` VARCHAR(45) NOT NULL DEFAULT '',
`amaflags` INT(11) NOT NULL DEFAULT '0',
`accountcode` VARCHAR(20) NOT NULL DEFAULT '',
`uniqueid` VARCHAR(32) NOT NULL DEFAULT '',
`peeraccount` VARCHAR(20) NOT NULL DEFAULT '',
`linkedid` VARCHAR(32) NOT NULL DEFAULT '',
`sequence` INT(11) NOT NULL DEFAULT '0',
`userfield` VARCHAR(255) NOT NULL DEFAULT '',
`data` BLOB,
`way` TINYINT(4) NOT NULL DEFAULT '0',
`phn` INT(11) DEFAULT NULL,
`active` TINYINT(4) NOT NULL DEFAULT '0',
`tmp_val` VARCHAR(255) DEFAULT NULL,
`rec_path` VARCHAR(255) DEFAULT NULL,
`start` VARCHAR(255) DEFAULT NULL,
`end` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `calldate` (`calldate`),
KEY `accountcode` (`accountcode`),
KEY `uniqueid` (`uniqueid`),
KEY `dst` (`dst`),
KEY `src` (`src`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
Подписаться на:
Сообщения (Atom)