14 Eylül 2009

LAMP Server Kurulumu (Debian, Ubuntu)

Linux, Apache, MySql, PHP dörtlüsü ve saz arkadaşları PhpMyAdmin kurulumları için konsol komutu:

# apt-get install apache2 php5 libapache2-mod-php5 php5-gd mysql-server mysql-client php5-mysql phpmyadmin


MySql root şifresi oluşturmak için;

# mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('new-password') WHERE user='root';
mysql> FLUSH PRIVILEGES;

19 Ağustos 2009

Ubuntu'da Turkcell ile VINN

VINN'ı USB girişine taktığımda Ubuntu 3G modemi hemen tanıdı, bağlantı
sihirbazı çıktı. Adımları ilerleyerek Ubuntu gerekli ayarları yaptı.
Fakat bağlanamadım. İnternetten okuduğum bilgilere göre PIN ve APN
değerlerine baktım. APN'nin "internet" olması gerektiğini biliyordum ve
Ubuntu zaten bu değeri girmişti. Başka bir yerde sorun olacağını
düşündüm ama bulamayınca Windows kurulu bir PC'den bağlanıp ayarlarına
bakınca APN değerinin "mgb" olduğunu gördüm. Ubuntu'da APN değerini
"mgb" olarak değiştirince Ubuntu VINN'lamaya başladı.

13 Temmuz 2009

SME Server konsol yönetim

Lokal ağda e-posta sunucusu olarak SME Server'ı kullanıyorum. Bugüne kadar işini gayet iyi yapan SME server'ımın IP adresini değiştirmem gerekiyordu. Daha önce konsoldan girdiğim bir yönetim aracı vardı ama komutu bir türlü hatırlayamadım. Google'da biraz gezindikten sonra komutu buldum:

# console

İleride tekrar lazım olur diye de buraya not düşeyim dedim.

26 Haziran 2009

Ubuntu 9.04'e ince ayar (Cilalanmış Ubuntu)

Ubuntu 9.04'ün default kurulumundan sonra ihtiyaç hissedilebilecek uygulamalar ve eklentiler:

Önce deb http://packages.medibuntu.org/ jaunty free non-free deposunu ekleyelim.

sudo nano /etc/apt/sources.list


Medibuntu deposunun anahtarını kuralım.

sudo apt-get install medibuntu-keyring


Depo listesini güncelleyelim.

sudo apt-get update



Şu paketleri kuralım.

sudo apt-get install ubuntu-restricted-extras sun-java6-bin liferea mplayer non-free-codecs bluefish gparted xine-ui xine-plugin vlc thunderbird filezilla glipper

20 Mayıs 2009

Sistem sıcaklık bildirimi

Sistemlerin belli bir sıcaklığı geçtiğinde e-posta ile bildirim yapabilmesi için mbmon'dan yararlandım. Önce mbmon'un çeşitli kullanım parametrelerini görelim:

Default 5 saniyede bir çıktı verir. (Sistem 28 derece. Fan hızı 3000)
# mbmon -A

Temp.= 254.0, 28.0, 201.0; Rot.= 3000,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69

Temp.= 254.0, 28.0, 201.0; Rot.= 3000,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69
...
...

30 saniyede bir çıktı verir.
# mbmon 30 -A

Temp.= 254.0, 28.0, 201.0; Rot.= 3013,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69
...
...

Sadece tek bir çıktı verir.
# mbmon -A  -c 1

Temp.= 254.0, 28.0, 201.0; Rot.= 2986,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69

Çıktının formatı aşağıdaki gibi farklı olması için -r parametresi kullanılır.
# mbmon -A -r
TEMP0 : 254.0
TEMP1 : 28.0
TEMP2 : 201.0
FAN0  : 3000
FAN1  :    0
FAN2  :    0
VC0   :  +1.18
VC1   :  +1.82
V33   :  +3.41
V50P  :  +6.85
V12P  : +11.67
V12N  :  -0.00
V50N  :  -1.69

Sadece TEMP1 değerini almak için -T parametresi kullanılır:
# mbmon -A -c 1 -T 2
28.0

Sadece FAN0 değerini almak için -F parametresi kullanılır:
# mbmon -A -c 1 -F 1
3000

Diğer kullanım parametreleri ve ayrıntı için tabi ki:
# mbmon -h
MotherBoard Monitor, ver. 2.05 by YRS.
Usage: mbmon [options...] <seconds for sleep> (default 5 sec)
 options:
  -V|S|I: access method (using "VIA686 HWM directly"|"SMBus"|"ISA I/O port")
  -A: for probing all methods, all chips, and setting an extra sensor.
  -d/D: debug mode (any other options except (V|S|I) will be ignored)
  -e [0-2]: set extra temperature sensor to temp.[0|1|2] (need -A).
  -p chip: chip=winbond|wl784|via686|it87|gl52|lm85|lm80|lm90|lm75
            for probing chips
  -Y: for Tyan Tiger MP/MPX motherboard
  -h: print help message(this) and exit
  -f: temperature in Fahrenheit
  -c count: repeat <count> times and exit
  -P port: run in daemon mode, using given port for clients
  -T|F [1-7]: print Temperature|Fanspeed according to following styles
    style1: data1\n
    style2: data2\n
    style3: data3\n
    style4: data1\ndata2\n
    style5: data1\ndata3\n
    style6: data2\ndata3\n
    style7: data1\ndata2\ndata3\n
  -r: print TAG and Value format
  -u: print system uptime
  -t: print present time
  -n|N: print hostname(long|short style)
  -i: print integers in the summary(with -T option)

Şimdi bu bilgiler ışığında yazdığım aşağıdaki gibi bir script belirli zaman aralıklarında çalıştırılırsa, sistem ısındığında e-posta ile bize bildirim yapacaktır.

#!/bin/bash

# mbmon -c 1 : 1 kere cikti almak icin
#       -T 2 : sicakligin sadece 2. degeri almak icin
# Cikti tamsayi olmadigi icin awk ile noktadan
# onceki deger alinir.

#Sicaklik derecesine gore bildirim.
#DEGER=`mbmon -A -c 1 -T 2|awk -F. '{print $1}'`

# Fan hizina gore bildirim
DEGER=`mbmon -A -c 1 -F 1`

if [ $DEGER -gt 3850 ]
then
        echo "Sistem odasinda sicaklik artisi tespit edildi" | mail -s "Sicaklik YUKSEK" bilgiislem@abckurumu.com.tr
fi

exit

12 Mayıs 2009

Debian'a MRTG kurulumu

# apt-get install snmpd mrtg apache2

# nano /etc/snmp/snmpd.conf

----------
# sec.name source community
com2sec paranoid default public
#com2sec readonly default public

şöyle değişecek:

# sec.name source community
#com2sec paranoid default public
com2sec readonly default public
--------------

#/etc/init.d/snmpd restart


# mkdir /var/www/mrtg

# cp /etc/mrtg.cfg /etc/mrtg.cfg.yedek
# nano /etc/mrtg.cfg

içini sil ve şunu yapıştır:

WorkDir: /var/www/mrtg
Options[_]: bits,growright


# cfgmaker public@localhost >> /etc/mrtg.cfg
# indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

5 dk. bir çalışacak komut şurada:

# cat /etc/cron.d/mrtg
*/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi

Grafikleri 5 dk. beklemeden hemen görmek için :

# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1

Sayfayı görmek için:
http://mrtg_server/mrtg

10 Mart 2009

Konsolda bash scriptlerini düzenlerken renkleri kullanmak

Konsolda editör olarak nano kullanıyorum. Bash scripler ile boğuşurken komutların, açıklama satırlarının, değişkenlerin, vs. farklı renklerde olması için /etc/nanorc dosyasına şu satırları ekliyorum:

syntax "c-file" ".*\.c$" ".*\.h$"
color red "\<[A-Z_]{2,}\>"
color green "\" "\" "\" "\"
color green "\" "\" "\"
color brightyellow "\" "\" "\" "\" "\" "\"
color brightcyan "#define" "#include" "#ifn*def" "#endif"
color brightcyan "#elif" "#else" "#if"

syntax "sh" ".*\.sh$"
color red "\<[A-Z_]{2,}\>"
color green "\" "\" "\" "\"
color green "\" "\" "\"
color brightyellow "\" "\" "\" "\" "\" "\"
color brightcyan "#define" "#include" "#ifn*def" "#endif"
color brightcyan "#elif" "#else" "#if"
color white "^#.*$"


syntax "nanorc" "[\.]*nanorc$"
color white "^ *(set|unset).*$"
color cyan "^ *(set|unset) (autoindent|backup|const|cut|fill|keypad|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|quotestr|regexp|smooth|speth|speller|suspend|tabsize|tempfile|historylog|view)"
color brightwhite "^ *syntax [^ ]*"
color brightblue "^ *set\>" "^ *unset\>" "^ *syntax\>"
color white "^ *color\>.*"
color yellow "^ *color (bright)?(white|black|red|blue|green|yellow|magenta|cyan)\>"
color magenta "^ *color\>"
color green "^#.*$"

26 Şubat 2009

Nagios e-posta bildirimleri

Kurduğum ve yönettiğim linux proxy&firewall'ı kullanan kurumdan telefon geldi. İnternet susmuş ama MSN'de sorun yokmuş. Daha önce de başıma geldiğinden disklerin dolduğunu tahmin ettim ve temizlemek için sisteme her zamanki gibi ssh ile bağlandım. Evet, tahmin ettiğim gibi disk bölümlerinin biri %100 görünüyordu. Aslında kurduğum sistemlere Nagios'u mutlaka kurarım ve disklerin %90 sınırını aştığında linux sistemimin e-posta ile bildirim yapmasını sağlarım. Bir taraftan diskleri temizlerken nagios loglarına ve e-postalarıma baktım. Nagios aksatmadan (her zamanki gibi) işini yapmış ve 5 gün önce e-posta ile beni uyarmış. E-posta kalabalığında bu bildirimi kaçırmışım. Bunu kaçırmamın sebebini biliyorum; benzer e-postalar farklı sistenlerden de geliyor ve bildirim e-postalarının içeriğinde hangi sistemden geldiğini belirten bir ifade olmadığı için karışıklığa sebep olabiliyor. Bunu nagios ayarlarını fazla kurcalamadan her kurulum yaptığım kurum/şirket için yeni bir gmail hesabı açarak hallediyordum aslında. E-postalar bu hesaplardan geldiği için hangi sistemde sorun var kolay anlaşılabiliyordu. Son zamanlarda 1-2 sistemi tek e-posta hesabına göre ayarlayınca karışıklık oldu böyle. Bende nagios ayarlarına bir bakayım dedim. E-posta içeriğine, hangi sistemden geldiğinin bilgisini koyarsam karışıklık çözülür böylece. Farklı yolu vardır mutlaka ama ben en kolay şu şekilde çözdüm:

/etc/nagios2/commands.cfg

dosyası, e-posta bildirimlerinin komutları olan dosya. İçeriğindeki ilgili bölüm şöyle:

--------------------------------------------------------------------
# 'host-notify-by-email' command definition
define command{                           
        command_name    host-notify-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTALIAS$\nState: $HOSTSTATE$ for $HOSTDURATION$\nAddress: $HOSTADDRESS$\nInfo:\n\n$HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n\nACK by: $HOSTACKAUTHOR$\nComment: $HOSTACKCOMMENT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert $NOTIFICATIONNUMBER$ - $HOSTALIAS$ host is $HOSTSTATE$ **" $CONTACTEMAIL$                                                    
        }                                                                                                                                                        


# 'host-notify-by-epager' command definition
define command{                            
        command_name    host-notify-by-epager
        command_line    /usr/bin/printf "%b" "Host '$HOSTALIAS$' is $HOSTSTATE$\nInfo: $HOSTOUTPUT$\nTime: $LONGDATETIME$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$" $CONTACTPAGER$                                                                                            
        }                                                                                                                                                        

# 'notify-by-email' command definition
define command{                      
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nState: $SERVICESTATE$ for $SERVICEDURATION$\nAddress: $HOSTADDRESS$\n\nInfo:\n\n$SERVICEOUTPUT$\n\nDate/Time: $LONGDATETIME$\n\nACK by: $SERVICEACKAUTHOR$\nComment: $SERVICEACKCOMMENT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert $NOTIFICATIONNUMBER$ - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$                                                                                                                                                              
        }                                                                                                                                                        


# 'notify-by-epager' command definition
define command{
        command_name    notify-by-epager
        command_line    /usr/bin/printf "%b" "Service: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nInfo: $SERVICEOUTPUT$\nDate: $LONGDATETIME$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
        }
---------------------------------------------------

Ben de aşağıdaki gibi ekleme yaptım. (Koyu renk olan bölümler)

---------------------------------------------------
# 'host-notify-by-email' command definition
define command{                           
        command_name    host-notify-by-email
        command_line    /usr/bin/printf "%b" "***** ABC KURUMU - Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTALIAS$\nState: $HOSTSTATE$ for $HOSTDURATION$\nAddress: $HOSTADDRESS$\nInfo:\n\n$HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n\nACK by: $HOSTACKAUTHOR$\nComment: $HOSTACKCOMMENT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert $NOTIFICATIONNUMBER$ - $HOSTALIAS$ host is $HOSTSTATE$ **" $CONTACTEMAIL$                                                    
        }                                                                                                                                                        


# 'host-notify-by-epager' command definition
define command{                            
        command_name    host-notify-by-epager
        command_line    /usr/bin/printf "%b" "
ABC KURUMU - Host '$HOSTALIAS$' is $HOSTSTATE$\nInfo: $HOSTOUTPUT$\nTime: $LONGDATETIME$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$" $CONTACTPAGER$                                                                                            
        }                                                                                                                                                        

# 'notify-by-email' command definition
define command{                      
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "*****
ABC KURUMU - Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nState: $SERVICESTATE$ for $SERVICEDURATION$\nAddress: $HOSTADDRESS$\n\nInfo:\n\n$SERVICEOUTPUT$\n\nDate/Time: $LONGDATETIME$\n\nACK by: $SERVICEACKAUTHOR$\nComment: $SERVICEACKCOMMENT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert $NOTIFICATIONNUMBER$ - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$                                                                                                                                                              
        }                                                                                                                                                        


# 'notify-by-epager' command definition
define command{
        command_name    notify-by-epager
        command_line    /usr/bin/printf "%b" "
ABC KURUMU - Service: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nInfo: $SERVICEOUTPUT$\nDate: $LONGDATETIME$" | /usr/bin/mail -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
        }
-----------------------------------------------------

E-posta programımda (Thunderbird) da gerekli filtreleme işlemlerini yaparsam bu tip bildirim e-postalarını kaçırmam artık diye düşünüyorum.