Perl для системного администрирования

Сравнение поддерживаемых


Теперь рассмотрим один из способов обращения с очень большими наборами данных. Вам может потребоваться загрузить данные в более сложную базу данных SQL (коммерческую или нет) и запрашивать из нее информацию, используя SQL. Тем, кто не знаком с SQL, я рекомендую ознакомиться с приложением D «Пятнадцатиминутное руководство по SQL», перед тем как смотреть на этот пример.

Заполнить базу данных можно так:

use ОВГ

use Sys .

$db = "drib":

ищем месгоголожс.чие iasr (-х '/bin/last" and $]astex = "/от/ lasc")

(-x "/usr/ucb/last" ana Slastex = '/азг7ьсо.' ;ast"):

подсоединяемся к базе даинь.х Sybase

переходим иа базу данных, которую мы будем использовать

$dbh->do("use $db") or die "Невозможно перейти к $db: ".$dbh->errstr."\n";

в

создаем таблицу iastinfo, если ее еще не существует unless ($dbh->selectrow_array(

q{SELECT name from sysobjects WHERE name="lastinfo"})){

$dbh->do(q{create table Iastinfo (username char(8),

localhost char(40), otherhost varchar(75), when char(18))}) or

die "Невозможно создать таблицу Iastinfo: ".$dbh->errstr."\n"; }

Sthishost = Shostnanie:

$sth = $dbh->prepare(



qq{INSERT INTO lastinfo(username,localhost,otherhost.when) VALUES (?, 'Sthishosf, ?, ?)}) or die

"Невозможно подготовить запрос insert: ". Sdrj.h-^errstr , "\n":

open(LAST."Slastexj") or die "Невозможно выполни:» программу Slastex

while (<LAST>){

next if /"reboot\.s/ or /'shutdown'.s/ or

/"ftp';S/ or / "ivt-rpv.s/:

$wher> = $!non " ".Scare." ". $tme:

Sst1-->sxec-J'te;$j3e',SbcЈt.$/.ter^ close(LAST);

$c)bh->di scanned;

Теперь можно использовать базу данных по назначению. Вот набор простеньких SQL-запросов, которые легко можно выполнить из Perl при помощи интерфейсов DBI или ODBC, о которых мы говорили в главе 7 «Администрирование баз данных SQL»:

-- сколько всего записей в таблице

9 select count (*) from lastinfo;

10068

-- сколько пользователей было зарегистрировано

9 select count (distinct username) from lastinfo;

237

-- сколько различных узлов устанавливали соединение с нашими машинами

select count (distinct otherhost) from lastinfo;

1000

-- на каких локальных машинах регистрировался пользователь

"dr.b"? select distinct localhost from lastinfo where username = "dnb": localhost

hostl host2

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

Анализ журналов - бесконечная тема для разговора. К счастью, 1 глава снабдила вас кое-какими инструментами и некоторым вдохновением.



Содержание раздела