Salı, Aralık 21, 2010

Linux'ta ayrıntılı donanım raporu

Bu yazıyı aslında "acaba ne kullanıyorum?" başlıklı makale altına yazacaktım. Ancak o kadar sevdim ki, "bu konu yeni bir başlığı hak ediyor" dedim.
Aslında konunun özü şu; elimizde bir sunucu var (tabi ki linux) çalışmakta, kapatamıyoruz ve ayrıntılı donanım bilgisine ihtiyacımız var. Ama öyle disk kapasitesi, ram kapasitesi filan bizi kesmiyor. Daha çok bilgi lazım. Anakart bilgisi, boş ram slotları vs.
Aslında pci için çok güzel bir komut var;
#lspci: Bize tüm pci portu üzerindeki donanım hakkında bilgi veriyor.
#lsusb: komutu da aynısının usb versiyonu. Ancak bir de şunu ekliyoruz; yanına: dmidecode.

Komutun kullanımı da çok kolay sadece;

#dmidecode : tüm raporu önümüze seriyor. Parametreler kullanarak özelleştirmek mümkün; Örneğin BIOS parametresi bios bilgilerini döküyor;

# dmidecode --type BIOS

[root@asterix ~]# dmidecode --type BIOS
# dmidecode 2.10
SMBIOS 2.3 present.

Handle 0x0000, DMI type 0, 19 bytes
BIOS Information
Vendor: IBM
Version: -[NRE122AUS-1.02]-
Release Date: 11/23/2004
Address: 0xF0980
Runtime Size: 63104 bytes
ROM Size: 4096 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
I2O boot is supported
LS-120 boot is supported

Handle 0x001F, DMI type 13, 22 bytes
BIOS Language Information
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1


Ayrıca farklı parametrelerle de sonuc ulaşılabilir;

[root@asterix ~]# dmidecode -t 1
# dmidecode 2.10
SMBIOS 2.3 present.

Handle 0x0001, DMI type 1, 25 bytes
System Information
Manufacturer: IBM
Product Name: eserver xSeries 236 -[88412AG]-
Version: Not Specified
Serial Number: KDTYX47
UUID: 32037214-041E-B211-89A9-A080DAF98344
Wake-up Type: Power Switch

İşte parametrelerin listesi;


TypeInformation
0
1System
2Base Board
3Chassis
4Processor
5Memory Controller
6Memory Module
7Cache
8Port Connector
9System Slots
10On Board Devices
11OEM Strings
12System Configuration Options
13BIOS Language
14Group Associations
15System Event Log
16Physical Memory Array
17Memory Device
1832-bit Memory Error
19Memory Array Mapped Address
20Memory Device Mapped Address
21Built-in Pointing Device
22Portable Battery
23System Reset
24Hardware Security
25System Power Controls
26Voltage Probe
27Cooling Device
28Temperature Probe
29Electrical Current Probe
30Out-of-band Remote Access
31Boot Integrity Services
32System Boot
3364-bit Memory Error
34Management Device
35Management Device Component
36Management Device Threshold Data
37Memory Channel
38IPMI Device
39Power Supply

Ayrtıntılı bilgi için kaynağım;

Salı, Kasım 09, 2010

Linux'ta dosya içindeki metne göre arayıp silmek

for dosya in $(find /hangi/klasorde/aranacaksa -type f -name "*" | xargs grep -l 'Aranan metin');

do

echo $dosya
rm $dosya

done
Bir klasörde binlerce dosya var. (Bir mail bombasının ardından birbirine karışmış gerçek mailler ile bomba mailler örneğin :) ) Aralarından içindeki bir metne göre ayıklayıp o dosyaları silmek istiyoruz. Buyrun size basit bir script.

find /hangi/klasorde/aranacaksa -type f -name "*" | xargs grep -l 'Aranan metin'

find komutu ile hangi klasörde aradığımızı, -type paramatresi ile f (file) dosya olduğunu, ayrıca dosya adı için de * ile tüm dosyaları belirttik. (* terine *.php gibi sadece belli unantılar vs. seçilebilir. Arama işlemini kısaltır bu sayede) Sonra xargs ile tüm dosya içeriklerini tek tek kontrol ettik ki içindeki metini grep ile ayıklayalım.
Sonrası dosyaları tek tek döngüye alıp sırayla silmek. Bir de silinen dosyaları ekranda görüyoruz ki yanlışlık olmasın :)

Salı, Ağustos 10, 2010

ServerGuide v8.31 Windows tabanlı olmuş

IBM xServer'ların kurulumunu yapabilmek için kullanılan ServerGuide yazılımı yeni versiyonu v8.31 Windows tabanlı olmuş. Eski sürümler "Linux loading" diyerek açılırken bu sefer "Windows dosyaları kopyalanıyor" diye başlıyor ve sadece Windows Server 2003 veya Windows Server 2008 kurulumunda kulanılabiliyor. Gerçi içindeki ServerRAID ile RAID ayarlarınızı yapıp sonra linux'a devam edebilirsiniz. Çoğu linux dağıtımı zaten IBM donanımı sorunsuz tanıyor.
(Ayrıca bkz: IBM xServer'a işletim sistemi kurmak)

Cuma, Mart 19, 2010

DAR Scriptler

Full Sistem Yedeği Almak için DAR Script:

#!/bin/bash

###########################
# Olusturulma tarihi: 19 Mart 2010 .
# Emre KARAOGLU ~ Sistem yöneticisi
###########################

emailRcpt="mailiniz@mail.com"

# Mail ile gönderilecek yedek raporu dosyamızı oluşturuyoruz.
/bin/touch /tmp/dar_backup.msj

FILENAME=`date +%d.%b.%Y.%A`.fullbackup

BASLA=`date`
STARTT=`date +%s`

/bin/echo -e "#### Full sistem backup islemi #### " > /tmp/dar_backup.msj

#Harici diskimizi kullanacağımız alanı umount/mount işlemi hazırlıyoruz.
#Bazı harici diskler uyku moduna girdikleri için uyandırılamıyabiliyor.
#Örneğin Seagate'in bazı modelleri :)

umount /mnt/bckdsk
mount /dev/sdc1 /mnt/bckdsk

/bin/echo -e "#### umount/mount islemi yapildi #### " >> /tmp/dar_backup.msj

dar -c /mnt/bckdsk/FULL_SISTEM_BCK/FILESERVER/FULL.SISTEM.BACKUP -R / -P proc -P dev -P mnt -P media -P tmp -D -v -y9

ENDT=`date +%s`
BITIR=`date`

ELAPSEDT=$((ENDT-STARTT))


/bin/echo -e "\n\n *** Yedek alma baslangic: $BASLA ... *** \n" >> /tmp/dar_backup.msj
/bin/echo -e "\n\n *** Yedek alma bitis: $BITIR ... *** \n" >> /tmp/dar_backup.msj
/bin/echo -e "\n\n *** Yedek alma islemi toplam: $ELAPSEDT saniye surdu... *** \n" >> /tmp/dar_backup.msj

/bin/cat /tmp/dar_backup.msj | /bin/mail -s " FILE Server Backup Raporu" $emailRcpt

exit 0

Incremental Backup için DAR Script

#!/bin/bash

###########################
# Olusturulma tarihi: 19 Mart 2010
# Emre KARAOGLU ~ Sistem yöneticisi
###########################

emailRcpt="mailiniz@mail.com"

DATE=`date +%d`
Month=`date +%b`
Year=`date +%Y`

FILENAME=$DATE.$Month.$Year.incbackup


/bin/touch /tmp/dar_inc_backup.msj

YESTERDAY=`expr $DATE - 1`
OLDFILENAME=$YESTERDAY.$Month.$Year.incbackup

BASLA=`date`
STARTT=`date +%s`

/bin/echo -e "#### Sistem Inc. backup islemi #### " > /tmp/dar_inc_backup.msj

umount /mnt/bckdsk
mount /dev/sdc1 /mnt/bckdsk

/bin/echo -e "#### umount/mount islemi yapildi #### " >> /tmp/dar_inc_backup.msj

dar -c /mnt/bckdsk/INC_SYSTEM_BCK/FILESERVER/$FILENAME -A /mnt/bckdsk/INC_SYSTEM_BCK/FILESERVER/$OLDFILENAME -R / -P proc -P dev -P mnt -P media -P tmp -D -v -y9


ENDT=`date +%s`
BITIR=`date`

ELAPSEDT=$((ENDT-STARTT))


/bin/echo -e "\n\n *** Yedek alma baslangic: $BASLA ... *** \n" >> /tmp/dar_inc_backup.msj
/bin/echo -e "\n\n *** Yedek alma bitis: $BITIR ... *** \n" >> /tmp/dar_inc_backup.msj
/bin/echo -e "\n\n *** Yedek alma islemi toplam: $ELAPSEDT saniye surdu... *** \n" >> /tmp/dar_inc_backup.msj

/bin/cat /tmp/dar_inc_backup.msj | /bin/mail -s " FILE Server Fark Backup Raporu" $emailRcpt

exit 0

Differantial Backup için DAR Scripti


#!/bin/bash

###########################
# Olusturulma tarihi: 19 Mart 2010
# Emre KARAOGLU ~ Sistem yöneticisi
###########################

emailRcpt="maliniz@mail.com"

DATE=`date +%d`
Month=`date +%b`
Year=`date +%Y`


FILENAME=$DATE.$Month.$Year.incbackup


/bin/touch /tmp/dar_inc_backup.msj

YESTERDAY=`expr $DATE - 1`
OLDFILENAME=$YESTERDAY.$Month.$Year.incbackup


BASLA=`date`
STARTT=`date +%s`

/bin/echo -e "#### Sistem Dif. backup islemi #### " > /tmp/dar_inc_backup.msj

umount /mnt/bckdsk
mount /dev/sdc1 /mnt/bckdsk

/bin/echo -e "#### umount/mount islemi yapildi #### " >> /tmp/dar_inc_backup.msj

dar -c /mnt/bckdsk/DIF_SISTEM_BCK/FILESERVER/$FILENAME -A /mnt/bckdsk/FULL_SISTEM_BCK/FILESERVER/FULL.SISTEM.BACKUP -R / -P proc -P dev -P mnt -P media -P tmp -D -v -y9


ENDT=`date +%s`
BITIR=`date`

ELAPSEDT=$((ENDT-STARTT))


/bin/echo -e "\n\n *** Yedek alma baslangic: $BASLA ... *** \n" >> /tmp/dar_inc_backup.msj
/bin/echo -e "\n\n *** Yedek alma bitis: $BITIR ... *** \n" >> /tmp/dar_inc_backup.msj
/bin/echo -e "\n\n *** Yedek alma islemi toplam: $ELAPSEDT saniye surdu... *** \n" >> /tmp/dar_inc_backup.msj

/bin/cat /tmp/dar_inc_backup.msj | /bin/mail -s " FILE Server Fark Backup Raporu" $emailRcpt

exit 0
Bu Scriptler sadece örnek amaçlıdır. Fikir vermesini düşündüm sadece. Çok daha geliştirilebilir. Kullanımda dikkat edilmesi gereken noktalardan biri de, Eğer Inc. Backup kullanılması tercih edilecekse Full Backup alındıktan sonra 1 kez Dif backup alınmalı ki 1 önceki güne ait bir fark dosyası oluşturulabilmiş olsun.
İyi eğlenceler.

Çarşamba, Mart 17, 2010

DAR (Disk Arshive)

Yedekleme başlı başna bir iştir aslında. Hatta başlı başına bir sorundur da denebilir. Pek çok çözüm var yedekleme için. rsync, tar gibi programlar en çok kullanılanları. Fakat istediğim şey bir backup dosyasını kendine referans alması ve ona göre sadece değişen/yeni eklenen dosyaların yedeğini alması. (rsync bu sorunu çözüyor ama hep aynı klasöre aldığı için dosyaların önceki versiyonlarına ulaşılamıyor. En azından ben çözümünü bulamadım rsync ile :) )
Her neyse bu konuda ciddi anlamda ihtiyaç görecek olan dar (Disk Archive) uygulaması. (http://dar.linux.free.fr/)
Yedeklemeden bahserken bir kaç temel konuyu bahsetmezsek olmaz.

Full Backup (Tam Yedek):
Sistemin (veya belirtilen klasörün) tamamının yedeği

Incremental Backup (Artımlı yedek):
Tam yedeğin ardından, sadece değişen, eklenen dosyalarının yedeğinin alınması işlemi. Artımlı yedekte bir önceki artımlı yedek referans alınarak yapıldığı için dosya boyutları küçüktür. Fakat artımlı yedeklerin geri dönüşünde tüm artımlı yedeklerden tek tek dönülmelidir.
Pazartesi --> Full
Salı --> Inc (pazartesiden beri değişenler)
Çarş --> Inc (Salıdan beri değişenler)
Perş --> Inc (Çarşambadan beri değişenler)
Cuma --> Inc (Perşembeden beri değişenler)

Differantial Backup (Fark Yedek): Fark yedekler de aslında artımlı yedek gibidir. Sadece değişen/eklenen dosyaların yedeğini alır. Fakat her seferinde kendisine tam yedeği referans aldığından bir önceki fark yedek içeriği bir sonraki fark yedek dosyasında da vardır. Dosya boyutu büyüktür. Fakat sistem geri dönüşü çok kolaydır. Sadece tam yedek ve en son fark yedek yeterli olacaktır.
Pazartesi --> Full
Salı --> Dif (pazartesiden beri değişenler)
Çarş --> Dif (pazartesiden beri değişenler)
Perş --> Dif (pazartesiden beri değişenler)
Cuma --> Dif (pazartesiden beri değişenler)

Şimdi gelelim uygulamamıza. DAR uygulamasını apt veya yum aracılığı veya sitesinden indirerek kuruyoruz. (Windows versiyonu da olduğunu belirtmem gerek. Denemedim ama)

DAR ile Yedek Almak:
dar -c yedekdosyasi -R /yedek_alinacak_klasor

BU komut ile en basit kullanımıyla dar sayesinde yedek almış oluyoruz. yedekdosyasi.1.dar adında bir dosya oluşturacak.
Dar için tabi ki bir çok parametre bulunuyor.
-P yok_sayilacak_klasor : Bu parametre ile yedek_alincak_klasör'deki belirttiğimiz klasörler yedeklenmeyecektir
-s 700 MB: Her bir yedek dosyasını 700 MB'lık paketler haline getirir.
-X "*.log" : Yedeklenmesi istenmeyen dosyalar belirtilir.
-y[seviye] : Yedek dosyasında bzip ile sıkıştırma yapar. [seviye] kısmına 0-9 arası bir sayı gelir.


Örnek:

dar -c full_sistem_yedek -R / -P opt -P tmp -P mnt -X "*.log" -D -v -y9

Bu örnekte / dizininin yedeği alınıyor. opt, tmp, mnt dizinleri yedeklenmiyor, fakat yedek dosyasının içine boşklasör olarak oluşturuluyor (-D), ekran çıktısı eş zamanlı veriliyor (-v) ayrıca bzip sıkıştırması 9. seviyede yapılıyor (y9)

Dar ile Dosya Kurtarmak:

Dar ile yedek alınan bir dosyadan geri dönüş için:
dar -R kurtarilan_dosyaların_koyulacagı_dizin -x yedek_dosyası -g kurtarmak_istediginiz_dosya
Bir örnek verelim:
dar -R /root -x full_sistem_yedek -v -g /root/ozel.dosya.txt
Burada root dizini altına, ozel.dosya.txt dosyası aktarılacak. Dikkat edeceğimiz nokta, -x full_sistem_yedek parametresinde 1.dar gibi sayı ve uzantı yazmıyoruz. Çünkü aradığımız dosya hangi parçada bilmiyoruz. Dar kendisi araştırıp hangi parçada ise onu kullanıyor.

Dar ile Fark Yedek Almak
İşte dar'ı çok sevmeme sebep olan özelliği. Fark yedekler. Fark yedek kullanımı:
dar -c fark_yedek_dosyası -A full_yedek_dosyası -R yedeklenecek_dizin
Örnek:
dar -c fark_yedek -A full_sistem_yedek -R / -P opt -P tmp -v -D -y9
Bu örnekte, full_sistem_yedek dosyasına bakılarak sadece değişen/eklenen dosyalar fark_yedek dosyası içine kaydedilecek.

Dar hakkında daha fazla bilgi için sitesini ziyaret edin. MAN sevenler için (http://dar.linux.free.fr/doc/man/dar.html)

Bunlarla ilgili bir kaç tane de bash script yazdım. Onları da bir sonraki yazıda paylaşayım :)

Perşembe, Mart 11, 2010

Acaba ne kullanıyorum.

Geçtiniz bir Linux makinanın başına. Çalışan bir sistem. Ama acaba hangisi? yum mu apt mı? Acaba debian forumlarına mı bakmalı yoksa redhat mi? İyisi mi biraz sistemi tanıyalım :)
- Kernel versiyon:
# uname -a
- hangi linux dağıtımı
# cat /etc/issue
- Daha ayrıntılı
#cat /proc/version
- Acaba usb portlarım nasıl? (1.1 mi yoksa 2.0)
#cat /proc/bus/usb/devices
- Acaba ..... dizinim (örneğin /home) ne kadar kullanılıyor?
# du -hcs /home

[Devamı gelecek, gelmeli :) ]