14 Eylül 2009
LAMP Server Kurulumu (Debian, Ubuntu)
# 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
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
# console
İleride tekrar lazım olur diye de buraya not düşeyim dedim.
26 Haziran 2009
Ubuntu 9.04'e ince ayar (Cilalanmış Ubuntu)
Ö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
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
# 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
# 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
10 Mart 2009
Konsolda bash scriptlerini düzenlerken renkleri kullanmak
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
/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.
25 Kasım 2008
Bir siteden resimleri topluca indirmek
08 Mayıs 2008
Online yer imleri
Thunderbird ve sistem çekmecesi
HTML sayfaları RSS gibi takip etmek
Genel Sağlık Sigortası Duyuruları
Genel Sağlık Sigortası Medula duyuruları
Önemli duyuruların yapıldığı bu sitelerin RSS'i keşfetmesi dileğiyle...
31 Mart 2008
Debian'dan Oracle servera nasıl bağlanılır?
Önce gerekli depoyu sources.list'e ekliyoruz.
/etc/apt/sources.list
deb http://oss.oracle.com/debian unstable main non-free
Sonra kurulumu yapıyoruz:
# apt-get install update
# apt-get install oracle-xe-client
/etc/tnsnames.ora dosyasını oluşturup, içine gerekli kodları yazıyoruz. Bu dosyayı networkde oracle servera bağlantı yapan XP bir PC'den de alabilirsiniz.
Örnek tnsnames.ora dosyası:
AYTEKIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = AYTEKIN)
)
)
Artık,
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/scripts/sqlplus.sh dosyası ile bağlantı yapılıp, SQL sorgular yapılabilir.19 Mart 2008
Çift Adsl ve Linux Trafik Yönetimi
Bir kurumda yaşanan sorun şuydu: normal internet hareketleri için adsl'i kullanırken aynı zamanda bağlı bulundukları bakanlığın frame relay hattını kullanarak bakanlığın sayfalarında veri girişleri yapamıyorlardı. Her iki hat farklı IP gruplarında olduğundan PC'lerin IP ayarlarını sürekli değiştirerek işi çözüyorlardı. Bu durum da bilgi işleme ayrı bir yük getiriyordu tabi. Ayrıca PC'lerin IP'leri sürekli değiştirildiğinden odalardaki yazıcıların paylaşımı ve kullanımında sorunlar oluyordu. Aynı şekilde dosya paylaşımları da...
Çözüm olarak bu trafiğin ortasına bir Linux koyarak tüm ağı aynı IP grubuna aldım. Çıkışları da hedef adrese yada IP'ye göre yönlendirdim. Linux'a, şu şu şu adreslere iletişim frame relay hattından, geri kalan iletişim de adsl hattından yapılacak, dedim. Kullanıcıların sadece tarayıcılarına site adreslerini yada IP'lerini yazması yetti. Gerisini Linux halletti... Ha, tabi bu trafiği de web filtreleme, güvenlik duvarı, dhcp sunucu, trafik sınırlama (bandwith yönetimi) ile de cilalamayı unutmadım.
Teknik olarak bu işi şöyle yaptım:
Önce linux'a 3 adet ethernet kartı takıldı. Lokal, adsl ve frame relay bağlantıları için. Topoloji şekildeki gibi:

/etc/network/interfaces dosyası şu şekilde:
| auto lo eth0 eth1 eth2 iface lo inet loopback allow-hotplug eth0 iface eth0 inet static address 10.0.0.10 netmask 255.255.255.0 gateway 10.0.0.2 allow-hotplug eth1 iface eth1 inet static dns-nameservers 10.0.0.2 address 192.168.1.254 netmask 255.255.255.0 allow-hotplug eth2 iface eth2 inet static address 10.67.1.10 netmask 255.255.255.0 |
interfaces dosyasında da göründüğü gibi sadece eth0 için gateway tanımı ve eth1 için dns tanımı yaptım.
Bakanlıkta bağlanılan sistemin IP adresleri 10.6.8.0/24 ağındaydı. Bu IP grubu için ağ geçidi olarak router'ın IP adresini atadım.
| # route add -net 10.6.8.0 netmask 255.255.255.0 gw 10.67.1.1 |
10.67.1.0/24 ağı için de aynı şeyi yaptım.
| # route add -net 10.67.1.0 netmask 255.255.255.0 gw 10.67.1.1 |
route -n çıktısı şöyle:
| Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.6.8.0 10.67.1.1 255.255.255.0 UG 0 0 0 eth2 10.67.1.0 10.67.1.1 255.255.255.0 UG 0 0 0 eth2 10.67.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0 |
firewall olarak kullandığım script'de iptables ile trafiği yönlendirdim. Aşağıdaki komutlarda göründüğü gibi 10.6.8.0/24 hedefine gitmek isteyen trafik eth2'ye yönlendiriliyor. Diğer trafik eth1'den çıkıyor.
| iptables -t nat -A POSTROUTING -d 10.6.8.0/24 -o eth2 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE |
Bu şekilde istediğim trafiği istediğim ağ arayüzüne yönlendirebilirim. Bu yapı benim işimi gayet iyi gördü.
14 Mart 2008
squid ve virüs
"WARNING! Your cache is running out of filedescriptors" hata mesajını gördüm. Yaptığım araştırmada /etc/defaults/squid dosyasındaki SQUID_MAXFD değerinin 1024'den 4096'ya çıkarılarak sorunun çözülebileceğini okudum. Yaptım ama olmadı! Bir bug olabileceği düşüncesiyle sistemi kernel dahil güncelledim ama nafile. Log'lara bakarken bir IP'nin www.rusawm.com'a anlamsız bir şekilde trafik yaptığını gördüm. Blok şeklinde satırlarca bu siteye erişim logları access.log dosyasına düşüyordu. Kullanıcının dışında habersiz bir iletişim yapıldığı ortada olduğundan, IP'nin sahibi PC'nin kablosunu çektik. Sorun düzeldi... Ne menem bir virüs ise yaptığı trafik ile squid'in cachelerine zarar veriyormuş. Hani Linux ile masaüstünde virüssüz bir dünya kurmuş durumdayız ama windows PC'lere hizmet veren, onlara efendilik yapan bir Linux'da yer yer virüslerden nasibini alıyor maalesef...
29 Şubat 2008
OOXML'e hayır...
28 Şubat 2008
ssh bağlantısını garantiye almak
Bağlanacağımız PC/server yan taraftaki sistem odasında da olsa, Güney
Afrika'da da olsa açıyoruz ssh ile bir oturum, işimizi yapıp çıkıyoruz.
Uzaktaki makinalara Linux'un 10 kaplan gücündeki konsolu ile
yaptıramayacağımız iş yok "gibi". "Gibi" diyorum çünkü ender de olsa
bazen fiziksel olarak makinanın başında olmamız gerekiyor. Özellikle ağ
ayarları ile uğraşıyorsak. Yanlış bir komut her şeyi mahvedebilir. Dün
akşam böyle hassas bir konu ile uğraşırken ağ ayarlarımı kaybetme
korkusuyla komutları elim titreyerek girdim. Uzak bilgisayardaki
/etc/network/interfaces dosyasını mıncıklarken, route komutu ile
boğuşurken hattı kopartmamak için ayrı bir dikkat harcadım.
Firewall+proxy olarak çalışan makinaya ayrı bir frame relay bağlantısı
yapmak zaten yeterince boğucuydu. Sonra özgürlüğümü geri almak için
şöyle yaptım: Çalışan ve uzaktan bağlanılabilen ayarları geri yükleyecek
bir script yaptım. Bunu da yer yer saat başı, duruma göre aklıma
geldikçe 30-40 dk. ileriye alarak crontab'a attım. Böylece eğer bir
yanlışlık olursa en fazla 40-45dk. içinde tekrar bağlanabilmeyi
garantiye almış oldum. Hem arada bir çay molası vermek için de bahanem
olurdu. Hakikaten işe yaradığını da söylemeliyim çünkü aldığım gazla bir
sefer bağlantıyı kopardım. Panik yapmadan saatime baktım, bekledim ve
zamanı geldiğinde bağlanıp işe devam ettim. İşi garantiye almak güzel de
script'in arada fark etmeden cron'dan çalışması ve yaptığım ayarları
bozması ve benim bunu geç anlamam işin cilvesi ne yazık ki... ;)
01 Şubat 2008
stix.to : Faydalı bir eser
03 Aralık 2007
swatch logrotate'den sonra log dosyasını izlemezse...
swatch'ın start, restart, stop edilebilmesi için bir script yazmak gerekiyordu. Kolları sıvayıp önce şöyle bir script yazdım (/etc/init.d/swatchd dosyasına) :
| #!/bin/sh # Debian Gnu/Linux Shell Script # # swatchd : swatch'in baslatilmasi, durdurulmasi veya tekrar baslatilmasi # icin script. # # Aciklama: logrotate'den sonra swatch log dosyalarini dinlemediginden, # logrotate'den sonra swatch'in restart edilmesi gerekiyor. # /etc/cron.daily/sysklogd, /etc/cron.weekly/sysklogd dosyalarinin sonuna # /etc/init.d/swatch restart > /dev/null satiri eklenirse, sysklogd restart olduktan hemen sonra # swatch da restart olacaktir. # # Version: 1.0 03-12-2007 aytekinaygun@gmail.com ps ax | grep swatch > /tmp/swatch.pid PID=`cat /tmp/swatch.pid | grep swatchrc | awk '{print $1;}'` case "$1" in start|"") if [ "$PID" = "" ]; then swatch --daemon -c /etc/swatchrc --tail-file="/var/log/syslog /var/log/auth.log" echo "swatch baslatildi..." else echo "swatch zaten calisiyor..." fi ;; stop) if [ "$PID" = "" ]; then echo "swatch zaten calismiyor..." else kill -9 $PID echo "swatch durduruldu..." fi ;; restart) if [ "$PID" = "" ]; then swatch --daemon -c /etc/swatchrc --tail-file="/var/log/syslog /var/log/auth.log" echo "swatch calismiyordu ve baslatildi..." else kill -9 $PID swatch --daemon -c /etc/swatchrc --tail-file="/var/log/syslog /var/log/auth.log" echo "swatch tekrar baslatildi..." fi ;; *) echo "Kullanim parametreleri : /etc/init.d/swatchd {start|stop|restart}" ;; esac exit 0 |
Sonra da /etc/cron.daily/sysklogd, /etc/cron.weekly/sysklogd dosyalarinin sonuna;
| /etc/init.d/swatch restart > /dev/null |
satırını ekledim. Böylece gece sysklogd restart olduktan hemen sonra swatch'da restart oluyor ve istediğim log dosyalarının izlenmesine devam ediliyor.
22 Kasım 2007
İnternet trafiğini (Bandwidth) sınırlamak
------------cbq-2.gss------------
DEVICE=eth0,100Mbit,10Mbit
RATE=528Kbit
WEIGHT=50Kbit
PRIO=4
RULE=212.174.159.101
RULE=212.174.159.109
RULE=212.175.105.137
RULE=195.245.227.163
RULE=72.5.77.149
---------------cbq-3.webdown--------------
DEVICE=eth0,100Mbit,10Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=0/0
Dikkat edilecek hususlar :
* eth0 modeme bakan ethernet
* RATE download için verilen max. değer
* WEIGHT, RATE'in 1/10'u (neden böyle ben de bilmiyorum)
* PRIO, gönderilen paketlerin önceliğini belirliyor. Küçük rakam daha öncelikli.
* RULE, adı üstünde, kuralları belirlediğimiz satır. IP:Port şeklinde de olabilir. Sonuna "," (virgül) konulduğunda kaynak IP-Port anlamına gelir.
* cbq-x.TANIM şeklinde yapılır. x, 2'den başar ve artan sayıda devam eder. TANIM, istediğimizi yazabiliriz.
* cbq-2.gss, cbq-3.webdown dan önceliklidir. Kurallar bu önceliklere göre uygulanır.
15 Kasım 2007
Thunderbird konu başlığına göre dizilim yapmasın
# Only thread by reference headers, ignore subject user_pref("mail.strict_threading", true);
ve kayıt ettim... Thunderbird'ü tekrar çalıştırdığımda kabuslarım sona erdi.
16 Ekim 2007
Disklerin dolduğunu haber veren script
Henüz denemeler yapıp yazılımı test ediyorum. Bu denemelerimde disk dolduğu zaman bana e-posta atmasını sağlayamadım. Fazla da uğraşmadım ve kendi işimi kendim görmeye karar verdim. Hemen şöyle bir script yazdım:
| #!/bin/sh if df -h | egrep "90%|91%|92%|93%|94%|95%|96%|97%|98%|99%|100%" then df -h > disk.txt echo " " >> disk.txt echo " " >> disk.txt du -sh /var/* >> disk.txt mail -s "[Proxy-Hastane] Disk Doluyor!" tirtil@zabazingo.com < disk.txt rm disk.txt fi |
Görüldüğü gibi basit bir 'eğer' kalıbı ile işimi hallettim.
Önce disk bölümlerinin doluluk oranına bakıp bu çıktıda %90 ve üzeri bir ifade var mı ona bakıyoruz. Eğer bu ifade var ise disk bölümlerinin doluluk oranlarının bilgisi ile /var dizininde bulunan dosya ve dizinlerin boyutlarını disk.txt dosyasına yazıp, bu dosyayı e-posta ile gönderiyoruz. Hepsi bu...
Bu scripti crontab'a ekleyip günde bir kez çalıştırmak yeter sanırım.
15 Ekim 2007
Konsoldan e-posta göndermek
Kurduğumuz sistemlerde neler olup bittiğini izlemek için yada belirli aralıklarla yaptırdığımız bir işin (örneğin yedekleme) sağlıklı bir şekilde yapıldığından emin olmak için birtakım çıktıları e-posta ile takip ederiz. Konsoldan e-posta atmak için;
# mail kullanıcı@alanadı.com -s "Konu Başlığı" < /var/log/dosya.log
komutunu kullanmak yeterlidir. Bu komut ile dosya.log dosyası kullanıcı@alanadı.com'a gönderilir. Fakat bu komutu kullanmak için önce bir MTA ayarı yapmak gerekir. Ben Debian'da ön tanımlı olarak gelen exim4'ü kullanıyorum. Eğer kurulu değil ise:
| # apt-get install exim4 |
ile kurulumu yapıyoruz. Kullandığım gmail hesabım için ayarları şöyle yapıyorum:
| # dpkg-reconfigure exim4-config |
Yapılandırmayı küçük dosyalara bölmek ister misiniz? hayır Posta yapılandırma türü? Posta gönderme akıllı-makine ile; posta alma SMTP/fetchmail ile Sistemin posta adı? localhost.localdomain |
Ayarları kayıt ediyoruz. Yapılan bu ayarlar /etc/exim4/update-exim4.conf.conf dosyasına yazılır. Bu dosyanın içeriği şöyle birşey oluyor.
| # nano /etc/exim4/update-exim4.conf.conf |
| dc_eximconfig_configtype='smarthost' dc_other_hostnames='localhost.localdomain' dc_local_interfaces='127.0.0.1' dc_readhost='debian' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='smtp.gmail.com::587' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='false' dc_mailname_in_oh='true' dc_localdelivery='mail_spool' |
aytekin kullanıcısının gönderdiği postalarda zabazingo@gmail.com adresinin görünmesini istiyorum. Bunun için /etc/email-addresses dosyası şöyle düzenliyoruz.
| # nano /etc/email-addresses |
| aytekin: zabazingo@gmail.com |
Son olarak kullanıdğımız e-posta adresinin kullanıcı ve şifre bilgilerini girmemiz gerekiyor.
| # nano /etc/exim4/passwd.client |
| *:zabazingo:şifre |
Ayarlar tamamlandı. Şimdi de exim4'ü yeniden başlatıyoruz.
| # /etc/init.d/exim4 restart |
08 Ekim 2007
Dinamik IP'ye hostname atama (dyndns.org güzelliği)
Belli aralıklarla IP'yi güncellemek için ubunturehberi.com'da anlatılanları uyguladım. Komut satırından komutu verdiğimde herşey normal ama cron'dan komut çalışmıyor. Betik path'de olmadığı için sorun oluyor. Bende şöyle yaptım. dyndns_update.sh betiğini /usr/sbin/'in altına taşıdım. Betik içinde de değişiklik yapmak gerekiyor. ipcheck komutu olan satırlarda da /usr/sbin/ipcheck .... şeklinde yol tanımladım. Sonuç olarak betiğin son hali şöyle:
#!/bin/sh
USERNAME=kullanıcı
PASSWORD=şifre
HOSTNAME=xxxxxx.dyndns.org
cd /root/
if [ -f /root/ipcheck.dat ]; then
/usr/sbin/ipcheck -r checkip.dyndns.org:8245 $USERNAME $PASSWORD $HOSTNAME
else
/usr/sbin/ipcheck --makedat -r checkip.dyndns.org:8245 $USERNAME $PASSWORD $HOSTNAME
fi
crontab'a da şöyle ekliyoruz:
# crontab -eher saat başı çalışması için eklenecek satır:
00 * * * * /usr/sbin/dyndns_update.sh
05 Ekim 2007
/home'u ayrı bölüme/diskte taşımak
Şöyleki:
Önce dizin oluşturup 2.diski buraya bağlıyoruz.
# mkdir /yenihome
# mount -t ext3 /dev/sdb1 /yenihome
/home 'da bulunan tüm dosyaları /yenihome 'a taşıyoruz.
# cd /home
# find . -depth -print0 | cpio --null --sparse -pvd /yenihome/
/home'un yerini değiştiriyoruz.
# umount /yenihome
# mv /home /eskihome
# mv /yenihome /home
...ve bağlıyoruz.
# mount -t ext3 /dev/sdb1 /home
Tabi bu bağlama işini fstab'a da ekliyoruz:
/dev/sdb1 /home ext3 usrquota,grpquota 1 1
Kaynak : http://eventualis.org/home-dizinini-tasimak/
Artık yazmam lazım gelir...
yazılardan sonra kaldı öyle. Sildim o yazılarıda zaten. Şimdi tekrar
bişiler karalayım dedim Linux hakkında. Tırmalayıp duruyorum akşama
kadar şu ekranın önünde. Deneyimlerimi paylaşayım dedim bende işte. Öle
işte be ...