За месяц Октябрь, 2008

Эта копия windows не прошла проверку подлинности.

Как убрать сообщение “Эта копия windows не прошла проверку подлинности.“?

windows XP

1. Запускаем редактор реестра (Пуск - Выполнить - regedit - Enter)
2. Находим раздел реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon
3. Удаляем весь раздел WgaLogon (сомневающиеся могут предварительно сделать экспорт этого раздела)
4. Перегружаемся

После перезагрузки сообщение о проверке подлинности не появляется.

ps. http://support.microsoft.com/kb/892130 - все же, наверное, стОит ознакомиться - возможно, используемое программное обеспечение подлинное, однако требуется обновить ключ..
pps. Последствия не проверял, однако, скорее всего, ничего страшного не случится

upd для windows 7 убрать сообщение о проверки подлинности:
решение на форуме Хакера (http://forum.xakep.ru/m_931661/mpage_2/tm.htm)
программка RemoveWAT21 (http://turbobit.net/ux7z3b9jm54b.html)

Спасибо Стасу

Опубликовано Октябрь 28, 2008 | автор: levik  |  Комментарии (40) »

cacti для vps/vds или мониторим виртуальную память и диск

Cacti очень удобен для мониторинга системных ресурсов - изменения в работе сервера в буквальном смысле выделяются на графиках (резкие всплески и падения). И не станет неожиданностью очередное переполнение логами (что очень актуально для vds-vps)

По умолчанию, в Cacti для Localhost настроены следующие графики:
Localhost - Memory Usage
Localhost - Load Average
Localhost - Logged In Users
Localhost - Processes

Если последние три графика отображают действительно то, что нужно (во всяком случае, очень похоже), то первый - ну ни в какие ворота не лезет!!! Все дело в том, что системные команды, используемые для получения информации о памяти (попробуйте в shell-е /*подключившись по SSH*/ ввести команду top и обратите внимание на 3 и 4 строку) получают не совсем верную информацию. :) И поскольку, для графика Memory Usage в Cacti используются данные всего физического сервера (не только vps), то, естественно, получаем не совсем то, что хотелось бы - ну к чему нам горизонталь в 64 Гб оперативки??

Отследить память виртуального сервера можно при помощи небольшой программки. На некоторых VDS она входит в состав предустановленного ПО. Попробуем запустить (для запуска обычно требуются права root)

memory

Если в ответ получили “чистый экран” и что-то изменяющееся и похожее на:

VPS CPU
user: 0.00 nice: 0.00 system: 0.00 idle: 100.00
VPS Memory
total: 256.00MB used: 105.29MB (41.13%) free: 150.71MB (58.87%)

Если же “файл не найден”, то качаем и компилируем (еще хорошо бы проверить какой-нидь хеш..md5 abee82e42576f72cff7146c6b2318f95):

wget http://www.cubedthree.com/projects/openvz/openvzmon.c
md5sum openvzmon.c
gcc -o openvzmon.c

Итак, информацию о загрузке памяти вирутального сервера нашли. Теперь нужно как-то передать её в cacti (точнее, не совсем в cacti, а в rrdtool, но все равно через… одно место). Запуск memory -m выдаст в stdout строку с текущими данными о загрузке памяти. Кстати, можно подредактировать файл openvzmon.c перед компиляцией (не нужно быть великим программистом), чтобы в выводе с параметром -m “убрать лишнее” - тогда на выходе будем получать “голые числа”. Ищем по строке “if(memonly_flag)”. Если же редактировать не хоцца - пробуем запустить
memory -m | awk {’print $4′} | sed -e s/\.[0-9].MB//g | tr -d ‘\012′
- выведет текущее целое/числовое значение памяти в Mb (memory -m | awk {’print $4′} - подставляя вместо $4 что-нибудь рядом, можно получить другие значения). Не оптимально, но работает.

Теперь нужно научить cacti забирать эту информацию:
создаем скрипт vpsmem.sh в каталоге /usr/share/cacti/scripts (можно скопировать diskfree.sh, например) и помещаем туда следующее:
#!/bin/sh
memory -m | awk {'print $4'} | sed -e s/\.[0-9].MB//g | tr -d '\012'

переходим к web-интерфейсу (для более полного понимания, рекомендуется ознакомиться со структурой данных в cati. Несмотря на кажущуюся “запутанность”, она довольно логична и удобна, если количество Devices возрастает):

- Data Input Methods - Add (правый верхний угол). В появившейся форме вносим что-то вроде
Name “VPS/VDS Memory” (как этот Data Input будет обзываться);
Input Type - выбираем “Script/Command”;
Input String “/scripts/vpsmem.sh”
Output Fields - kilobytes
Сохраняем

- Data Templates - Add
Name “VPS/VDS Memory - Free”
Name “|host_description| - VPS/VDS Memory - Free”
Data Input method - выбираем VPS/VDS Memory
Associated RRA’s (я выбрал все кроме первого - по аналогии с шаблоном Linux-Memory usage)
Internal Data Source Name “mem_buffers” (пока воспользуемся шаблоном графика(!) для Linux-Memory - название должно быть аналогичное:))
Секцию Custom Data пока не трогаем- Data Sources - Add (все там же). В форме выбираем наш VPS/VDS-memory (Name) и Localhost - create;

Graph Management - Add
Выбираем шаблон (пока выбрал Linux memory usage) и Localhost - Create
В дополнительных полях выбираем наш Data Source (для начала - в обоих.. красоту будем наводить потом)

Ждем пару минут и ищем график в разделе “graphs”
Если график отображается пустым, а текущие значения - Nan, то скорее всего всё сделано правильно. :)
Если на графике отображаются цифры - опасно. :) значит, cacti-пользователь спокойно запускает утилитку memory, которая берет информацию из файла /proc/vz/vestat, доступ к которому только у root-а.

Итак, надо как-то дать cacti-пользователю возможность запускать наш скрипт с правами / от имени root-а. Если cacti-пользователь, как и рекомендуется - apache, то можно воспользоваться модулем suExec. Еще можно воспользоваться командой sudo. Или же просто, установить для memory флаг “set user ID on execution”. В любом случае, сохранять пароль root в открытом виде не рекомендуется :)

Запускаем процесс от имени root без ввода пароля
редактируем файл /etc/sudoers (можно командой visudo)- биже к концу добавляем строку вида:
apache ALL=NOPASSWD:/bin/memory
(даем пользователю apache возможность запускать скрипт memory)
Еще одна маленькая хитрость. По умолчанию для запуска sudo установлено Defaults requiretty - требуется консоль. На время тестирования можно закомментировать, или изменить…

И ещё… после редактирования любым сторонним редактором рекомендуется проверить на ошибки командой
visudo -c

Устанавливаем set user ID on execution

chmod u+s /bin/memory

Ссылки (?) - Не уверен, что пригодятся все

http://dig7er.livejournal.com/6655.html
http://system-administrators.info/?p=2662
http://forum.openvz.org/index.php?t=msg&goto=2790
http://forum.openvz.org/index.php?t=selmsg&reply_count=0&&frm_id=0&mr=1&start=520

http://www.labradordata.ca/home/13

Опубликовано Октябрь 23, 2008 | автор: levik  |  Комментарии (2) »

Cacti и snmp или мониторим сеть

Про установку и настройку Cacti

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

Итак, настраиваем Cacti для сбора данных по сети

Установка службы SNMP (snmp-агент) на наблюдаемый компьютер (проверяем, установлен ли:)
rpm -q net-snmp
и, если необходимо - ставим
yum install net-snmp

файл конфигурации искать где-то тут:/etc/snmpd.conf, /etc/snmp/snmpd.conf, /usr/local/etc/snmpd/snmpd.conf

! следует обратить внимание, что SNMP предоставляет довольно обширную информацию о системе. При недостаточном внимании к безопасности, эта информация может быть получена злоумышленником и использована “против вас” :)

Неплохая статья о конфигурации SNMP и Nagios
http://www.samag.ru/cgi-bin/go.pl?q=articles;n=11.2004;a=01

Можно воспользоваться утилитой создания файлов конфигурации:
snmpconf -g

или взять за основу готовый файл (изменить белиберду на другую не менее белибердовую - что-то вроде пароля, а адрес - на допустимый для запроса):
sysservices = 79
rocommunity IndhiNue45 localhost
rwcommunity tuI937NB92 localhost

После настройки snmpd.conf запускаем
service snmpd start
И, если все в порядке (проверим командой snmpwalk -c community_name -v 1 localhost), добавляем "автозагрузку"
chkconfig --level 3 smnpd on

пока так

Мониторим сетевые интерфейсы с помощью Cacti

Graph-management  - Add (в правом верхнем углу.. с непривычки можно не найти

Статья дополняется…

настраиваем SNMP в  (Linux/Unix):
Переходим в /etc/snmp/ и правим  snmp.conf до такого: (старый можно сохранить - мало ли)
http://www.opennet.ru/openforum/vsluhforumID1/84222.html
syslocation Test.
syscontact INF <mail@test.ru>
#      sec.name   source          community (password)
com2sec Mybox     localhost          public
com2sec cacti     <ip адрес>     public
com2sec Outside   default            public
#      group.name sec.model  sec.name
group   RWGroup    v2c       Mybox
group   ROGroup    v1        cacti
group   ROGroup    v2c       cacti
group   Others     v2c       Outside
view all     included  .1        80
view system  included  system    fe
#              context sec.model sec.level prefix  read    write  notif
access  ROGroup   ""      any    noauth    exact   all     none   none
access  RWGroup   ""      v2c    noauth    exact   all     all    all
access  Others    ""      v2c    noauth    exact   system  none   all

Опубликовано Октябрь 17, 2008 | автор: levik  |  Нет комментариев »

Virtuemart напильником

Волей судьбы пришлось бороться с Virtuemart’ом. Сразу хочу отметить, что бОльшая часть файлов находится в каталоге administrator/components/com_virtuemart/.

1. меню из каталога товаров стандартное (mod_virtuemart) слишком сильно грузит магазин. Альтернативный вариант решения - меню “ручками”. Т.е. делаем меню, пунктами которого становятся ссылки на категории нашего магазина. Читать целиком »

Опубликовано Октябрь 13, 2008 | автор: levik  |  Комментарий (1) »

Установка Cacti на Linux (Unix)

Cacti  (Кактус)  - cacti.net - официальный сайт.

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

Установка Cacti на Linux сервер

В сети куча инструкций-мануалов (помимо официального) по установке-настройки Cacti

http://system-administrators.info/?p=2619
http://hostinfo.ru/articles/773
http://noty.net/tech/cacti (статья та же, зато ресурс “под рукой”)
http://www.lissyara.su/articles/freebsd/programms/cacti/
http://forum.lissyara.su/viewtopic.php?f=3&t=11256&start=75#p102179
http://belgorod.lug.ru/wiki/index.php/Cacti_-_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0

Отмечу лишь некоторые моменты при установке Cacti, которые могут оказаться полезным мне (и не только).

Не забываем отключить SafeMode
(и до кучи не забываем перезапустить service httpd restart)

Часть проблем можно снять, если запускать poller с правами Root-а. Тут уж хозяин-барин.
Не забываем дать права на файл конфигурации db.php

При запуске poll.php ошибка нет файла/директории
sh: /php: No such file or directory
sh: /rrdtool: No such file or directory

при указании cron не забываем путь к php-интерпретатору - вместо
*/5 * * * * cactiuser php /usr/share/cacti/poller.php > /dev/null 2>&1
пишем что-то вроде
*/5 * * * * cactiuser /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
И не забываем пустую строчку в конце файла crontab

cacti не рисует графики

Если Cacti не рисует графики даже для Localhost.. да и вообще, если с ним чего не ладится - первым делом смотрим в логи Apache (могут быть тут: /etc/httpd/logs/error_log или тут : /var/log/httpd/error_log - чтоб наверняка - посмотреть в httpd.conf)

sh: /rrdtool: No such file or directory
следует настроить путь к rrdtool - в web-интерфейсе вкладка “console”, в меню - Configuration - Settings- нижняя вкладка paths - отсутствующие файлы выделяются красным

Cacti - settings - general исправляем версию RRDtool (1.2.x, по умолчанию 1.0.x). Если реальная версия выше, то есть шанс, что работать будет (проверялось для версии 1.3 работало)

ERROR: opening ‘/var/www/html/cacti/rra/yourfile: No such file or directory
sh: line 14: /var/www/html/cacti/log/rrd.log: Permission denied -

Cacti отображает пустые графики

Похоже, проблема в “исходных” данных для cacti (а точнее для RRD) - если скрипт ничего не нашел, то cacti ничего и не покажет. Будем разбираться, почему “нет данных”

Если в логах (или при запуске вручную  “#/usr/bin/php /usr/share/cacti/poller.php” (лучше от cactiuser)
su cactiuser
/usr/bin/php /usr/share/cacti/poller.php
появляется сообщение про 300 секунд - значит или не запускается cron или… не пишет данные скрипт. Кстати, на момент отладки можно убрать из cron-а “> /dev/null 2>&1″ и добавить чуть выше MAILTO=my@email-addres.tld

POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval!  The Poller Interval is ‘300′ seconds, with a maximum of a ‘300′ second Cron, but 637 seconds have passed since the last poll!

Если удалось добиться отображения графиков для Localhost - полдела сделано. :)
Осталось ещё полтора!

Опубликовано Октябрь 9, 2008 | автор: levik  |  Комментарий (1) »

Как изменить разрешение экрана (Win32 API)

В свое время вставала задача программно изменить разрешение экрана монитора в windows.

Для изменения разрешения экрана есть специальная функция WIN32 API с именем ChangeDisplaySettings в неё необходимо передать указатель на структуру типа DEVMODE, где указывается желаемое разрешение. Естественно, что Ваш монитор и видеокарта должны это разрешение поддерживать.

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

// Screen.cpp : Defines the entry point for the console application.
//
#include “stdafx.h”
#include “windows.h”
void main(){
DEVMODE dm;
memset(&dm,0,sizeof(DEVMODE));
dm.dmSize=sizeof(DEVMODE);
dm.dmPelsWidth=800;
dm.dmPelsHeight=600;    dm.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;    ChangeDisplaySettings(&dm,CDS_UPDATEREGISTRY);
}

form.top=screen.height/2-form.height/2
form.left=screen.width/2-form.width/2

// Еще один вариант получения информации о мониторе

procedure TForm1.Button1Click(Sender: TObject);
Var    TC,BPP,CP,VR,x:  integer; x2:real;
begin
BPP:=GetDeviceCaps(Form1.Canvas.Handle,BITSPIXEL);
CP:=GetDeviceCaps(Form1.Canvas.Handle,PLANES);
x2:=intpower(2,BPP);
x2:=intpower(x2,CP); TC:=round(x2);
Label1.Caption:=’Бит на пиксел: ‘+IntToStr(BPP);
if (TC<3) then  Label2.Caption:=’Монохромный дисплей ‘ else
Label2.Caption:=’Число цветов: ‘+IntToStr(TC);
end;

//
VR:=GetDeviceCaps(Form1.Canvas.Handle,VREFRESH);

// непосредственно.. Изменить разрешение монитора
procedure Display( X, Y : Word );
var
dm : TDEVMODE;
begin
ZeroMemory( @dm, sizeof( TDEVMODE ) );
dm.dmSize := sizeof ( TDEVMODE );
dm.dmPelsWidth := X;
dm.dmPelsHeight := Y;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings( dm, 0 );
end;
// установить разрешение монитора

procedure SetScreen(BPP: byte; width, height, FR: integer);
var
D: TDevMode;
h: HWND;
begin
h:=0;
D.dmDeviceName:=’DISPLAY’;
D.dmBitsPerPel:=BPP;
D.dmDisplayFrequency:=FR;
D.dmPelsWidth:=Width;
D.dmPelsHeight:=Height;
D.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+DM_DISPLAYFREQUENCY;
D.dmSize:=SizeOf(D);
if ChangeDisplaySettings(D,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
ChangeDisplaySettings(D,CDS_UPDATEREGISTRY)
else
MessageBox(h,’Этот режим не поддерживается видеокартой.’,
‘Ошибка изменения режима!’, MB_ICONWarning);
end;

Вызывается так: SetScreen(глубина цвета, разрешение по горизонтали, разрешение по вертикали, частота в герцах);
Например:
SetScreen(16,800,600,80); {16 бит цвет, 800х600, 80Гц.}

* Найдено на форумах, опробовано и сведено воедино давненько. Просьба отписаться, если работает. :)

Опубликовано Октябрь 5, 2008 | автор: levik  |  Комментарии (2) »