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





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

среда, 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 не зависимо от того какой редактор стоит по умолчанию.