Adam Kucza » freeBSD

Adam Kucza

Zawsze jesteś na właściwym miejscu, o właściwym czasie, zajmując się właściwą sprawą.

blogger czy logger?

Archiwum: 'freeBSD' Kategorie


Przydatne narzędzia kolejek postfix’a

Autor: Adam Kucza o 25. wrzesień 2008

Czasami bywają krytyczne sytuacje w kolejkami postfix’a. Pomocne są wtedy narzędzia będące elementami pakietu (portu) postfix’a. Nie trzeba więc niczego więcej instalować.

Narzędzia kolejek:

postqueue -p
wyświetla listę wszystkich wiadomości w kolejce

postsuper -d (Queue ID)
pozwala usuwać wiadomość z kolejki o danym ID

postsuper -d ALL
usuwa wszystkie wiadomości z kolejki

postsuper -h (Queue ID)
zatrzymanie wiadomośic w kolejce (kolejka hold)

postsuper -H (Queue ID)
przeniesienie wiadomości z powrotem do menadżera kolejek

postsuper -r ALL
zwraca wiadomości z powrotem do kolejki, wiadomości te otrzymują nowe identyfikatory i dodatkowy nagłówek Received

postcat -q
wyświetlanie zawartości pliku kolejki

postqueue -f
wypychanie wiadomości

postqueue -s domena.com
wypychanie wiadomości domeny domena.com

mailq -q /identyczne do sendmail -bp/
lista wiadomości w kolejce do obsłużenia

Bieżący podgląd zawartości loga postfix’a zapewnia polecenie:

tail -f /var/log/maillog

Ostatnie dwa polecenia są bardzo pomocne, jeśli chcemy ręcznie przyspieszyć obsługę kolejek (mailq -q) i jednocześnie przyjrzeć się czy faktycznie postfix coś z nimi robi (tail -f /var/log/maillog).

W sumie o takie czynności zawsze można poprosić administratora.

» wpis obejrzano 3123 razy przez 821 internautów «

Napisany w Postfix, Systemy, freeBSD | Brak komentarzy »

Autoloader i freeBSD

Autor: Adam Kucza o 29. marzec 2007

Tym razem udostępniam (dla potrzebujących) skrypt (również mojego autorstwa) napisany w php, pomagający w operacjach na autoloaderze zamontowanym w systemie freeBSD.

Jak to działa? Skrypt potrzebuje max 2 parametrów wywołania. 1 - opcja, 2 - numer slotu autoloadera. To dopiero v1.0, więc jeszcze będą zmiany.

Generalnie uruchamiamy skrypt w taki sposób:

./backup_multi.php [option] [slot]

Przy czym opcjami mogą być:

backup - tworzy kopię na kasetce (cartridge) oznaczonej jako dany dzień tygodnia (albo z podaniem numeru kasetki)
list - wyświetla zawartość załadowanej lub wskazanej kasetki z taśmą (cartridge)
status - wyświetla status autoloadera
load - ładuje kasetkę z podanego slotu
unload - odkłada kasetkę do slotu, z którego została wcześniej pobrana
rewind - przewijanie taśmy do początku
erase - całkowite kasowanie taśmy

Skrypt ten ma następującą politykę tworzenia kopii zapasowych na tasiemkach w oparciu na istniejącym urzadzeniu o nazwie autoloader:

slot 1 - poniedziałek
slot 2 - wtorek
slot 3 - środa
slot 4 - czwartek
slot 5 - piątek
slot 6 - ostatni dzień co drugiego tygodnia (jeszcze nie działa)
slot 7 - ostatni dzień miesiąca (jeszcze nie działa)
slot 8 - ostatni dzień co trzeciego miesiąca (jeszcze nie działa)

Oto kod:

#! /usr/local/bin/php -f
# by Adam Kucza (c) 2007
<?
# the backup policy of this script
# slot 1 - monday
# slot 2 - tuesday
# slot 3 - wednesday
# slot 4 - thursday
# slot 5 - friday
# slot 6 - last day of every 2nd week
# slot 7 - last day of the month
# slot 8 - last day of every 3rd month

#settings
define (”DATE”, date(”Y-m-d_H.i.s”));
define (”DAY_OF_WEEK”, date(”N”));
define (”LOGFILE”, „/var/log/backup/backup_”.DATE.”.log”);
define (”TAPEDRIVE”, „-f /dev/sa0″);
define (”CHANGER”, „/dev/pass1″);
define (”TAR”, „/usr/bin/tar”);
define (”MT”, „/usr/bin/mt”);
define (”MTX”, „/usr/local/sbin/mtx”);
define (”MAX_SLOTS”, „8″);
define (”BACKUPLIST”, „/fox/ustawienia/backup/backup_multi.lst”);

$x = $_SERVER["argv"];

//print_r($x);

if (count($x)==2 || count($x)==3)
{
$z = „”;

switch ($x[1])
{
case „status”:
# show changer status
$z = MTX.” -f „.CHANGER.” status”;
system($z);
break;

case „load”:
# load cartridge from slot numbered as current day of the week
# mtx -f /dev/pass1 load 1

// firstly free device -> unload cartridge (for sure & safety)
$z = $x[0].” unload”;
system ($z);

//secondly load cartridge (by default or by specified)
$z = MTX.” -f „.CHANGER.” load „;
if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS) $z .= $x[2]; else $z .= DAY_OF_WEEK;
system($z);
break;

case "unload":
# unload cartridge into slot
# mtx -f /dev/pass1 unload
$z = MTX." -f ".CHANGER." unload";
system($z);
break;

case "rewind":
# rewind the cartridge
$z = MT." ".TAPEDRIVE." rewind";
system($z);
break;

case "erase":
# erase the cartridge
$z = MT." ".TAPEDRIVE." erase";
system($z);
break;

case "list":
# list of contents of cartridge
# tar -f /dev/sa0 -tv

// if there is a slot
if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS)
{
// replace the cartridge
$z = $x[0]." unload";
system ($z);
$z = MTX." -f ".CHANGER." load ".$x[2];
system($z);
}
$z = TAR." -tv ".TAPEDRIVE;
system($z);
break;

case "backup":
# make backup on cartridge
# tar -f /dev/sa0 -cv /etc

// reload the cartridge from correct slot
$z = MTX." -f ".CHANGER." load ";
if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS) $z .= $x[2]; else $z .= DAY_OF_WEEK;
system($z);

# backup data
echo "\nstarting backup...\n";
$z = TAR." -cv ".TAPEDRIVE." -T ".BACKUPLIST;
system($z);

# put list of contents into logfile
$z = $x[0]." list >> „.LOGFILE;
system($z);
break;

} //end of switch

echo $z;

}
else
{
echo „\nSimple AutoLoader BackUp Script v.1.0 by Adam Kucza (c) 2007\n\n”;

echo „\nThis script operates on autoloader existing in /dev location due to following backup policy:\n”;
echo ” slot 1 - monday\n”;
echo ” slot 2 - tuesday\n”;
echo ” slot 3 - wednesday\n”;
echo ” slot 4 - thursday\n”;
echo ” slot 5 - friday\n”;
echo ” slot 6 - last day of every 2nd week\n”;
echo ” slot 7 - last day of the month\n”;
echo ” slot 8 - last day of every 3rd month\n”;

echo „\nusage:\n”;
echo ” „.$x[0].” [option] [slot]\n”;
echo „\navailable options:\n”;
echo ” backup - make backup on the cartridge from slot due to day of week (by default)\n”;
echo ” list - display the list of contents on loaded cartridge\n”;
echo ” status - display autoloader status\n”;
echo ” load - load cartridge from slot (1-8) numbered as day of the week (by default)\n”;
echo ” unload - unload the cartridge into last used slot\n”;
echo ” rewind - rewind the cartridge (if any) to begin\n”;
echo ” erase - erase entire cartridge (if any, it takes time)\n”;
echo „\nexamples:\n”;
echo ” „.$x[0].” status\t\t- display status\n”;
echo ” „.$x[0].” backup [slot]\t- make backup (into [slot] if specified)\n”;
echo ” „.$x[0].” load [slot]\t- load cartridge (into [slot] - if specified)\n”;
echo ” „.$x[0].” unload\t\t- unload cartridge\n”;

}
echo „\n”;
?>

» wpis obejrzano 18126 razy przez 2539 internautów «

Napisany w Systemy, autoloader, freeBSD, mt | 1 Komentarz »

rsync Twoim przyjacielem

Autor: Adam Kucza o 9. luty 2007

Oddaję do użytku skrypt mojego autorstwa napisany w php, wykonujący kopię synchronizacyjną plików znajdujących się w katalogu podanym jako pierwszy parametr wywołania.

#! /usr/local/bin/php -f
# by Adam Kucza (c) 2007
<?
$x = $_SERVER["argv"];

if (count($x)==4)
{
//print_r($x);

$rsync = „/usr/local/bin/rsync”;

$srv = $x[1];
$src = $x[2];
$dst = $x[3];

$t = getdate();
//print_r($t);
if (strlen($t['mon'])<10) $t['mon']="0".$t['mon'];
if (strlen($t['mday'])<10) $t['mday']="0".$t['mday'];
$l = "/var/log/rsync/".$x[1]."_".$t['year']."-".$t['mon']."-".$t['mday']."_".$t['hours'].".".$t['minutes'].".".$t['seconds'];

$o = "";
$o .= "-a ";
$o .= "-v ";
$o .= "-z ";
$o .= "–delete ";
$o .= "–ignore-errors ";
$o .= "–force ";
$o .= "–stats ";
$o .= "–log-file=".$l." ";
//$o .= "–dry-run ";
//$o .= "–modify-window=1 ";
//$o .= "–iconv=UTF-8,CP1251 ";
//$o .= "–blocking-io ";
//$o .= "–delete-after ";
//$o .= "–delete-before ";
//$o .= "–progress ";
//$o .= "–delete-excluded ";
//$o .= "–exclude-from=$EXCLUDES ";
//$o .= "–backup –backup-dir=/$BACKUPDIR -a ";

$z = $rsync." ".$o." ".$src." ".$srv."::".$dst;
echo $z."\n";

system($z);

}
else
{
echo "\nusage: ".$x[0]." server_address source_folder destination_module\n";
echo "\nexample: ".$x[0]." 192.168.1.100 /home/user/ backup_module\n";
}
echo "\n";
?>

Przykład jego wywołania wygląda np. tak:

./rsync.php /home/users/ backup_server

enjoy! :)

» wpis obejrzano 6947 razy przez 1960 internautów «

Napisany w Systemy, freeBSD, rsync | 1 Komentarz »