Просьба оставить комментарий





Если вам понравился или не понравился топик. Я что то забыл или не дописал, то вы можете оставить свой комментарий и я постараюсь исправить это в ближайшее время.

среда, 28 декабря 2011 г.

Пункт "Выполнить..." в Windows 7

В Windows 7 на удивление нету много полезных фишек которые были в Windows XP к ним относиться отсутствие программы Hyper Terminal, игры "Реверси" :0) и отсутствие пункта "Выполнить" в меню пуск. Последний недостаток исправляется в свойствах меню.

Для того чтобы включить отображения этого пункт нажимаем правой кнопкой мыши на кнопке "Пуск", выбираем в выпадающем меню пункт "Свойства", во вкладке "Меню "Пуск" " нажимаем на кнопку "Настроить..." ищем чек бокс "Команда "Выполнить..." " и отмечаем его.

Как убрать автоматическую смену времени Windows 7

После того как в России отменили переход на зимнее время у пользователей Windows 7 начала возникать проблема с автоматической сменой времени, часы автоматом переводились на 1 час. Проблема возникает из за того, что по умолчанию в Windows настроена синхронизация с сервером времени, то есть что бы этого не происходило нужно отключить эту опцию.

Для этого щелкаем по часам в правом нижнем углу, нажимаем "Изменение настроек даты и времяни", переходим в кладку "Время по интернету", нажимаем кнопку "Изменить параметры" и снимаем вкладку "Синхронизировать с сервером времени в Интернет"

Собственно это нужно только при условии, что у вас по каким то причинам нет возможности произвести обновление через сервис Windows Update. Например при отсутствии интернет соединения, так как обновление исправляющее багу с переходом на зимнее время уже внесена в последние пакеты обновления.

четверг, 22 декабря 2011 г.

Русификатор Outpost Security Free 7.1

Outpost Security Suite Free.zip

Как известно у компании Agnitum есть свободная версия комплексной защиты Outpost, но почему то российский разработчик абсолютно не предусмотрел русский интерфейс в этой версии. Умельцы и любители этого комплекса решили эту проблему переводом немецкого набора локализационных файлов.

Для установки нужно скачать архив с набором файлов, распаковать его в любую папку и все содержимое этой папки переместить в папку с установленным Outpost Security Suite Free (у меня он расположен тут: C:\Program Files\Agnitum\Outpost Security Suite Free). Естественно перед этой операцией надо полностью отключить Outpost. На вопрос о замене файлов отвечаем "ДА". Все.

Теперь осталось только выбрать язык Deutsch и перезапустить программу.

вторник, 20 декабря 2011 г.

Простой ротатор баннеров php

На своем сайте столкнулся с задачей быстро сделать ротатор баннеров для рекламирования 2х своих проектов. Чтобы не искать скрипты рекламных систем и не писать больших скриптов с использованием базы данных решил быстро накатать скрипт.


<?php
$bann = mt_rand(1, 8);
if($bann < 5)
{
echo "
<a href=\"url-page_1\">
<img src=\"url-banner_1\" title=\"Какой то текст 1\" alt=\"Какой то текст 1\" width=\"468\" height=\"60\" /></a>
";
}
else
{
echo "
<a href=\"url-page_2\">
<img src=\"url-banner_2\" title=\"Какой то текст 2\" alt=\"Какой то текст 2\" width=\"468\" height=\"60\" /></a>
";
}
?>

Суть скрипта в следующем. Генератором случайных чисел генерируется число в моем случае от 1 до 8 и все. Далее простым условием проверяется больше это число определенного значения или нет. И выводится тот или иной баннер. При желании его можно модифицировать и выводить не 2, а 3 или больше. Вместо прямого задания вывода баннера его код можно запрашивать из базы данных и сделать админку для изменения процентов показов.

В этом примере процент показов примерно 70 выводиться первый баннер, а 30 процентах второй.

понедельник, 12 декабря 2011 г.

Удаление каталогов и всех вложенных в него файлов php старше 30 минут

На своих сайтах я использую защиту от копирования контента на основе сессий и в результате на сервере скапливается большое количество каталогов с файлами с номерами сессий. Естественно их приходиться удалять в ручную. Чтобы избавиться от этой рутинной работы я решил автоматизировать процесс с помощью PHP скрипта.

Следующая функция занимается удалением файлов и всех каталогов в указанной директории.
<?php
function removeDirectory($dir)
{
if ($objs = glob($dir."/*"))
{
foreach($objs as $obj)
{
is_dir($obj) ? removeDirectory($obj) : unlink($obj);
}
}
rmdir($dir);
}
?>
Функция нужна для того чтобы удалять как папки так и вложенные файлы, так как rmdir умеет удалять только пустые каталоги.




Далее нам необходимо определить все каталоги которые содержаться в указанной директории и после проверки на текущую и каталог уровня выше текущего ("." и ".."), что бы ненароком не затереть и весь свой сайт выполняем функцию которая описана выше.

<?php
if ($handle = opendir('../temp/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
        $time_sec=time();
        $time_file=filemtime("../temp/$entry");
        $time=($time_sec-$time_file)/60;
            if($time > 30)
            {
            removeDirectory("../temp/$entry");
            }
        }
    }
    closedir($handle);
}
?>

В текущем скрипте идет проверка на удаление каталогов которые старше 30 минут если нужно выбрать другое время то можно изменить условие   if($time > 30)

Далее остается только добавить задание в cron. Но в случае с cron' ом в скрипте необходимо указывать полные пути к папке так как задание запуститься, но файлы удалены не будут.

вторник, 6 декабря 2011 г.

Перезагрузка оборудования Cisco по расписанию

Этот скрипт пригодится тем у кого оборудование уже старое и бывает глючит и требует перезагрузки устройств для профилактики. В качестве скрипта использовал уже готовый, но немного переделанный скрипт backup 'а в другом топике.

#!/usr/bin/perl
use Net::Telnet ();
use Net::Telnet::Cisco;
use Mail::Sendmail;

my $ip="";
my $usernameCisco="login";
my $passwordCisco="password";
my $Cisco=0;
my $Unknown=0;
my $is_login=0;
my $is_cmd=0;
my $res="";
my $log_fail="";
my $dead="";
my $alive="";
my $log="";
my $log_t="";
my $t;
my $tmp;
my $mu;

# ----------------------------------------------------------------

$txt = "--- Config download script by dfox  ---\n";
print $txt; $log=$log.$txt;
$txt = "Initialization...";
print $txt; $log=$log.$txt;

$txt = "\t\tOK!\n----------------------------\n";
print $txt; $log=$log.$txt;

# ----------------------------------------------------------------
# Пробегаем по списку адресов
# ----------------------------------------------------------------
$b3 = "225";
        #for($k=0; $k<=$size-1;$k++)
        #{
        $ip="xxx.uuu.yyy.zzz";

        $txt = "trying $ip...";
        print $txt; $log=$log.$txt;

        $sessionnoc = new Net::Telnet(Timeout => 5, Errmode=>"return");
                $sessionnoc->open(Host=>"server.ru", Port => 23);
       
                $session = new Net::Telnet(Timeout => 5, Errmode=>"return");
                $session->open(Host=>$ip, Port => 23);
       
                $msg=$session->errmsg;
                if(!$msg)
                {
                $txt = "\t\tOK!\n";
                print $txt; $log=$log.$txt;

                        $alive=$alive.$ip."\n";
                         
                #------------------------------------------------------
                        # проверяем что за девайс
                #------------------------------------------------------
                $tmp="";
                $tmp=$session->get;
                $devType=0;
                # Cisco
                if (index($tmp,"")>=0)
                {
                        $devType=1;
                        $txt="Device type - Cisco\n";
                };

               
               
                $txt="Logging on...   ";
                print $txt; $log=$log.$txt;
                # Cisco
                if ($devType==1)
                {
                        $t=Net::Telnet::Cisco->new(Errmode=>"return",Timeout=>20,Host=>$ip,Input_log=>'tmp_cisco_in.txt',Output_log=>'tmp_cisco_out.txt');
                        if ($t->login($usernameCisco,$passwordCisco)){$is_login=1;} else{$is_login=0;};
                };
               
               

                if($is_login>0){$txt="\t\tOK!\n";} else{$log_fail=$log_fail."$ip\n",$txt="\t\tfailed!\n";$log_t=$log_t."$ip\tlogin_failed!!\n";};      
               
                print $txt; $log=$log.$txt;
                if($is_login==0){next;};
                         
                #------------------------------------------------------
                        # делаем дело исходя из типа девайса
                #------------------------------------------------------
                $txt="Uploading cmd...";
                print $txt; $log=$log.$txt;
                $is_cmd=0;     
                # Cisco
                if ($devType==1 && $is_login>0)
                {
                        if(!($t->is_enabled)) {$t->enable($passwordCisco);};
                        $t->cmd('terminal length 0');
            $mu = $k+1;
                        if (@lin=$t->cmd("reload \n\n\n"))
                        {
                        $is_cmd=1;
                        ++$Cisco;
                        $t->cmd("logout");
                        $t->close;
                        }
                        else {$is_cmd=0;};
                };


                if($is_cmd)
                {
                        $txt="\t\tOK!\n$res\n";
                        $log_t=$log_t."$ip\tOK!\n";
                }
                else
                {
                        $txt="\t\tfailed!\n";
                        $log_t=$log_t."$ip\tfailed!\n";
                }
                print $txt; $log=$log.$txt;                    
                $t->close;
        }
        else
        {
                $txt = "\t\tfailed!\n";
                print $txt; $log=$log.$txt;
                        $dead=$dead.$ip."\n";
                $log_t=$log_t."$ip\ttelnet_failed!!\n";

        }
        # закрываем сессию
        $session->close;
        #}

# ----------------------------------------------------------------
# шлем почту о резалтах
# ----------------------------------------------------------------
%mail =
(
        To      => 'admins@server.ru',
        From    => 'backups@server.ru',
        Subject => 'Service report about REBOOT',
        Message => "Reboot devices:\nCisco = $Cisco\n*************\n$log_t\n$log\n",
        SMTP    => '**********'
);
       
sendmail(%mail) or die $Mail::Sendmail::error;
print "OK. Log says:\n", $Mail::Sendmail::log; 
# ----------------------------------------------------------------

В этом случае письмо отправиться только в случае ошибки. Так как подобные скрипты обычно запускают с внутреннего сервера с которого есть доступ к конфигурированию девайсов. Ну и строка в crontab:
  0 4   *   *   7    /home/user/cisco-reboot.pl

То есть скрипт будет отрабатывать раз в неделю на 7 день в 4 утра. Выбрал это время исходя из меньшей загрузки сети.

понедельник, 5 декабря 2011 г.

Смена редактора по умолчанию в Debian

Системные администраторы по умолчанию на всех серверах установили vi в качестве редактора по умолчанию, для меня этот редактор не удобен пришлось искать способ вернуть обратно nano по умолчанию.

Узнаем оболочку

echo $SHELL
Если оболочка bash, то для постоянного изменения редактора по умолчанию можно прописать в /etc/bash.bashrc

Т.е: #nano /etc/bash.bashrc
Вставляем в конец файла
export EDITOR=/usr/bin/nano
export VISUAL=$EDITOR
То есть в переменную окружения по умолчанию будет записываться значение пути к nano

Если сервер не ваш и редактор менять не стоит, но отредактировать например crontab хочется можно воспользоваться командой:
EDITOR=/bin/nano crontab -e
И кронтаб откроется в nano не зависимо от того какой редактор стоит по умолчанию.

среда, 30 ноября 2011 г.

Установка и настройка MRTG Debian и Cisco

Для установки достаточно набрать apt-get install mrtg.
Принцип работы mrtg заключается в запуске по крону сборщика статистики(indexmaker) по SNMP на устройствах с его поддержкой. Для примера настроим на cisco snmp строкой:
snmp-server community commsnmp RO 1
Здесь создается сервер с именем компьюнити commsnmp в режиме только чтения для акцесс листа с номером "1".
Теперь можно настравить конфигмейкер mrtg на чтение этого компьюнити с этого устройства и сделать конфиг сборщик:

cfgmaker commsnmp@ip_address_cisco_device --output mrtg.cfg
Все конфиг создан его можно положить в etc и осталось прописать задание в cron для запуска индексатора:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

Естественно для просмотра из вне должен быть настроен apache, но можно просматривать и без него.

Допустим если устройств несколько, то можно сделать несколько конфигов и генерировать несколько файлов index_n. А для морды написать свою страницу и инклудить в зависимости от выбранного устройства.



понедельник, 28 ноября 2011 г.

Настройка DHCP на маршрутизаторах Cisco Часть 1

Рассмотрим настройку DHCP сервера на маршрутизаторе и получение ip адресов, на связанных с ним через коммутатор, компьютерах.

Коммутатор соединяется с маршрутизатором и компьютерами кабелем типа Rollover. На маршрутизаторе настраивается интерфейс и задается ip адрес. Так же он будет шлюзом для наших компьютеров и будет назначаться автоматически при помощи DHCP. На компьютерах устанавливаем опцию получать ip адреса автоматически.

Настройка Router0:

conf t
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.248
exit

Настройка DHCP:
conf t
ip dhcp pool DH_1
network 192.168.1.0 255.255.255.248 - задаем сеть из которой будем раздавать адреса
default-router 192.168.1.1 - задаем маршрут по умолчанию
dns-server 192.168.1.1 - задаем dns он как и маршрут и ip address будет назначаться автоматически, т. к. пока DNS сервера нет, для примера укажем сам щлюз.

Процесс получения адреса можно описать следующим образом:

DHCPDISCOVER
Клиент отправляет броадкаст по всей сети. Так как собственного он не имеет
в качестве источника указывается 0.0.0.0, а назначения 255.255.255.255. В качестве опции может быть указан последний известный ему ip адрес, в случае если он будет свободный сервер может его предложить в качестве адреса для клиента.

DHCPOFFER
Получив запрос от клиента сервер отправляет предложения с настройками к клиенту. Предлагаемый адрес расположен в поле yiaddr. В качестве опций указывается ip шлюза и DNS сервер. В качестве назначения указывается MAC адрес запрашивающего хоста.

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

DHCPACK 
Когда сервер получает запрос отсылается пакет с настройками и хост с помощью этих настроек конфигурирует сетевой интерфейс.

воскресенье, 27 ноября 2011 г.

Список бесплатных программ для Windows, которые можно использовать наравне с платными аналогами

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

Alcohol 52% программа для эмуляции cd/dvd дисков бесплатная версия позволяет эмулировать привод и монтировать на него образы, для чего собственно его и используют в основном. Отсутствует функциональность записи дисков. Можно скачать тут

Burn4free программа записи cd/dvd дисков компенсирует недостаток свободной версии alcohol 52%

EASEUS Partition Manager программа для работы с разделами жесткого диска, позволяет изменять размеры разделов, создавать удалять диски, изменять файловые системы, очень удобный инструмент и полностью бесплатный для домашнего пользования.

Outpost Security Suite Free бесплатный, но немного урезанный комплекс защиты. Функционала для меня вполне хватает, использую его на всех своих компьютерах. Регистрация происходит 1 раз в год, каждый год можно ключ пролонгировать. Забираем Версия 32 бита 64 бита Кто не жадный Pro версия

Cuneiform бесплатный аналог FineReader с большинством текстов справляется, если не нужно распознавать что то сложное, то ничего проще не найти. С распознаванием русских тестов справляется без проблем. Таблицы распознает очень плохо, но если ничего кроме копии таблицы не нужно, то можно просто вырезать область в виде картинки. Забираем cuneiform_rus.exe

7zip мультиархиватор. Работает практически со всеми типами архивов, встраивается в контекстное меню Windows. Лучшего архиватора не найти.

Notepad++ отличный текстовый редактор. Имеет большое количество плагинов, при грамотной настройке перегонит по функциональности Dreamviewer.

PC Wizard аналог Everest(Aida). Полностью может заменить его. Так же удобен при проведении инвентаризации оборудования.

KeePass Просто удобный менеджер, генератор, хранитель паролей под все известные платформы, для синхронизации можно использовать Dropbox.

Ultra Commander свободный аналог Total Commander. Поддерживает несколько типов плагинов от Total, но единственный недостаток это оформление, которое очень страдает, но если учесть, что он бесплатный то на это можно не обращать внимания.

VLC Player очень долго не хотел им пользоваться, но сейчас это мой самый любимый плеер. Очень функциональный бесплатный плеер с подгрузкой кодеков из интернет при необходимости. Можно забыть про нехватку кодеков и установку различных codec pack, так же это плеер имеет возможность транслировать свое видео в интренет.

CodeTwo Outlook Sync программа для синхронизации задач, календаря, заметок, контактов на 2 компьютерах. Вполне хватает для синхронизации outlook'а на работе и дома. Из багов заметил только ошибку при синхронизации цветов категорий, сами категории синхронизируются без проблем.

CCleaner Программа для очистки Windows от мусора, такого как файлы оставшиеся от установки ПО, кэш браузеров, старых бэкапов разных файлов и программ, а также очистка реестра. Есть возможность запускать программу по расписанию и есть поддержка командной строки, что очень удобно для системных администраторов.

2GIS набор карт с расчетом маршрута, возможностью использования gps приемника и каталогом предприятий и некоммерческих организаций. Разработчики выжили за счет бесплатности их продукта в кризисные годы. В то время они боролись за существование с платными аналогами, которые в конце концов вымерли. Платить приходиться только просмотром рекламы. На сайте есть готовые msi пакеты. что оценят админы.

суббота, 26 ноября 2011 г.

Обзор платежной системы moneybookers.com

Со времени создания система Moneybookers была намного удобней для большинства жителей стран СНГ, чем PayPal. Эта система всегда была первой кто расширял возможности для жителей СНГ, которые были необходимы для осуществления многих операций. Первой внедрила привязку карты, банковского счета и привязку счета к аукциону ebay для приема платежей. Палка только в конце лета этого года внедрила возможность приема платежей для нашей страны, а на букерсах эта возможность существовала уже давно.

Около года назад система объявила о своем ребрендинге и начала повсеместно использовать название Skrill, скорее всего для уменьшения длинны названия.

За 4 года использования этой системы лично у меня не возникала неудобств по ее использованию. На некоторых сайтах видел негативные отзывы о блокировки аккаунтов и задержки переводов, что скорее всего было вызвано не совсем легальным использование этой платежной системы.


На сайте moneybookers.com с регистрацией не возникает больших трудностей есть поддержка большого количества языков в том числе и русский. Верификация карты происходит по системе paypal, то есть происходит списания небольшой суммы со счета и последующим подтверждение ее. Для повышения лимитов операций и увеличения доверия системы к вам так же стоит привязать банковский счет.

С комиссиями все тоже обстоит не плохо на ввод с карты 0%, на вывод на карту всего 1.8 евро не зависимо от суммы. Последний раз когда делал вывод не смог вывести больше 500$ единовременно, пришлось переводить несколькими траншами.

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

Intervlan маршрутизация Часть 1

В этой теме описывается технология маршрутизации между различными vlan сетями под управлением одного маршрутизатора и коммутатора. Подобная конфигурация, которая описывается в этой заметке, встречается в небольших офисах для разделения сетей и ограничения доступа к одному из них из другой например по средствам списков доступа(access-list). Списки доступа будут рассмотрены в других заметках. Здесь я опишу только саму технологию работы маршрутизации.

По рисунку видно что на маршрутизаторе используется только один интерфейс, в случае маршрутизаторов cisco нет необходимости использования 2 интерфейсов или больше, так как в этих маршрутизаторах есть технология подинтерфейсов, т.е. на одном физическом интерфейсе можно поднять несколько виртуальных интерфейсов.


Соединение с коммутатором происходит кабелем типа rollover и на интерфейсе коммутатора настраивается режим Trunk на 2 vlan, то есть этот порт будет пропускать пакеты с номерами vlan в заголовке с номерами которые прописаны при настройке trunk(в нашем случае vlan1 и vlan2). На портах которые подсоединены к компьютерах настраивается режим access, то есть этот порт будет пропускать только те пакеты в заголовке которых указан только тот vlan который задан при его настройке.

В обеих сетях достаточно использовать маску /30 так как в данном примере больше адресов не требуется.

Интерфейс f0/0 сам по себе не настраивается, а только активируется. Настройка ip адресов происходит на подинтерфейсах f0/0.1 и f0/0.2.

Теперь переходим к настройке коммутатора:

Интерфейс f0/10
Switch(config)#interface f0/10
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan 1,2

Интерфейс f0/1
Switch(config)#interface f0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 1

Так как интерфейс vlan 1 существует по умолчанию настраивать его не нужно, но интерфейса vlan 2 не существует, поэтому его надо сконфигурировать.

Switch(config)#interface vlan 2
Switch(config-if)#exit

Далее можно настраивать второй интерфейс:

Интерфейс f0/2
Switch(config)#interface f0/2
Switch(config-if)#switchport access vlan 2

Настройка коммутатора завершена, теперь можно перейти к конфигурированию маршрутизатора:

Router#conf t
Router(config)#interface f0/0.1
Router(config-subif)#encapsulation dot1Q 1
Router(config-subif)#ip address 192.168.1.1 255.255.255.252
Router(config-subif)#exit
Router(config)#interface f0/0.2
Router(config-subif)#encapsulation dot1Q 2
Router(config-subif)#ip address 192.168.2.1 255.255.255.252
Router(config-subif)#exit
Router(config)#exit
Router#copy runing-config startup-config

Далее надо настоить маршрутизацию между сетями

router rip
 version 2
 redistribute connected
 network 192.168.1.0
 network 192.168.2.0
 no auto-summary

Далее мы настраиваем интерфейсы на компьютерах

ПК1: 192.168.1.2 255.255.255.252 Шлюз: 192.168.1.1
ПК2: 192.168.2.2 255.255.255.252 Шлюз: 192.168.2.1

Во второй части будет рассмотрено поведение пакетов при работе в этой конфигурации.

четверг, 24 ноября 2011 г.

Восстановление конфигурации Cisco с tftp сервера

В работе понадобилось замена действующего коммутатора на более новый так как старый начал подавать признаки умирания. Конфигурация этой Cisco была очень объемная и естественно не вариант в ручную переносить все настройки, а лучше сделать восстановление из резервной копии. Так как резервное копирование действующих конфигураций со всех Cisco у меня уже было сделано я взял готовую резервную копию. В качестве источника конфигурации я использовал tftp сервер.

Сначала я попытался использовать Cisco tftp сервер, но при запросе конфигурации с него он падал на Windows 7 поэтому пришлось использовать другой сервер TFTPD32 настройка его такая же простая как и у Cisco tftp. Единственное что нужно задать это интерфейс на котором он будет висеть и рабочую папку в который надо залить конфиг.

Сетевые настройки компьютера и Cisco девайса следующие:

На компьютере просто создаем сетевое соединение 192.168.1.10 255.255.255.0, включаем его и при настройке tftp указываем интерфейс с этим адресом, файрволл надо будет либо настроить либо отключить на время операции.

На коммутаторе заходим в интерфейс vlan1 назначаем ему например 192.168.1.1 255.255.255.0.

Все подключаем компьютер ролловером к коммутатору и можно заливать конфиг или делать резервную копию.

Для того чтобы залить конфигурации используется та же команда в привелегированном режиме как и сохранение действующего конфига в конфиг по умолчанию copy tftp-сервер назчначение:


Router#copy tftp: running-config
Address or name of remote host []? 192.168.1.10
Source filename []? backup_cfg_for_my_router
Destination filename [running-config]?
Accessing tftp://192.168.1.10/backup_cfg_for_my_router...
Loading backup_cfg_for_router from 192.168.1.10 (via FastEthernet0/0): !
[OK - 1030 bytes]

1030 bytes copied in 9.612 secs (107 bytes/sec) 
То есть просто задаем в качестве источника tftp: и назначение действующую конфигурацию.
После этого будет несколько вопросов ip адрес tftp сервера, имя файла, на 3 вопрос можно ответить просто нажать на enter. Или в моем случае можно указать в качестве назначения startup-config.

Если в качестве назначения указывается running-config то чтобы его задействовать после перезагрузки его надо сохранить в стартовую конфигурацию.

воскресенье, 20 ноября 2011 г.

Индексация блога в домене blogspot.com

При выборе движка долго не задумывался об выборе платформы, видел по сети что очень много людей ведут свои блоги на платформе blogspot.com и без долгих раздумий зарегистрировал на ней свой блог. Преимущества были в быстрой регистрации и быстрого и простого заведения. После регистрации обнаружил, что он к тому же является одним и сервисов Google.com.
После смены оформления панели он стал похож на другие сервисы поискового гиганта и стал очень удобным.

Минусы которые обнаружены за это время не совсем понятная работы размещения статей по расписанию и не желание ПС Яндекс его индексировать. При добавлении блога в Вэбмастер и Метрику какое то время висела 1 проиндексированная страница и то она была ссылкой на ПС Яндекс.

Причина такого явления большое количество мусорных блогов на этой платформе и принадлежность его к сервисам Google, поэтому Яндекс не испытывает особого желания его индексировать и поэтому они автоматом попадают в фильтр + Яндекс не любит слишком новые сайты и поэтому должно пройти какое то время что бы появилось доверие к нему.

Поиск по интернету привел к тому, что единственный верный способ индексации Яндексом на blogspot является регистрация и подключение платного домена второго уровня и в случае с яндексом конечно же в зоне ru. Так же есть варианты отписаться в службу поддержки чтобы они внесли этот сайт в список исключения фильтра.

В данный момент отписал в службу поддержки буду ждать ответа от результатах отпишусь.

UPD: Ответа толкового так и не получил. Приобрел домен 2-ого уровня и привязал его к блогспоту. В итоге через 2 недели появился результат в виде 2 проиндексированных страниц из 40, что в общем не плохо.

UPD2: Спустя еще месяц потихоньку начали вползать в индекс и остальные страницы 11 из 44

UPD3:  Потихоньку двигается индексация 29 из 47

UPD4: Все значительные статьи в индексе яндекса

Настройка локальной сети. Объединение компьютеров соединенных через коммутатор(Свитч).

В обычном офисе или квартире, где не нужно большое количество компьютеров и сеть не разделена на разные сети. Достаточно использовать коммутатор для объединения. Причем можно взять самый обычный и дешевый коммутатор  Главное выбрать свич с необходимым количеством портов.

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

Для этой сети выделим 8 адресов так как больше нам не нужно и назначим маску сети 255.255.255.248.



По умолчанию маршрутизатор настроен так что все порты его работают в одном Vlan, назначение Vlan в нашем случае не требуется, то есть без проблем можно подключать в любые свободные порты. В отличии соединения напрямую 2 компьютеров, подключение 2 или более компьютеров через коммутатор требуется использовать кабель Rollover, т.е. обжатый с обоих сторон одинаково.

В случае на картинке при подключении mac таблица у коммутатора пустая, и следовательно он не знает куда направить пакет который к нему пришел. То есть когда компьютер ПК0 отправит допусти icmp пакет к ПК1, то перед ним должен отправиться arp пакет с бродкаст mac адресом и коммутатор отправит его на все порты кроме исходящего. Когда arp пакет(ответ) вернется на коммутатор, в нем появиться запись в таблице mac адресов об mac адресах устройств висящих на задействованных портах.

Подключим третий компьютер и посмотрим как происходит обнаружение компьютеров в сетях.



При включении режима эмуляции видим, что arp пакет на компьютере ПК2 режется так как его ip адрес в поле Target ip arp пакета указан другой ip адрес. В тоже время ПК1 принимает пакет узнает, что пакет предназначен ему и отправляет ответ.

Пока ответ от ПК1 не пришел на коммутатор его таблица mac адресов выглядит так:




То есть в ней есть информация только об ПК0(его физическом адресе), когда arp ответ приходит на него таблица пополняется еще одной записью:



После этого уже не потребуется оправлять arp пакет для создания пакета на ПК0 для отправки его на ПК1, так как ПК0 будет обладать информацией о нем.

Создание анонимного пользователя в Filezilla FTP-server под Windows

Возникла задача поднять FTP сервер под Windows, расшарить папку и разрешить доступ на чтение для анонимных пользователей. Выбор пал на FTP server Filezilla. Скачать его можно по этой ссылке.

Сервер очень прост в настройке имеет графический интерфейс в виде gui. По умолчанию устанавливается как сервис Windows и управляется с помощью gui клиента через порт 14147.

После установки появиться окно как на следующей картинке:
Оставляем как есть, пароль администратора можно позже задать в настройках сервера.
Далее Edit->Users




Во вкладке General жмем на кнопку Add и добавляем пользователя anonymous



Оставляем галки как есть, password можно не устанавливает, это аналогично установке пароля anonymous.

Далее переходим во вкладку Shared folders и указываем этому пользователю домашнюю директорию.








SSH SCP Плагин для Total Commander

Самый удобный графический файловый менеджер обладает большим набором полезных плагинов которые упрощают работу различных профессий. В сети и на сайте разработчика есть несколько плагинов для работы по SSH, попробовав пару из них я остановился на плагине wfx_sftp. Есть небольшая трудность в его установке так как он не совсем корректно подхватывается автоматическим установщиком Total Commander, зато после настройки он вполне неплохо работает.

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

Если возникли проблемы с установкой в автоматическом режиме но можно просто скопировать файлы из архива в директорию plugins\wfx в папке с тотал коммандер. После установки во вкладке сетевое окружение менеджера появиться раздел \Secure FTP Connections это он и есть.

Скачать плагин можно по этой ссылке.

Настройка RDP Windows 7

По умолчанию RDP в ОС Windows не активирован, то есть вы не сможете попытаться залогинится на удаленный компьютер без активации службы удаленного рабочего стола. Активация проходит довольно быстро Пуск -> Правой кнопкой мыши на значке "Компьютер" -> В левом меню выбираем пункт "Настройка удаленного доступа" -> Выбираем пункт как на картинке:




Активация RDP завершена, если у вас не стоит файрволл, то все должно работать, если стоит то нужно разрешить соединение на порт TCP 3389, а если до компьютера еще стоит маршрутизатор, то нужно осуществить проброс портов.

Идентификация кошелька Яндекс.Деньги

Из всех предложенных способов идентификации кошелька самый быстрый способ подходящий для большинства людей это перевод в системе Contact. Яндекс почему придумал очень мало способов идентификации и большинство из них очень не удобно.

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

Заявление по почте во-первых очень долгое по времени, во вторых заверение нотариусом стоит денег и не маленьких, у меня в городе стоимость составляет 500 рублей.

Онлайн проверка через Equifax доступна только для тех людей которые брали кредиты, я как человек экономный и расчетливый ни разу их не брал, способ отпал. Хотя это был бы самый быстрый и дешевый способ идентификации.

Привязка через банковскую карту предлагает очень маленький список банков, всего 2. Заводить дополнительные карты не возникло никакого желания + есть затраты по времени на ее изготовление и стоимость ее изготовления.

Так что я остановился на системе Contact так как видел логотипы во многих банках. Поискав ближайший офис обнаружил его на первом этаже здания где я работаю. Заполнил заявление и распечатал. В офисе дама очень долго разбиралась как провести эту операцию и отправила в кассу на оплату. В результате затраты по времени вышли около 1 часа и 175 рублей оплаты в кассу, что порадовало 100 возвращается на счет после прохождения платежа.

На следующий день в аккаунте я обнаружил изменения статуса кошелька и 100 рублей на счету.

пятница, 18 ноября 2011 г.

Настройка локальной сети на 2 компьютерах без свича


Рассмотрим пример организации сети состоящую их 2 компьютеров без маршрутизатора и коммутатора.
Для 2 компьютеров достаточно диапазона из 4 адресов, то есть подходящая маска сети 255.255.255.252. 2 адреса на 2 компьютера 1 адрес сети 1 броадкаст

1 Компьютер: ip адрес 192.168.1.1 маска 255.255.255.252 шлюз не указываем
2 Компьютер: ip адрес 192.168.1.2 маска 255.255.255.252 шлюз не указываем

Кабель для этой сети нужно использовать типа Crossover

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

Что бы разобраться как работает данная схема можно собрать ее в Packet Tracer и посмотреть в режиме симуляции какие пакеты ходят между компьютерами и как они устанавливают соединение между собой.

Для того чтобы компьютер ПК0 узнал какой mac адрес ПК1 указывать в заголовке кадра (допустим при пинге), перед началом отправки icmp пакетов ПК0 отправляет arp пакет с mac адресом назначения ffff.ffff.ffff, то есть броадкаст 2ого уровня. Так как собственно по этой схеме ему бежать больше некуда он приходит на ПК1. В ответ на arp пакет ПК0 отправляется arp пакет с указанием уже своего mac адреса в поле источника отправления. После этого ПК0 получает этот пакет и знает куда какой mac адрес указывать при отправке icmp(Echo Request).
ПК1 получает Echo Request и в ответ отправляет Echo Reply.

Пинг прошел.






Cisco Packet Tracer + Русификатор

Cisco Packet Tracer это программа-эмулятор разрабатываемая в компании Cisco для студентов своих курсов.  Данная программа в своем роде уникальна, она содержит все что необходимо для изучения работы сетей и в тоже время не требовательна к ресурсам. В этой программе можно без проблем набросать и проверить работу небольшой сети, настроить маршрутизацию, списки доступа, добавить DHCP, DNS, MAIL и другие сервера и проверить работу компьютеров в этой сети.

Есть и другие аналоги вроде GNS, но они требуют много знаний для установки, требовательна к ресурсам и требует образы операционных систем Cisco. А в качестве клиентских машин нужно использовать виртуальные машины с установленными клиентскими ОС.

Большинство примеров сетей, которые я буду публиковать в этом блоге будут собираться в этой программе.

Скачать программу с русификатором можно по этой ссылке.

Для русификации программы нужно файл RUSSIAN5.3.ptl закинуть в папку languages в Program Files -> Cisco Packet Tracer. Далее при запуске программы нажать Ctrl+R, и выбрать языковой файл, применить и после перезапуска программы язык интерфейса сменится на русский.

Stop Online Piracy Act (SOPA)

Новость опубликованная сегодня наверно сильно изменит в будущем файлообмен в интернет. По крайней мере на западе, но существует возможность того, что опыт западных стран могут начать применять и в РФ через какое то время. Давно ходят новости про различные технологии борьбы с p2p сетями и в нашей стране, создаются компании для борьбы с распространением контента на торрентах, проекты по созданию мусорного трафика по заказу правообладателей, которые хоть как то пытаются ограничить скачивание фильмов, музыки и другого контента.

Новый этап борьбы с пиратами теперь пытаются реализовать с помощью антипиратского закона Stop Online Piracy Act, списки ip адресов которые привязаны к сайтам распространяющие нелегальный контент и даже просто ссылающиеся на него будут блокироваться на уровне интернет провайдеров. В список из рунета вошли Вконтакте и Рутрекер. Самый известный международный ресурс, это Пиратская бухта.

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

Против введения данного закона выступает большое количество организации такие как:
Facebook, Google, Twitter, Yahoo, eBay, AOL, LinkedIn и Zynga. Mozilla даже опубликовала просьбу к пользователям для выступления против этого проекта.

Массовое отключение сайта в знак протеста 18 января в знак протеста против этого закона повлияло на конгрессменов которые выступали за этот закон и в итоге его отклонили.

понедельник, 14 ноября 2011 г.

Что делать если не хватает портов на патч панели и в розетках в кабинетах?

При разрастании офиса многие системные администраторы сталкиваются с проблемой не хватки розеток для подключения компьютеров к сети и телефонов к АТС.

Самое сложное решение проблемы, это прокидывание кабеля по всему офису в коробе, установки розетки, монтаж кабеля в нее, и т.д.

С этим также возникает необходимость покупки кабеля, розеток, выбор времени для освобождения рабочего места пользователем, грязь, пыль, и т.д.

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

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

Ну и последнее решение это сделать разветвитель на один кабель навесить 2 порта свича в серверной и 2 устройства у пользователя. Естественно при этой схеме получиться 2х кратное падение скорости, но проблема эта в течении всего 10 минут.

Пример подобного разветвителя можно посмотреть на этом изображении:

Естественно эту устройство надо навесить парами, при проверке тестером будут задействованы только половина контактов.

Пропускной способности вполне хватит на работу обычных офисных компьютеров, принтеров и телефонов.

Останется только обжать пару патчкордов и продолжить работу.

Копирование файлов без расширения php

При обработке своей базы данных столкнулся с багом в php. Функция copy не копировала файлы которые не имеют расширения. После долгих экспериментов получилось решить проблему только одним способом. Для начала попробовал использовать функцию rename, для начала переименование файла без расширения в файл с расширением, а затем копирование. Результат оказался таким же.

Спасла функция exec(). Я использовал внутреннюю команду ОС Linux переименования mv.
Синтаксис команды следующий:
mv file1 file2<cr>

То есть в результате получилась такая строка в php скрипте
exec("mv ".$filename1."".$filename2.".".$filetype);

Можно было бы замерить скорость если бы функция copy не глючила. И с вероятностью процентов 70 скорость этого решения была бы быстрее, чем команда copy, но проверить не представляется возможным.

Запуск php скрипта через Cron

В некоторых случаях необходимо запускать скрипты php скрипты по расписанию для обновления блога например или например парсинга курсов валют(Подобный скрипт работает на моем проекте inettools.net для парсинга значений ЦБ РФ)

Итак рассмотрим несколько вариантов задания параметров для crontab

Запуск скрипта test.php с аккаунта test с отправкой выходных и сообщений об ошибках на указанный в Cron Manager почтовый ящик:

/usr/local/bin/php /home/test/public_html/test.php

В письме результат выполнения скрипта не выводиться. На почту отсылается только вывод об ошибках:

/usr/local/bin/php /home/test/public_html/test.php > /dev/null
 
На заглушку отправляется результат работы скрипта и ошибки. На почту ничего не отправляется:

/usr/local/bin/php /home/test/public_html/test.php > /dev/null 2> /dev/null


Очень желательно указывать полный путь к интерпретатору ну и соответственно к скрипту.

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

воскресенье, 13 ноября 2011 г.

mime_content_type в php5 Debian 6

При написании сервисного скрипта для определения mime типа файла обнаружил, что такой функции(mime_content_type) нет в Debian да и вообще похоже прикрыли ее.
В xampp для Windows были какие то глюки с ее работой выводил пустой экран, после правки php.ini
изменил пункт
mime_magic.debug = On
выводил ошибку, что такой функции он не знает.


После долгого гугления обнаружил, что в версии для linux по умолчанию присутствует функция finfo_file. Работает она следующим образом:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$fileinf = finfo_file($finfo, $urlаfile);

В результате $fileinf  вернет mime тип файла. То есть можно написать свою функцию:

function get_mime_type($filepath) {
    ob_start();
    system("file -i -b {$filepath}");
    $output = ob_get_clean();
    $output = explode("; ",$output);
    if ( is_array($output) ) {
        $output = $output[0];
    }
    return $output;
}

суббота, 12 ноября 2011 г.

Важность контроля доступа к сервисным скриптам вашего сайта .htaccess

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

Я на своем опыте испытал большое количество запусков моего сервисного скрипта по обработке полей, и добавлению новых строк, что привело к появлению дублей, естественно эти скрипты запускал конкурент, который искал дыры в моей базе, так как тематика сайта довольно интересная и популярная. Так как это скрипт по сути никаких глобальных изменений не делал я его закрывать не стал, и попался пришлось 2 часа сидеть исправлять, благо бэкапы в наличии были.

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

Рассмотрим вариант закрытия одного файла
<Files service.inc>
deny from all
</Files>

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

Чтоб запретить доступ ко всем файлам
<Files *.*>
deny from all
</Files>

Настройка маршрутизации между сетями на Mikrotik 1200

Перед мной стояла задача простой настройки маршрутизации между 2мя подсетями. Настройка режима 1Gbit на интерфейсах подключение 2 компов к разным с гигабитными сетевухами подсетям и тестирование пропускной способности программой ipref. В микротике это реализуется довольно просто.

Первым делом подключаем комп или ноут к интерфейсу с номером 0(ether0). По умолчанию на этом интерфейсе настроен ip адрес 192.168.88.1/24, то есть настраивающему компу присваиваем адрес из диапазона 192.168.88.2-192.168.88.254. Шлюзом указываем соответственно наш маршрутер.

Далее заходим через вэбраузер в вэбморду и скачиваем winbox.

Следующая задача это настройка второго интерфейса с другой подсетью, для этого надо назначить ip из другой подсети на этот интерфейс, я выбрал ether2. В меню Winbox выбираем NewTerminal и в консоли набираем команду setup. Далее выбираем пункт "a", то есть конфигурирование ip адресов и шлюза, далее выбираем опять "a" назначение ip адреса, winbox спросит на каком интерфесе нужно настроить ip адрес, все физические интерфейсы именуются ether0-n, я конфигурирую второй следовательно вбиваю ether2 далее пишу адрес 192.168.89.1/24 Все из командной строки можно выходить, так как задачи настройки интернета пока не стоит. Жмем 2 раза "x".

Также можно проверить настройку набрав interface print и ip address print. Собственно все если в фаерах на клиентских компах сети в доверенной зоне, то все должно работать.

В GUI можно назначить пропускную способность портов и принудительно выставляю 1gbit. Пункт Interfaces -> 2 раза кликаю по интерфейсу и во вкладке ethernet выставляю option на необходимый.

Далее скачиваю ipref запускаю на линукс машине сервер и тестирую с виндовс машины пропускную способность при 1 потоке показывает 500-600 мбит маршрутизация между подсетями. При 2 потока показало всего 175 мегабит, обидно :(

вторник, 1 ноября 2011 г.

Виды рекламы которые не стоит использовать на своих сайтах

Так как яндекс в большинстве своем копирует популярные шаги своего основного конкурента Гугла, следует придерживаться одинаковых схем работы с этими поисковиками, гугл уже давно борется с навязчивыми видами рекламы и видами которые пытаются навязать различные "лекарственные чудодейственные средства" и интернет казино, гороскопы я думаю следующие. Яндекс недавно объявил о введения политики пессимизации позиций сайтов с аналогичными рекламными блоками и борьбой с popunder, clickunder рекламы, называется это операция - учет юзабилити сайтов при построения выдачи.

Следовательно если вам не хватает доходов с главного спонсора Адсенс, то добавлять эти виды не стоит, заработаете копейки, а ущерб от потерь в выдаче может быть губительным для вашего сайта или нарваться на недобросовестную партнерку с кидаловом после набора минимума на вывод. Лучше искать узкоспециализированных поставщиков рекламодателей, например если у вас сайт связан с книгами тем или иным способом, то можно искать партнерки книжных магазинов, если развлекательный, тизерки, игровые и социальные виды партнерок, если товары и услуги то эффект больше от Адсенс, бегуна и Яндекс.Директ

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

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

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

Сам наблюдал эффект пессимизации от партнерки визрад баннерс, после снятия этих кодов и двух апов трафик с ПС резко увеличился 4-5 раза.

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

UPD: По последним новостя google собирается пессимизировать страницы без полезного контента с большим количеством рекламы. По данным официального источника будет затронуто около 1% сайтов. Что само собой скажется на качестве выдачи. И кого то накажет.

Русификация recaptcha

На большинстве сайтов использующих reCaptcha, на которых я был, почему то используют стандартный язык и тему оформления, хотя эти параметры можно менять через небольшое API.
Изменить ее можно очень сильно, убрать логотип, изменить цвета оформления, убрать ненужные кнопки, изменить язык(доступны на данный момент English, Dutch, French, German, Portuguese, Russian, Spanish, Turkish), то есть русский имеется, что радует.

Начнем с русификации для этого перед вызовом самой рекаптчи вставим такой javascript код:

<script type="text/javascript">
var RecaptchaOptions = {
   lang : 'ru',
};
</script>


с русификацией все

В данном коде в переменной настроек RecaptchaOptions задается параметр lang со значением ru, их можно менять в зависимости от нужного языка.


Изменение темы задается также в этой переменной, достаточно указать
theme : 'theme_name' где theme_name название темы.
Для примера можно попробовать параметры 'blackglass', 'clean', 'red', 'white', изменить же можно еще сильней покопавшись в API http://code.google.com/apis/recaptcha/docs/customization.html

Будем надеяться, что рекаптча не умрет как другие проекты Гугла, и будет развиваться, и развиваться его API с его описанием на русском языке, так как на мой взгляд единственное средство против копирования защищенного контента на данный момент, правда заказ забивания каптчи китайцами и индусами никто не отменял.

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

четверг, 27 октября 2011 г.

Устранение ошибки Ошибка 500 (Internal Server Error) при использовании .htaccess для принудительной загрузки файла

Ошибка 500 (Internal Server Error) пишет что ошибка описана в error.log я не нашел

Данная ошибка возникла при переносе с хостинга на собственный VDS сайта mcgrp.ru. Ранее была статья для принудительной загрузки файлов при нажатии по ссылке, вот собственно продолжение этой темы.

Ошибка возникает при сборке Апач по умолчанию. Решение этой проблемы подключение доп модуля, аналогично подключению нового сайта, только вместо команды a2ensite пишем в консоли a2enmod headers

headers - модуль как раз отвечающий за эту функцию, список других модулей доступных для подключения можно посмотреть в каталоге mods-available

понедельник, 24 октября 2011 г.

Backup файлов конфигураций оборудования Cisco по расписанию

Так как Cisco очень интересные девайсы и используются во многих серьезных организациях для построения сетей, сетевым администраторам следует предусмотреть способы быстрого восстановления после выхода из строя сети. В случае выхода из строя маршрутизатора или коммутатора, им требуется найти быструю замену для устройств, в случае если проблем с финансированием нет, то скорее всего более менее адекватная дублирующая железка найдеться. Следовательно остается задача организация резервного копирования файлов конфигурации и желательно независимо от желания самого администратора, то есть по расписанию, но есть одна проблема, не на всех версиях ios есть фунции kron.

Проблему решает следующий скрип:

#!/usr/bin/perl
use Net::Telnet ();
use Net::Telnet::Cisco;
use Mail::Sendmail;

my @arrCiscoAddress = ('xxx.yyy.zzz.www',
               'xxx.yyy.zzz.www',
               'xxx.yyy.zzz.www');

    $size = @arrCiscoAddress;
    print "Devices Ciscos: ".$size."\n";

my $ip="";
my $usernameCisco="login";
my $passwordCisco="pass";
my $usernameDlink="";
my $passwordDlink="";
my $passwordDlink2108="";
my $devType=0;   # 0 - нет; 1 - Cisco; 2 - Dlink3026; 3 - 2108
my $Cisco=0;
my $Dlink3026=0;
my $Dlink2108=0;
my $Unknown=0;
my $is_login=0;
my $is_cmd=0;
my $res="";
my $log_fail="";
my $dead="";
my $alive="";
my $log="";
my $log_t="";
my $t;
my $tmp;
my $mu;

# ----------------------------------------------------------------

$txt = "--- Config download script by dfox  ---\n";
print $txt; $log=$log.$txt;
$txt = "Initialization...";
print $txt; $log=$log.$txt;

$txt = "\t\tOK!\n----------------------------\n";
print $txt; $log=$log.$txt;

# ----------------------------------------------------------------
# Пробегаем по списку адресов
# ----------------------------------------------------------------
$b3 = "225";
        for($k=0; $k<=$size-1;$k++)
        {
        $ip=$arrCiscoAddress[$k];

        $txt = "trying $ip...";
        print $txt; $log=$log.$txt;

        $sessionnoc = new Net::Telnet(Timeout => 5, Errmode=>"return");
                $sessionnoc->open(Host=>"server.ru", Port => 23);
       
                $session = new Net::Telnet(Timeout => 5, Errmode=>"return");
                $session->open(Host=>$ip, Port => 23);
       
                $msg=$session->errmsg;
                if(!$msg)
                {
                $txt = "\t\tOK!\n";
                print $txt; $log=$log.$txt;

                        $alive=$alive.$ip."\n";
                         
                #------------------------------------------------------
                        # проверяем что за девайс
                #------------------------------------------------------
                $tmp="";
                $tmp=$session->get;
                $devType=0;
                # Cisco
                if (index($tmp,"")>=0)
                {
                        $devType=1;
                        $txt="Device type - Cisco\n";
                };
                # Dlink3026
                if (index($tmp,"DES-3026")>=0)
                {
                        $devType=2;
                        $txt="Device type - Dlink-3026\n";
                };
                # Unknown
               
                #if ($devType==0)
                #{
                #        ++$Unknown;            
                #        $txt="Device type - Unknown\n";
                #};
                #print $devType;
                #print $txt; $log=$log.$txt;
                #if($devType==0){next;};

                #------------------------------------------------------
               
               
                # логинимся исходя из типа девайса
                #------------------------------------------------------
                $txt="Logging on...   ";
                print $txt; $log=$log.$txt;
                # Cisco
                if ($devType==1)
                {
                        $t=Net::Telnet::Cisco->new(Errmode=>"return",Timeout=>20,Host=>$ip,Input_log=>'tmp_cisco_in.txt',Output_log=>'tmp_cisco_out.txt');
                        if ($t->login($usernameCisco,$passwordCisco)){$is_login=1;} else{$is_login=0;};
                };
               
                # Dlink3026
                if ($devType==2)
                {              
                        $t=Net::Telnet->new(Timeout => 20, Prompt => '/#/', Host=>$ip, Errmode => "return",Input_log=>'tmp_dlink.txt',Output_log=>'tmp_dlink1.txt');                                   
                        if ($t->login($usernameDlink,$passwordDlink)) { $is_login=1; } else {$is_login=0;};
                };
               

                if($is_login>0){$txt="\t\tOK!\n";} else{$log_fail=$log_fail."$ip\n",$txt="\t\tfailed!\n";$log_t=$log_t."$ip\tlogin_failed!!\n";};      
               
                print $txt; $log=$log.$txt;
                if($is_login==0){next;};
                         
                #------------------------------------------------------
                        # делаем дело исходя из типа девайса
                #------------------------------------------------------
                $txt="Uploading cmd...";
                print $txt; $log=$log.$txt;
                $is_cmd=0;     
                # Cisco
                if ($devType==1 && $is_login>0)
                {
                        if(!($t->is_enabled)) {$t->enable($passwordCisco);};
                        $t->cmd('terminal length 0');
            $mu = $k+1;
                        if (@lin=$t->cmd("copy running tftp://ftp.ftp.ftp.ftp/cisco_conf/$mu-".$ip."-conf.txt \n\n\n"))
                        {
                        $t->cmd("copy vlan.dat tftp://ftp.ftp.ftp.ftp/cisco_conf/$mu-".$ip."-vlan.dat\n\n\n");
                        $is_cmd=1;
                        #$res=@lin;
                        ++$Cisco;
                        $t->cmd("logout");
                        $t->close;
                        }
                        else {$is_cmd=0;};
                };

                # Dlink3026
                if ($devType==2 && $is_login>0)
                {                      
                        $t->cmd('dis cli');
                        @lin=$t->cmd("upload config ftp.ftp.ftp.ftp config.dlink.txt");
                        if (@lin)
                        {
                        $is_cmd=1;
                        #$res=@lin;
                        ++$Dlink3026;
                        $t->cmd("logout");
                        $t->close;
                        }
                        else {$is_cmd=0;};
                };
               
                if($is_cmd)
                {
                        $txt="\t\tOK!\n$res\n";
                        $log_t=$log_t."$ip\tOK!\n";
                }
                else
                {
                        $txt="\t\tfailed!\n";
                        $log_t=$log_t."$ip\tfailed!\n";
                }
                print $txt; $log=$log.$txt;                    
                $t->close;
        }
        else
        {
                $txt = "\t\tfailed!\n";
                print $txt; $log=$log.$txt;
                        $dead=$dead.$ip."\n";
                $log_t=$log_t."$ip\ttelnet_failed!!\n";

        }
        # закрываем сессию
        $session->close;
        }


# ----------------------------------------------------------------
# Архивируем и удаляем конфиги. 
# ----------------------------------------------------------------

#system ("/usr/home/scr/scripts/arch_conf");

# ----------------------------------------------------------------
# шлем почту о резалтах
# ----------------------------------------------------------------
%mail =
(
        To      => 'admins@domain',
        From    => 'backups@domain',
        Subject => 'Service report about BACKUP',
        Message => "Backup devices:\nCisco = $Cisco\n*************\n$log_t\n$log\n",
        SMTP    => '**********'
);
       
sendmail(%mail) or die $Mail::Sendmail::error;
print "OK. Log says:\n", $Mail::Sendmail::log; 
# ----------------------------------------------------------------

В этом скрипте можно указать список ip адресов сетевых устройств конфиги с которых надо сливать по расписанию. Есть минус в том что логин пароль хранятся в нем в не зашифрованном виде, но это можно доработать. Бекапятся как cisco так и dlink, к которым есть доступ по телнет, ну и в конце отправляется отчет по email. Также на сервере где будет прописываться скрипт(используется у меня на  Debian 6) нужно подключить использование следующего пакета Net::Telnet. Так как писалось давно уже и не помню как ставить, ну думаю разберетесь. Сами скрипты заливаются на tftp сервер.