Как скопировать из консоли CISCO файл с TFTP на FLASH
Читать статью Как скопировать из консоли CISCO файл с TFTP на FLASH в категории
Cisco 3825Сброс к заводским настройками CISCO 7962
Читать статью Сброс к заводским настройками CISCO 7962 в категории
Cisco 3825ix/">запись о сбросе настроек к заводским на аппарате CISCO 7975
Собственно, мне необходимо было сбросить настройки CISCO 7962, он завис при обновлении намертво.
Собственно процедура практически похожа.
- 1. Выключаем питание
- 2. Зажимаем #, держим и включаем питание, продолжаем держать
- 3. Держим до тех пор, пока кнопки блока расширения справа вверху аппарата
не начнут методично перемигивать
- 4. Отпускаем и вводим заветные 123456789*0#
После этого происходит сброс настроек, подключение к TFTP и повторная попытка закачать первоначальную прошивку.
Мне помогло.
Пример редиректа используя пакетный фильтр PF
Читать статью Пример редиректа используя пакетный фильтр PF в категории
Пакетный фильтр PF, FreeBSDего гейтвея
- Внешний IP 1.2.3.4
- Внутренний IP машины в локалке 5.6.7.8
Файл с правилами для чтения
pf.conf
# Внешний интерфейс
ext="bge1"
# Это внутренний IP
from="5.6.7.8"
# Это внешний IP на который будут приходить запросы
extip="1.2.3.4"
# Перечисление портов, при обращении к которым на внешний IP будет происходить редирект
devports="{53, 10000, ftp, 1723}"
# Нормализация траффика
scrub in all
#Правило для nat
nat on $ext from $from -> $extip
#Собственно сам редирект
rdr on $ext proto {tcp, udp} from any to $extip port $devports -> $from
# Еще вариант, если порт надо с какоего-либо внешнего перекинуть на внутренний
# Тут получается что если кто-то из вне обращается на внешний IP на порт 12345
# будет переадресован на внутренний IP на порт 54321
rdr on $ext proto {tcp, udp} from any to $extip port 12345 -> $from 54321
Вуаля. Работает
Не забываем о том, что на внешнем интерфейсе должен быть данный IP )
Nginx PHP-FPM, прикручиваем phpmyadmin
Читать статью Nginx PHP-FPM, прикручиваем phpmyadmin в категории
NGINXот себя, как и что я делал, чтобы все это запустить.
Всте вставилось из исходников, не порты
- установка PCRE ( описывать не буду - элементарно )
- установка MySQL - бинарник ( опять таки рассказывать нечего, очень хороший мануал по установке)
- сборка и установка PHP
./configure --prefix=/usr/php --sysconfdir=/etc/php --enable-fpm --with-config-file-path=/etc/php --with-libxml-dir-regex=/store/pcre --with-zlib --with-bz2 --with-curl --enable-exif --enable-ftp --with-gd --with-jpeg-dir=/usr/jpeg --with-png-dir --with-zlib-dir -pe-dir --enable-gd-native-ttf --with-mhash --enable-mbstring --with-mcrypt --with-mysql=/usr/local/mysql --with-unixODBC=/usr/unixODBC --enable-sockere-dir --enable-fastcgi --enable-force-cgi-redirect --enable-discard-path
- установка nginx
Тут немного подробнее. Я его собирал с такими параметрами
--prefix=/usr/nginx --conf-path=/usr/nginx/conf --with-http_dav_module --with-pcre=/sources/pcre --with-poll_module
PHP у меня уже юыла собрана с поддержкой FPM так что много мороки не возникло. Надо было только скрипт автостарта сделать и подключить в rc.conf
Собственно практически все, тут я вспомнил про phpmyadmin
1. Скачал
2. Распаковал в папку в корне дефолтного сервера, обозвал sql
3. Залез в конфиг дефолтного сервера и кое-что поправил после 2 часов колупания
upstream backend {
server unix:/var/run/php-fpm/php-fpm.sock;
}
server {
listen 80;
server_name 192.168.70.226;
charset utf-8;
access_log logs/ns2.access.log main;
error_log logs/ns2.error.log;
root /store/www;
index index.php;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /store/www/errors;
}
// тут все что связаное исполнение PHP скриптов
location ~ \.php$ {
fastcgi_index index.php;
include /usr/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (-e $request_filename ) {
fastcgi_pass backend;
}
}
Не поверите! Но это все. Больше ничего не надо.
Рекоменедую - если не запустится, сходить и поправить здесь
fastcgi_conf
Тут в первой строке у меня стояло fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Снес $document_root
И здесь fastcgi_param SCRIPT_NAME $document_root$fastcgi_script_name; тоже снес.
Переходим к fastcgi_params
Везде где находим $document_rootчего-то там - сносим $document_root
И все заработало.
proFTPD 1.3.4 Установка и конфигурировение
Читать статью proFTPD 1.3.4 Установка и конфигурировение в категории
FreeBSDblank" href="http://proftpd.org/download.html">proftpd-1.3.4 зеркало сами выбирать будете.
Далее так:
1. Распаковываем через
tar -zxvf proftpd-1.3.4a.tar.gz ( помним что у вас может быть другая версия и имя файла другое )
2. Конфигурируем. Я собирал с такими параметрами
--prefix=/usr/proftpd куда ставить сам proFTPD
--sysconfdir=/etc/proftpd, это место где будет конфигурация лежать
дальше:
- --enable-memcache, думаю название само за себя говорит
- --enable-pcre, опять таки, расчитываю на вашу смышленность
- --enable-openssl, куда ж тут без этого, в наш то век
- --with-mysql-config, думаю что в какой-то момент своей жизни конфиги и прочее переползут в базу MySQL
Ну вот, дальше делаем
make install clean
Ждем, дожидаемся окончания процесса установки и таки смотрим на конфигурацию дефолтную (по умолчанию) в
/etc/proftpd, стартовый скрипт в
/usr/local/etc/rc.d не забываем в rc.conf прописать proftpd_enable="YES"
Все - это вся установка. Делалось все на FreeBSD 7.2 из исходников. Порты стараюсь использовать в крайнем случае.
Не открываются ссылки в письмах в MS Outlook
Читать статью Не открываются ссылки в письмах в MS Outlook в категории Windows
ся.
Вам необходимо сделать следующее
Пуск -> Выполнить -> и написать это regsvr32 urlmon.dll
И нажать Enter
Использование helo.regexp
Читать статью Использование helo.regexp в категории Postfix
зано как обрабатывать запросы HELO
// и в каком порядке
smtpd_helo_restrictions = permit_mynetworks,
check_helo_access regexp:/etc/postfix/helo.regexp,
reject_non_fqdn_hostname, reject_unknown_hostname, reject_invalid_hostname,
permit
// Другой пример
// поменяем местами строки
smtpd_helo_restrictions = permit_mynetworks,
reject_non_fqdn_hostname, reject_unknown_hostname, reject_invalid_hostname,
check_helo_access regexp:/etc/postfix/helo.regexp,
permit
В первом случае, если Вам надо будет добавить в "белый" список некий узел, который нельзя определить то все пройдет гладко, если вы его опишите как
/^vasya.pupkin$/ OK
И все красиво отработает, тоесть письмо полученной с таким HELO попадет к полчателю.
А вот второй пример, где поменяли местами правила, до вашего разрешения проверка не дойдет и письмо не будет получено, ибо вначале перед проверкой файла с правилами стоят четкие указания отбрасывать всех, кто не соответствует FQDN. А именно reject_non_fqdn_hostname. Здесь оно будет убито и до файла с правилами не добежит.
CISCO 3825 как начать конфигурировать
Читать статью CISCO 3825 как начать конфигурировать в категории Cisco 3825
будет как подсказка другим
conf t // идентично тому что внизу
conf terminal // идентично тому что вверху
CISCO 3825 настройка места, куда будет сохраняться статистика
Читать статью CISCO 3825 настройка места, куда будет сохраняться статистика в категории Cisco 3825
imary ftp 10.1.1.4/DATA username USERNAME password PASSWORD //меняем USERNAME и PASSWORD
secondary ftp 10.1.1.4/DATA username USERNAME password PASSWORD //меняем USERNAME и PASSWORD
maximum retry-count 5 // сколько раз стучаться в случае неудачных попыток
maximum cdrflush-timer 1400 // с каким интервалом дропаем на удаленный хост статистику
cdr-format compact // формат файл статистики
CISCO 3825 автоматическое получение факсов и отправка на почту
Читать статью CISCO 3825 автоматическое получение факсов и отправка на почту в категории Cisco 3825
x receive called-subscriber COMPANY NAME // Тут можно указать название вашей компании
fax send transmitting-subscriber $s$
fax send left-header FROM: XXX XXXX // Это городской номер который указывается в хидере
fax send center-header +$a$ $t$ $p$
fax send right-header TO: $d$
fax interface-type fax-mail // тип интерфейса
mta send server 10.1.1.114 port 25 // IP адрес почтового сервера на который будет напрвлятся полученнный факс
mta send subject FAX from
mta send with-subject $s$
mta send filename both
mta send postmaster fax@DOMAIN.COM // адресат на которого кидаем факс
mta send mail-from hostname DOMAIN.COM // домен вашей компании
mta send mail-from username FAX-SERVER
mta send return-receipt-to hostname fax@DOMAIN.COM
mta send return-receipt-to username FAX-SERVER
mta send success-fax-only
mta receive aliases fax@DOMAIN.COM
mta receive maximum-recipients 10
mta receive generate mdn
MySQL, количество открытых файлов ( open_files_limit )
Читать статью MySQL, количество открытых файлов ( open_files_limit ) в категории MySQL
нь много, MySQL сваливается, т.к. упирается в лимит (1024 открытых файла).
Отсюда и ниже цитировение: текущее использование открытых файлов можно узнать так:
lsof -u mysql | wc -l
Если же оно приближается к 1024, то стоит в блок
[mysqld] файла my.cnf добавить следующее:
open_files_limit = 8192
И перезапустить MySQL
У кого как
- service mysql restart (ubuntu)
- ./usr/local/etc/rc.d/mysqld restart (freeBSD)
- .. и дальше, смотря у кого на чем стоит и как установлено
JavaScript, удаляем ( заменяем ) знаки табуляции в textarea
Читать статью JavaScript, удаляем ( заменяем ) знаки табуляции в textarea в категории JavaScript
rea').value;
txt = txt.replace(/(\t)/g," ");
Другой пример
Надо заменить \r\n
на
<br />
Выглядит пример так
txt = txt.replace(/(\r\n)/g,"<br />");
Автодозвон на Asterisk - как сделать и как применять
Читать статью Автодозвон на Asterisk - как сделать и как применять в категории Asterisk
br />
Как видно из схемы, часть пользователей зарегистрировано на cisco 3825, а часть на asterisk 1.6. Но, автодозвон должен быть доступен как для тех, кто зарегистрирован на CISCO так и для тех, кто зарегистрирован на Asterisk. Итак я сделал все это следующим образом:
- Создал правило на CISCO, в котором сказано, что "Все кто набирает 33T" убегают на asterisk по SIP и им еще на выходе дописывается опознавательный код ( может потом понадобится )
-
На Asterisk создано правило, прописано в /etc/asterisk/extension_custom.conf. Выглядит следующим образом:
exten => _33.,1,Dial(Local/${EXTEN:2}@from-internal,10,tr)
exten => _33.,2,GotoIF($[ "${DIALSTATUS}" == "ANSWER" ]?end)
exten => _33.,n,GotoIF($[ "${DIALSTATUS}" == "ANSWERED" ]?end)
exten => _33.,n,GotoIF($[ ${CDR(billsec)} >0 ]?end)
exten => _33.,n,Wait(10)
exten => _33.,n,Goto(${EXTEN},1)
exten => _33.,n(end),Hangup
По каждой строке долго расписывать нечего, их формирование и синтаксис станет понятен после чтения документации, тут все просто. Замеччу только что в строке
exten => _33.,1,Dial(Local/${EXTEN:2}@from-internal,10,tr)
Я использовал tr чтобы пользователь с ума не сходил от постоянного пиликанья "BUSY" в линии.
Итак, у меня до этого было сформировано правило, по которому звонящий - набравший 0 в начале отправлялся в транк который смотрел в сторону той же CISCO 3825 и там уже отрезался 0 и номер кидался в E1 для выхода в город.
Соответсвенно тут происходил набор 33 + 0 + номер производился дозвон. По расширению 33 Asterisk определял - что надо повторять до посинения звонки.
P.S. Ко всему этому замечу, что все это делалось на конфигурации Asterisk "по-умолчанию"
Создание дерева категорий / PHP / jQuery
Читать статью Создание дерева категорий / PHP / jQuery в категории PHP
Merge / C / Объединить 2 массива и отсортировать
Читать статью Merge / C / Объединить 2 массива и отсортировать в категории Язык C
а отсортированных по неубыванию массива длинами len1 и len2.
Произвести слияние этих массивов в третий, также отсортированный по неубыванию.
Алгоритм должен работать за линейное время.
Результат вывести в task.out
#include <stdio.hgt;
int getLen(FILE *in) {
int size;
fscanf(in, "%d", &size);
return size;
}
void arrayFill(FILE *in, int array[], int limit) {
for ( int i = 0; i < limit && fscanf(in, "%d", &array[i]) > 0; i++ );
}
void arrayPrint(FILE *out, int array[], int size) {
size = size - 1;
for ( int i = 0; i < size; i++ ) {
fprintf(out, "%d ", array[i]);
}
fprintf(out, "%d\n", array[size]);
}
void arraySort(int array[], int size) {
int temp = 0;
int nextIndex;
size = size - 1;
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size; j++ ) {
if ( array[j] >= array[j+1] ) {
temp = array[j];
nextIndex = j + 1;
array[j] = array[nextIndex];
array[nextIndex] = temp;
}
}
}
}
int main() {
FILE *in = fopen("task.in", "r");
FILE *out = fopen("task.out", "w");
int len1 = getLen(in);
int len2 = getLen(in);
int size = len1 + len2;
int array1[len1], array2[len2], dst[size];
int indexPosition;
arrayFill(in, array1, len1);
arrayFill(in, array2, len2);
fclose(in);
for ( int i = 0; i < len1; i++ ) {
dst[i] = array1[i];
}
for ( int i = 0; i < len2; i++ ) {
indexPosition = len1 + i;
dst[indexPosition] = array2[i];
}
arraySort(dst, size);
arrayPrint(out, dst, size);
fclose(out);
return 0;
}
Прочитать массив, удалить дубликаты, записать в файл
Читать статью Прочитать массив, удалить дубликаты, записать в файл в категории Язык C
ов.
Прочитать массив и удалить из него дубликаты элементов.
Результирующий массив записать в task.out.
#include <stdio.h>
#define SIZE 100
int arrayScan(FILE *in, int array[], int len) {
int i;
for ( i = 0; i < len && fscanf(in, "%d", &array[i]) > 0; i++ );
return i;
}
void arrayPrint(FILE *out, int array[], int len) {
len = len - 1;
for ( int i = 0; i < len; i++ ) {
fprintf(out, "%d ", array[i]);
}
fprintf(out, "%d\n", array[len]);
}
int arraySearch(int array[], int needle, int len) {
for ( int i = 0; i < len; i++ ) {
if ( array[i] == needle ) {
return i;
}
}
return -1;
}
int arrayUnique(int array[], int len) {
int index, needle;
index = 0;
for ( int i = 0; i < len; i++ ) {
needle = array[i];
if ( arraySearch(array, array[i], i) == -1 ) {
array[index] = needle;
index += 1;
}
}
return index;
}
int main() {
FILE *in = fopen("task.in", "r");
FILE *out = fopen("task.out", "w");
int array[SIZE];
int len = arrayScan(in, array, SIZE);
fclose(in);
arrayPrint(out, array, arrayUnique(array, len));
fclose(out);
return 0;
}
Задача - вывести числа от нуля до указанного максимума включительно, кратные заданному делителю
Читать статью Задача - вывести числа от нуля до указанного максимума включительно, кратные заданному делителю в категории Язык C
тать с клавиатуры целый, не равный нулю делитель.
Вывести в строку числа от нуля до указанного максимума включительно, кратные заданному делителю.
#include <stdio.h>
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
if ( b == 0 || a < 0 ) {
printf("\n");
return 0;
}
if ( b < 0 ) {
b = -b;
}
a -= a % b;
for ( int i = 0; i < a; i += b ) {
printf("%d ", i);
}
printf("%d\n", a);
return 0;
}
Функция нахождения элемента массива
Читать статью Функция нахождения элемента массива в категории Язык C
1 в случае, если число в массиве не содержится.
int arraySearch(int array[], int size, int needle)
int arraySearch(int array[], int size, int needle) {
for ( int i = 0; i < size; i++ ) {
if ( array[i] == needle ) {
return i;
}
}
return -1;
}
Задача по сортировке массива
Читать статью Задача по сортировке массива в категории Язык C
Отсортировать элементы в порядке неубывания.
Настоятельно рекомендуется разработать алгоритм самостоятельно, без помощи гугла.
Результат вывести в task.out.
#include <stdio.h>
int getSize(FILE *in) {
int len;
fscanf(in, "%d\n", &len);
return len;
}
void arrayFill(FILE *in, int array[], int limit) {
for ( int i = 0; i < limit && fscanf(in, "%d", &array[i]) > 0; i++ );
}
void arraySort(int array[], int size) {
int min;
for ( int i = 0; i < size - 1; i++ ) {
for ( int j = i; j < size; j++ ) {
if ( array[j] < array[i] ) {
min = array[j];
array[j] = array[i];
array[i] = min;
}
}
}
}
void arrayPrint(FILE *out, int array[], int size) {
size = size - 1;
for ( int i = 0; i < size; i++ ) {
fprintf(out, "%d ", array[i]);
}
fprintf(out, "%d\n", array[size]);
}
int main() {
FILE *in = fopen("task.in", "r");
FILE *out = fopen("task.out", "w");
int size = getSize(in);
int array[size];
arrayFill(in, array, size);
fclose(in);
arraySort(array, size);
arrayPrint(out, array, size);
fclose(out);
return 0;
}
Задача на нахождение общего кратного двух чисел
Читать статью Задача на нахождение общего кратного двух чисел в категории Язык C
файл task.out наименьшее общее кратное этих чисел.
#include <stdio.h>
unsigned long long gcd(unsigned long long a, unsigned long long b) {
unsigned long long result;
if ( b == 0 ) {
return a;
}
result = a % b;
return gcd(b, result);
}
unsigned long long lcm(unsigned long long x, unsigned long long y) {
return x * y / gcd(x, y);
}
int main() {
FILE *in = fopen("task.in", "r");
FILE *out = fopen("task.out", "w");
unsigned long long x, y;
fscanf(in, "%llu %llu", &x, &y);
fclose(in);
fprintf(out, "%llu\n", lcm(x, y));
fclose(out);
}
Саундтрек к заставке сериала Хранилище ( Sanctuary )
Опять таки, порадовать тех, кто ищет, скачивайте 01_Santuary_TV_Theme.mp3
Саундтрек к сериалу Strike Back / Ответный удар 2010 года
Для тех кто ищет. Саундтрек к сериалу "Strike Back" от студии SKY 1. В часности, к его заставке (тизеру)
Группа THE HEVY. Песня "No Time"
Вообще удивительно, что столько слов об этом, достаточно хорошем британском сериале, но при этом никакой информации о его музыке.
Композиторы указаны, но, я даже в Wiki не нашел вменяемой информации о музыке из этого сериала, хотя достаточно много всяческих "официальных источниках" о нем.
P.S. Рекомендую купить альбом этой группы за 2009 год. Называется "The House That Dirt Built"