6.10.2009
Solaris'de the allowable number of mount points has been exceeded hatası
cd /u04
ls -lrt komutunu çalıştırdıgımda,
: I/O error hatası aldım.
u04 file sistemini umount edip tekrar mount etmek istedigimde ise;
umount /u04
mount /u04
mount: /dev/dsk/c3t0d4s0 is already mounted, /u04 is busy,
or the allowable number of mount points has been exceeded
hatasını vermeye başladı.
Bu sorunun cozumu ise;
Her ihtimale karşılık ilgili file sistemi vfstab dosyasında comment'ledikten sonra
vi /etc/vfstab
#/dev/dsk/c3t0d4s0 /dev/rdsk/c3t0d4s0 /u04 ufs 5 yes logging
Benim gibi sunucudan çok uzakta iseniz;
reboot -- -r (sunucuyu reconfigure ederek reboot etmek gerekiyor.)
vfstab dosyasından commnet'i kaldırıp,
vi /etc/vfstab
/dev/dsk/c3t0d4s0 /dev/rdsk/c3t0d4s0 /u04 ufs 5 yes logging
mount /u04
10.09.2009
linux işletim sisteminde Access Control List (ACL) tanımlamasını nasıl yapabilirim?
ACL tanımlayacagımız filesystem'e ACL yapabilsin izni vermek olacak.
#/dev/hdd1 /yedek ext3 defaults,acl 1 2
Bu eklenti sonrasında,
#mount -o remount /yedek komutunu çalıştırarak sistemimizi restart etmeden acl’in aktif olmasını saglayabiliriz.
NOT: yukarıdaki her iki işlemi tek bir komutta gerçekleştirebiliriz;
#mount -o remount -o acl /dev/hdd1 /yedek
fakat bu şekilde yapılan işlem, sunucu restart'ından sonra etkili olmaz
Bu noktadan sonra yapacagımız, istedigimiz bir kullanici icin, istedigimiz bir dizin veya dosya üzerinde yetki tanımlaması yapmak olacaktir.
/yedek mount point’i altinda bulunan deneme dosyasının erişim yetkileri aşagıdaki gibi olsun;
-rwx------ 1 yusuf yusuf 4 Sep 10 15:50 deneme
aras kullanıcısına okuma, yazma ve çalıştırma hakkı vermek için;
#setfacl -m u:aras:rwx /yedek/deneme komutunu çalıştırıyoruz. bu işlemden sonra dosya izinlerine baktıgımızda,
-rwxrwx---+ 1 yusuf yusuf 4 Sep 10 15:50 deneme #dosya erişim yetkilerinin degiştigi hemen belli oluyor.
Ayrıca, ada kullanıcısının bu dosya üzerinde hiçbir yetkisinin olmamasını istersek... Bunun için,
#setfacl -m u:ada:--- /yedek/deneme komutunu kullanabiliriz.
NOT: Burada dosya erişimi engellemek icin kullandıgımız "—" yerine "0" da yazabiliriz.
Yaptıgımız bu tanımlamaları ve/veya ileride bu dosyaya tanımlanmış acl’leri gormek istersek getfacl komutunu kullanmak yeterli olacaktir.
[root@centos-yusuf yedek]# getfacl /yedek/deneme
getfacl: Removing leading '/' from absolute path names
# file: yedek/deneme
# owner: yusuf
# group: yusuf
user::rwx
user:aras:rwx
user:ada:---
group::---
mask::rwx
other::---
Bir dosyadan acl silmek istiyorsak,
#setfacl -x u:ada /yedek/deneme
Tum bu işlemleri kullanıcı yerine grup icin kullanmak istersek "u" parametresi yerine "g" parametresini eklememiz yeterli olacaktir.
Aynı şekilde işlemler bir dosyaya uygulandıgı gibi sadece dizin verilerek dizine de ACL uygulamak mumkundur.
10.08.2009
Mevcudiyet Bilgisi
Blog'u takip eden arkadasları,dostlari ve misafirleri sevgi ve ozlemle kucaklarım; fazla uzatmadan yoklugumun nedenine geliyorum:
Kara Kuvvetleri Komutanlığı
329'uncu Dönem Yedek Subay Sınıflandırma Sonuçları
Sonuç Açıklama Tarihi: 10 Ağustos 2009
Aday Nu. | 52568 |
---|---|
Adı ve Soyadı | UĞUR İLERİ |
Baba Adı | MUSTAFA |
Kuvveti | Jandarma |
Sınıfı | Jandarma |
Statüsü | Kısa Dönem Er |
Branşı | - |
Kabul Toplama Merkezi | - |
Gideceği Sınıf Okulu / Eğitim Merkezi | ARTVİN İL J. K.LIĞI ARTVİN |
Hepiniz kendinize iyi bakın, Linuxsuz gun gecirmeyin.
Hakkinizi helal edin, Hoscakalin
29.06.2009
Linux'ta konsoldan CD/DVD yazmak
Linux'da bir CD ya da DVD'nin iso image ini almak icin
#/$ dd if=/dev/sr0 of=/iso/media.iso
yapiyoruz. Biraz elini yuzunu duzeltirsek yazdiklarimizin:
#/$ dd if=/dev/sr0 of=/iso/media.iso && eject /dev/sr0 && sleep 10 ;eject -t /dev/sr0
Cikardigimiz image.iso isimli iso dosyasini mount etmek icin:
# mount /iso/media.iso /mnt -o loop
Peki cikardigimiz iso dosyasini nasil CD/DVD ye yaziyoruz?
1. Ilk once device isimlerini ve ID lerini ogrenelim:
uileri@uileri:~> cdrecord -scanbus
scsibus0:
0,0,0 0) 'HL-DT-ST' 'DVD-ROM GDR8164B' '0D08' Removable CD-ROM
0,1,0 1) 'HL-DT-ST' 'DVDRAM GSA-H10N ' 'JL12' Removable CD-ROM
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
2. Simdi gordugunuz gibi iki DVD ROM 'um ve bunlardan birinin de DVD yazici oldugunu gorduk.
O halde elimizdeki iso dosyasini yazalim:
$ cdrecord -v -dao dev=0,1,0 speed=32 Desktop/FREE_XenServer-5.5.0-install-cd.iso
Akilda soru isareti kalmamasi icin:
speed ile yazma hizimizi (speed=32 gibi)
dev ile device id sini (dev= 0,1,0)
dao ile ise yazma tipini veriyoruz (Disc atOnce)
daha fazla bilgi icin
$ wodim --help yapabiliriz
Elimizdeki RW bir CD ve DVD'yo bosaltmak icin :
$ cdrecord -v dev=0,1,0 blank=all
/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner
24.06.2009
MySQL veritabani Replikasyonu II
1. Onceki yazida anlattigim MySQL Replikasyonunu gerceklestirirken datafile tasimak yerine mysqldump kullanabiliriz
2. MySQL slave'de /etc/my.cnf dosyasina
replicate-do-db={database_adi} seklinde verdigimiz databaseimizi replike etmek icin,konfigurasyon ve yeniden baslatma isleminden sonra, mysql shell'inde asagidaki girdiyi kullanabiliriz
mysql> LOAD DATA FROM MASTER;
3. LOAD DATA FROM MASTER sadece MyISAM tablolarda calisir.
4. replicate-do-db={database_adi_1}
replicate-do-db={database_adi_2}
replicate-do-db={database_adi_3} seklinde birdne fazla databasei ayni conf icinde altalta tanimlamamiz gerekiyor.
5. Master sunucuyu show master status\G;
Slave sunucuyu ise show slave status\G;
ile izleyebiliriz.
6. report-host =SLAVE_SUNUCU_TANIMLAMASI seklinde girdimiz olmazsa Slave sistemimizi MySQL Administrator gibi programlarla izleyemiyoruz.
7. InnoDB tablolarin replikasyonu biraz daha sorunlu olabiliyor. Konuyla ilgili detayli bir yazi daha yayinlayacagim.
MySQL veritabani Replikasyonu I
Hepimizin bildigi gibi, hangi sistemi yonetiyorsak yonetelim yedekleme cok onemli bir kavramdir.
Ozellikle Veritas Netbackup Client kullanan arkadaslar da bilirler ki, en buyuk sorunlardan biri NetBackup'in MySQL yedekleme agent'i bulunmamakta.
Dolayisiyla, elimizdeki MySQL veritabani sunucusunu ancak su sekilde yedekleyebiliriz:
1. MySQL veritabani sunucumuzu durdurup, SuSE sistemlerde /var/lib/mysql altinda bulunan data klasorlerini kopyalamak sureti ile yedekleriz
2.MySQL Sunucusu ile birlikte gelen "mysqldump" aracini kullanabiliriz.
$ mysql -u{username} -p{password} {database_ismi} > dump.sql
(Ayrica function ve trigger yedekleme konusunda da bir yazim vardi)
Ancak herhangi bir sekilde sunucumuz down oldugunda, geri dondurmek icin oncelikle yeni bir sistem kurmak ve uzerindeki MySQL Sunucusunu yapilandirmaktan sonra, aldigimiz en son yedekten grei donmemiz gerekir.
Yalniz burada da goze alinmasi gereken kayiplar var, ne gibi:
1. Sunucuyu yeniden kurmak, yapilandirmak, MySQL veritabani sunucusunu kurarak,yapilandirmak icin harcanan zaman
2. Geri donus yapacagimiz veri sadece -en son - yedekledigimiz ankine ait olacaktir. Ornegin. hergun saat 14:00 de yedek aliyorsak ve sistemi 13:00 da kaybedersek, yaklasik 23 saatlik bir data kaybi gerceklesmis olur. BU kayip bazen onemsiz olabilecegi gibi, ozellikle buyuk sirketlerde-projelerde hayati onem arz edebilir.
Bu kayiplarin onune gecmek icin yapmamiz gereken MySQL veritabani sunucumuz uzerindeki veritabanlarini replike edebiliriz. Nasil mi?
1. Yeni bir sunucu ve onun uzerine de MySQL veritabani sunucusu kuruyoruz.
---- MASTER ----
2. Eski - yeni adiyla Master - sunucumuzdaki /etc/my.cnf dosyasini yeni kurdugumuz - yeni adiyla Slave - sunucumuza kopyaliyoruz.
3. Ardindan Master sunucumuzun /etc/my.cnf dosyasini aciyoruz ve [mysql] ile baslayan bolume
server-id = 1
log-bin=mysqlreplikasyon-bin
satirlarini ekliyoruz.
4. Master sunucu uzerindeki my.cnf dosyasinda bind-address ve skip-networking gecen satirlarin basina # koyuyoruz.
---- MASTER ----
---- SLAVE ----
5. Slave sunucumuza ssh ile baglanip /etc/my.cnf dosyasini aciyoruz.
7. server-id=1 satirini ,
#server-id=1 olarak degistiriyoruz.
6. Yine [mysqld] ile baslayan bolume gelip su satirlari ekliyoruz.
server-id = 2
master-host ={MASTER_SUNUCU_IPSI}
master-user =repl_user
master-password ={SIFRE}
master-port =3306
log-bin=mysqlreplikasyon-bin
replicate-do-db={DATABASE_ADI}
report-host =SLAVE_SUNUCU_TANIMLAMASI
---- SLAVE ----
7. Master ve Slave sunucu uzerindeki MySQL veritabanlarini durduruyoruz
# rcmysql stop (SuSE sistemler icin)
# service mysqld stop (RedHat Sistemler icin)
# /etc/init.d/mysqld stop
8. Master sunucu uzerindeki datafile klasorlerini "tar" liyoruz.
# tar -cvpPf mysqlrepl.tar /var/lib/mysql/{database_ismi}
9. sftp ya da ftp ile Master sunucuda aldigimiz tar yedegini Slave sunucuya atip, yedegi aciyoruz.
# tar -xvpPf mysqlrepl.tar
10 . Master ve Slave sunucuyu baslatiyoruz
# rcmysql start (SuSE sistemler icin)
# service mysqld start (RedHat Sistemler icin)
# /etc/init.d/mysqld start
11. Master sunucusundaki MySQL konsola dusuyoruz.
mysql> show master status\G;
11. Master sunucusundaki MySQL konsola dusuyoruz.
mysql> show slave status\G;
15.06.2009
MySQL'de unutulan root sifresini degistirme
Ilk yapmamiz gereken MySQL veritabanimizi kapatabilecegimiz bir bosluk bulmak.
Ardindan, SuSE sistemler icin
# rcmysql stop
RedHat sistemler icin ise
# service mysql stop
Ardindan
# whereis mysqld_safe
(/usr/bin/mysqld_safe)
# /usr/bin/mysqld_safe --skip-grant-tables &
Simdi MySQL sistemine root olarak baglaniyoruz.
# mysql -uroot
Buradan sonrasi cok kolay cunku root olarak MySQL komut satirina dusmus olduk.
mysql > use mysql;
mysql > update user set password=PASSWORD('sifrem') where user='root';
mysql > flush privileges;
mysql > quit;
Simdi SuSE sistemler icin
# rcmysql restart
RedHat sistemler icin ise
# service mysql restart
# mysql -uroot -psifrem
12.06.2009
ISO'dan DVD yazmak
# ls -l /dev/cdrom*
2 tane cd/dvd wr karsima cikti.
Peki /iso altinda bulunan Fedora-11-x86_64-DVD.iso dosyasini DVD'ye yazmak icin ne yapmamiz lazim?
$ growisofs -dvd-compat -Z /dev/cdrom2=/iso/Fedora-11-x86_64-DVD.iso
Kaynak: http://www.linuxforums.org/forum/installation/35772-how-burn-dvd-iso.html
4.06.2009
Mevcut bir LVM partition'u buyutmek
VolumeGroup icindeki kullanilabilir alani gormek icin :
# vgdisplay {VolumeGroup_adi} | grep -i free // ornek #vgdisplay vg0 | grep -i free
Elimizdeki LogicalPartitionu 20 GB'a buyutmek icin
# lvextend -L 20G /dev/mapper/{VolumeGroup}-{LogicalVolume}
ya da
# lvextend -L 20G /dev/VolumeGroup}/{LogicalVolume}
eger elimizdeki LogicalPartitionu 20 GB arttirmak icin ise:
# lvextend -L +20G /dev/VolumeGroup}/{LogicalVolume}
LVM ile bir partition nasil olusturulur?
Ornegin
/dev/sda1 40GB
/dev/sda2 4GB
/dev/sda3 28 GB
Elimizde 2 'ye bolunmus baska bir disk:
/dev/sdb1 60GB
/dev/sdb2 20 GB
Elimizde tek parca baska bir disk bulunsun:
/dev/sdc1 146 GB
Bu diskler uzerine / bolumunu /dev/sda1 e, swap'i /dev/sda2 'ye kurdugumuzu dusunelim.
Dolayisiyla
$ df -h
/dev/sda1 / 40GB
/dev/sda2 swap 4GB
olsun.Kalan alani LVM ile gruplamak istedigimizi dusunelim. (Ornegin ben iso'lar icin bir mount point, sanal makinalar icin baska bir mount point kullanirim)
Simdi senaryomuza su sekilde devam edelim.
/iso mount pointimizin boyutu 80 GB
/virtual mount pointimizin boyutu 150 GB
Bu yapiyi yukaridaki partition tablosunu kullarak ancak LVM ile yapabiliriz nasil mi?
Oncelikle ilk yapmamiz gereken hangi Partitionlarin LVM senaryosunda kullanilacagini belirtmek
# pvcreate /dev/sda3 /dev/sdb1 /dev/sdb2 /dev/sdc1
Bunun ardindan hemen ilk Volume Group'umuzu olusturuyoruz.
# vgcreate vg0 /dev/sda3 /dev/sdb1
# vgcreate vg1 /dev/sdb2 /dev/sdc1
Isimizin cogu bitti,
Simdi Logical Volume'larimizi olusturup islemimizi tamamlayacagiz.
# lvcreate vg0 -L 80G --name iso
# lvcreate vg1 -L 150G --name virt
Simdi sanki partitionlari bulunan yeni bir disk takmisiz gibi;
# mkfs.ext3 /dev/mapper/vg0-iso
# mkfs -t ext3 /dev/mapper/vg1-virt
Son olarak
# mkdir /iso && mount /dev/mapper/vg0-iso /iso
# mkdir /virtual && /dev/mapper/vg1-virt
3.06.2009
Redhat,Public key for "cluster-snmp.x.x.x" is not installed hatasi
Bu repository'deki paketlerin sistem icin "Public Key'lerinin" gosterilmesi gerekiyor. Eger bu islemi yapmazsak, yum ile yerel depodan paket kurmamiz mumkun olma ve "Public key for "cluster-snmp.x.x.x" is not installed" seklinde hata aliriz.
Bu sorunun cozumu su sekildedir.
Kurdugumuz repositorynin bagli oldugu klasor icerisinde (ornekte /mnt/iso) RPM-GPG ile baslayan iki dosya vardir.Bu iki dosyayi import edersek bu sorunu da asmis oluruz. Nasil mi?
# rpm --import /mnt/iso/RPM-GPG-KEY*
Redhat ile DVD'yi YUM Repository olarak Kullanmak
Kurulumu tamamladiktan sonra Redhat'in Cluster ve Cluster yonetim araclarini kurmak istedim.
Ancak paket bagimlilliklari basima cok buyuk dertler acti. Sadece bir paket icin bile bir suru paketi kurmam gerekti. onemli olan o degil, bagimliliklarini ogrenmek icin bile bir rpm komutu calistirmak zorunda kaldim. En sonunda bu isten vazgectim ve DVD'mden local bir yum repository kurmaya ve paketleri yum ile kurmaya karar verdim.
Oncelikle DVD'yi dvdrom'a yerlestirdik. Ardindan DVD'mi iso yaptim
1. # mkdir /iso
2. # dd if=/dev/cdrom of=/iso/rhel5.3-x86_64.iso && eject
Ardindan
3. # mkdir /mnt/iso
4. # mount /iso/rhel5.3-x86_64.iso /mnt/iso -o loop
// Bu girdiyi /etc/fstab'a girmekte fayda olabilir
Isleme baslarken hatirlamakta fayda var, ihtiyacimiz olan paketin adi createrepo
5. # rpm -ivh /mnt/iso/Server/createrepo*
6. # cd /mnt
7. # createrepo .
8 # vi /etc/yum.repos.d/iso.repo
Buraya
[iso]
enabled = 1
baseurl = file:///mnt
Isimiz bitti,
artik gerekli paketleri yum ile yukleyebiliriz, Ornek
# yum install net-snmp
SuSE de kullanici eklerken karsilasilan "Unknown Group" hatasi
useradd: Unknown group `dialout'.
useradd: Unknown group `uucp'.
useradd: Unknown group `video'.
useradd: Unknown group `audio'.
gibi hata mesajlari alinabilir.
Bunu duzetlemek icin yapmamiz gereken tek sey:
# vi /etc/default/useradd
Burada GROUPS satirini bulup basini "#" ile hashlemektir.
SLES 11 - Sendmail Notlari
Yakin zamanda yaptigim sendmail gecisinden kisa notlar ve ipuclari:
1. Sendmail oldurmek ve baslatmak
# killall sendmail
# sendmail -bd -q30m
2. Sendmail'de mail yonlendirmesi
# vi /etc/mail/mailertable
domain.com.tr smtp:[{smtp_server_ip/adres}]
# makemap hash /etc/mail/mailertable.db
#tailf /var/log/mail
4. Sendmail ile kuyruktaki mailleri yollamak
# sendmail -q
#
5. Kuyruktaki mail adedini her 3 saniyede 1 defa gostermek
6. "rejecting connections on daemon MTA: 15 children, max 15" hatasi cozumu:
1.06.2009
Solaris digest komutu (Solaris'te md5sum)
Fakat bunun yeride Solaris'te daha güzel bir komut var: digest komutu.
Digest komutunun güzelligi birçok algoritmayı desteklemesidir.
Hangi algoritmaların desteklendigini görmek için
yusuf:>digest -l
sha1
md5
sha256
sha384
sha512
kullanım şekli ise;
yusuf:>digest -a algorithm file
yusuf:>digest -a md5 php-5.2.6-sol10-x86-local
d5e3ebe3826ffb8e8ac9e13480454d92
Redhat uzerine Apache PHP MySQL Yuklemek
Diyelim ki RHEL 5.3 sistemimiz var uzerine MySQL ve PHP destekli Apache kurmak istiyorsunuz.Isimiz oldukca kolay:
1. Sistemimizin internete cikabildiginden emin oluyoruz.
2. Sistemi register ediyoruz.
# rhn_register // Burada karsimiza cikan formlari rhn.redhat.com (satellite) sitesinde kullandigimiz bilgilerle dolduruyoruz.
3. # yum upgrade // ile sistemimizi guncel hale getiriyoruz. ('y') tusuna basarak onay veriyoruz
4. # yum install httpd // ile apache'yi yukluyoruz
5. # yum install php // ile apache'mize php destegini de veriyoruz.
6. # yum install mysql-server mysql // ile mysql sunucusu ve istemcisini yukluyoruz.
Kurulumumuz tamamlandi. Denememizi yapalim
# cd /var/www/htdocs
# vi index.php (Buraya bir phpinfo atiyoruz)
# service httpd start
# service mysqld start
# lynx http://127.0.0.1
29.05.2009
Redhat sisteme yeni disk nasil eklenir
[root@yusuf-redhat-deneme ~]# fdisk -l
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1958 15623212+ 8e Linux LVM
#Sistem'de 1 adet 16Gb scsi disk var. Diskin scsi oludugunu nereden anladık..
/dev/sda -- scsi disk
/dev/hda -- ide disk
Sunucuyu kapatmak için;
[root@yusuf-redhat-deneme ~]# init 0
Diski bos slota taktıktan sonra sunucuyu açıyoruz.
Yeni taktıgımız diskin sistem tarafından tanındıgına emin olmak için;
[root@yusuf-redhat-deneme ~]# fdisk -l
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1958 15623212+ 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Yeni taktıgımız disk bilgisi /dev/sdb. Şimdi yeni diskimizi formatlıyoruz.
[root@yusuf-redhat-deneme ~]# fdisk -u /dev/sdb
Karşımıza gelen ekranlardan sırasıyla;
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-10485759, default 63):
Using default value 63
Last sector or +size or +sizeM or +sizeK (63-10485759, default 10485759):
Using default value 10485759
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 63 10485759 5242848+ 83 Linux
Partition 1 does not end on cylinder boundary.
Command (m for help): w
The partition table has been altered!
Seçenekleri ile formatlamayı tamamlayalım
Formatladıgımız disk üzerinde ext3 filesystem'i oluşturalım
[root@yusuf-redhat-deneme ~]# mkfs.ext3 /dev/sdb1
Diski mount etmek için data diye bir dizin yaratalım;
[root@yusuf-redhat-deneme ~]#cd /
[root@yusuf-redhat-deneme ~]#mkdir data
mount işleminin sunucu restart olduktan sonrada aktif olabilmesi için gerekli ayarlamaları yapalım
[root@yusuf-redhat-deneme ~]#vi /etc/fstab
/dev/sdb1 /data ext3 defaults 1 2
Dosyasının içine yukarıdaki satırı ekleyip kaydedelim.
Diskimizi mount edelim;
[root@yusuf-redhat-deneme ~]mount /data
[root@yusuf-redhat-deneme /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 14G 3.2G 9.7G 25% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 252M 0 252M 0% /dev/shm
/dev/sdb1 5.0G 139M 4.6G 3% /data
Yeni diskimiz kullanıma hazır :)
28.05.2009
SLES 11 uzerinde Xen Sanallastirmasi I
Daha once de anlattigim gibi, bu aralar tamamen XEN ile sanallastirmaya takmis durumdayim.Simdi sanallastirma icin sectigim donanimdan baslayarak her adimi teker teker yazarak, XEN ile sanallastirma ornegimin ilkine baslamak istiyorum.
Donanim:
Dell PowerEdge R300 / Uzerinde RAID I yapilmis 2 SATA disk ve 2 GB Ram mevcut
Isletim sistemi:
Suse Linux Enterprise Server 11 x86_64
Guest Isletim sistemi:
Red Hat Linux Enterprise Server 5.3 x86_64
Oncelikle SLES 11 isletim sistemini donanim uzerine kurarkan "Virtualization Host" olarak seciyoruz. Cunku bu makinayi sanallastirmaya tam olarak adayacagimizi dusunuyorum. Kurulum sonuclandiktan sonra, ilk yapilacak is,
Sistemi XEN destegi ile acmak olacak:
Bunun icin ya grub menusunden XEN'i sececegiz ya da /boot/grub/menu.lst dosyasindan default boot loader olarak XEN destekli isletim sistemini gosterecegiz. Ikinci yolu secersek, makinayi ayarlarin etkin olmasi icin yeniden baslatmamiz gerekiyor.
Simdi geldigimiz adim su:
Elimizde Virtualization Host olarak DELL R300 uzerine kurulmus bir SLES 11x86_64 isletim sistemimiz ve XEN detsegi verilmis aktif calisan bir kernel'imiz var.
Bundan sonra yapacagimiz isleri su sekilde listeyelebilirim:
# cd /var/lib/xen/images // Burasi XEN sisteminin disk olarak kullanacagi dosyalarin durdugu -yani Guest sistemlerin harddisklerinin- klasoru. Bu klasoru isletim sisteminden ayirip LVM yapmak faydali olabilir gibi geliyor
# dd if=/dev/zero of=rhel5.3-x86_64.img bs=1k seek=8192k count=1 // ile 8 gblik bir dosya, ya da baska bir degisle: 8 GB'lik bir disk olusturuyoruz.
Opsiyonel olmakla birlikte:
# dd if=/dev/zero of=rhel5.3-x86_64.img bs=1k count=1 conv=notrunc
Ardindan "/etc/xen/examples" klasoru altinda ornek xen konfigurasyonlari var, burdan bir dosya alip, bu dosyayi /etc/xen/vm altina rhel53.hvm adiyla kopyaliyoruz.XEN konfigurasyonlari direkt burdan okuyormus. (Yedeklenecek yerlerden biri daha :))
Simdi bu dosyayi edit etmeye basliyoruz.
# vi /etc/xen/vm/rhel53.hvm
Ilk olarak disk = [ satirina gidiyoruz ve bu satiri:
disk = [ 'file:/var/lib/xen/images/rhel5.3-x86_64.img,ioemu:hda,w', 'file:/iso/rhel5.3.x86_64.iso,hdc:cdrom,r' ]
sekline getiriyoruz. Burada XEN'e Redhat 5.3 u acarken ve kullandirirken hangi diski kullanacagini soylemis olduk.
Ardindan
memory = 512 (Megabyte cinsinden yaziyoruz)
Son olarak
sdl=1
ve
vnc=0 yapiyoruz.
Dosyayi kaydedip ciktiktan sonra
# xm mem-set 0 512
Son adimiza geldik :
# cd /etc/xen/vm
# xm create rhel53 komutu ile makinayi calistiriyoruz.
Bu kadar... Karsimiza kurulum ekrani cikiyor.
Simdi gelelim sorun yasadigim ve sizlerin de sorun yasayabileceginizi dusundugum ince noktalara:
1. # xm mem-set 0 512
komutu ile bellegi ayirirken bir hata alabilirsiniz -ki ben aldim-. Bu hata size sisteminizin Fully Virtualization icin uygun olmadigini Para-virtualization'u kullanmaniz gerektigini soyleyebilir. Bu durumda yapilacak sey basit. Makinaya reboot verip. BIOS'tan CPU'da sanallastirma destegini acmamiz gerekiyor.
2. Kurulumun son asamasinda cikan sanal makina ekreni acilmayabilir. Ben ssh ile baska bir makinadan gelerek sorunu cozdum:
$ ssh -X -l {root} {sanallastirma_hostu} // /etc/sshd/sshd_config icinde PermitRootLogin yes yapilmali
bu durumda karsi makinadaki X session'u benim onumdeki makinada acildi ve kurulumua boyle devam ettim.
3. Kurulum ekrani oncesi VMBios sayip kaybolabilir. Bu da Guest sistemin bootable device bulamadigi anlamina gelir. Bunun icin
4. Eger elimizdeki CD ve DVD'nin isosunu cikamayi bilmiyorsak hatirlatalim:
# dd if=/dev/cdrom of= /iso/rhel5.3.x86_64.iso && eject
ya da
# dd if=/dev/sr0 of=/iso/rhel5.3.x86_64.iso && eject
Konfigurasyon dosyalariyla oynayip, network senaryolari ve disk kucultup buyutme islemlerini de yazacagim.
Simdilik bu kadar
SuSE'de bozulan ownershipleri duzeltmek
Gecen sene SuSE'de bir makale okumustum.
Ornegin, root olarak chown uileri:wheel /* dedik.Tum klasorlerin, altklasor ve dosyalarin, log dosyalarinin herseyin ownership'i ile oynamis oluyoruz.
Bundan sonra sistemin kararli calisacagini dusunmek emin olun hayal olur.
Ama ne mutlu ki bu durumdan bizi kurtaracak bir SuSE toolu var. root olarak calistirmamiz gereken komut sadece:
# SuSEconfig --module permissions
27.05.2009
SLES 11 uzerinde Xen Sanallastirmasi I
Daha onceki yazilarimdan birinde de belirttigim gibi SLES11 sanallastirma cozumu olarak da tam olarak hazir geliyor.
Peki nedir bu sanallastirmanin digerlerinden farki? SuSE ne oneriyor, ne sagliyor?
Sanallastirma cozumu olarak en cok kullanilan urun sanirim VMware'dir. Ancak unutmamak gerekir ki, VMware Redhat ES 3 uzerine kurulmus Gelistirilmis bir Vmware yazilinindan baska birsey degildir. ( VMware'in yaptiklarini hic kucumsemiyorum, oyle birsey de yapamam yanlis anlasilmasin ). Olayi su sekilde anlatabilirim aslinda:
RHEL3 bir sistem var. Yazilan VMware sistemi bu sistem uzerinde calisabilecek sekilde duzenleniyor ve makina acildiginda kaynak yonetimini vs tum isleri arkaplanda calisan bir vmware sureci kontrol ediyor.
Yani siz bir makina eklediniz diyelim, 512 MB Ram ve belli bir islemci gucu ile disc ayirdiniz, arka planda calisan vmware sureci o kaynaklari ayirmak icin sizin verdiginizden cok fazla kaynagi kullaniyor; cunku kendisi de isletim sistemi uzerinde calisan bir program.
Ancak XEN icin olay biraz daha farkli; XEN, Novell ve Redhat'in uzerinde calisabilen (ve diger Linux dagitimlarinda), kernela xen destegi verilmesini gerektiren ve tamamen sistemden yalitik olarak calisabilen, kullanilacak kaynaklari sizin icin aninda sistemden ayirarak kullanima hazir hale getiren, kaynak kontrolu icin extradan CPU ve Memory harcamak zorunda kalmayan, kisacasi tek cumleyle:
XEN sistem uzerinde calismak icin degil, sistemle calismak icin tasarlanmis bir sanallastirma cozumudur.
Bu gunlerde yaptigim Mail Gateway Stand By calismalarimdan kalan zamanimin buyuk kismini XEN olayini anlamaya ve kullanmaya ayirdim.
Bir sonraki yazimda XEN ile SuSE Entreprise Server 11 uzerinde yaptigim ilk sanallastirma denemesinin adimlarini ve tecrubelerimi yazacagim.
Kolay Gelsin
IBM x306 RAID Sorunu
IBM x306'da daha once yasadigim ve BIOS Upgrade yapsam da cozulmeyen bir sorun var.
RAID konfigurasyonunu yaptiktan sonra (ornegin RAID I) isletim sistemini kurarken sistem kurulumu sanki RAID yapilmamis gibi iki disk uzerine gerceklestirebiliyor.
Asil bekledigimiz RAID yapildiktan sonra tek disk olarak gorunmesi iken bunu IBM x306 da ne yazikki yapamiyoruz.
Cozumu su:
1. Tum RAID konfigurasyonunu ucuruyoruz,
2. Kurulum aninda Software RAID yapiyoruz ve mutlu mesut yarinlara kosuyoruz.
Benim bulabildigim -ne yazikki- daha akillica bir yol yok.
Software RAID nasil yapilir, bunu da onumuzdeki yazilarimda anlatacagim.
21.05.2009
SLES 10 / SLES 11 Arasindaki Farklar I
Ilk haftasindan beri SLED 11 i kullaniyorum.
Ozellikle Windows Domain Membership 'te SLES 10 da yasadigim sikintilarin hicbirini yasatmiyor.Bunun disinda Firefox 3 gelmesi, Evolution Mapi Connector'unun bundled olarak gelmesi vs gibi onlarca olumlu ozelligini sayabiliriz.
Ancak SLES 11 'i test etme firsati bulamamistim. Dun ilk SLES 11 sunucumu kurdum ve bugun konfigure etmek icin basina oturdum.
Ilk gozume carpanlar su sekilde:
Kurulum ekraninda sanallastirma tipi diye bir secenek yerlestirilmis,artik kurulan sistem sanallastirmaya tam olarak hazir geliyor.
YAST toolundaki User Management bolumu, "Security and Users" olarak degismis.
Kullanici ekleme menusunden degistirilen Blowfish, MD5, DES encryption methodlar artik "Local Security" menusunden degistiriliyor.
Ayrica Sudo management yapilandirmasi da Yast'a eklenmis. Artik "Security and Users" menusu altindan Sudo secilerek tum sudo erisimleri YAST arayuzunden duzenlenebiliyor.
Yine ayni menuye LAF eklenmis (Linux Audit Framework). Auditd ayarlari bu framework ile kolaylikla yapilabiliyor gibi goruluyor, ancak ne yazikki daha detayli inceleyemedim.
Nasilsa artik SLES 11 kullanacagim. Bol bol inceler, gordugum farkliliklari da buraya eklerim diye dusundum.
useradd
Mutlaka incelenmesi gereken bir dosya:
/etc/default/useradd
Kullaniciyi eklerken, kullanici icin olusturulacak "default" degerler bu dosyaya yaziliyor.
Aklimizda bulunsun
pstree
Bugun ps'i tabladigimda, pstree diye bir komut oldugunu gordum.
Ciktisi da cok hos.
uileri@uileri:~> pstree
init─┬─acpid
├─bluetoothd
├─bonobo-activati───{bonobo-activati}
├─console-kit-dae───63*[{console-kit-dae}]
├─cron
├─cupsd
├─2*[dbus-daemon]
├─2*[dbus-launch]
├─dhcpcd
├─evolution-alarm───{evolution-alarm}
├─evolution-data-───4*[{evolution-data-}]
├─evolution-excha───{evolution-excha}
├─evolution.bin───9*[{evolution.bin}]
├─firefox───firefox─┬─npviewer.bin───2*[{npviewer.bin}]
│ └─7*[{firefox}]
├─gconfd-2
├─gdm───gdm-simple-slav─┬─X
│ └─gdm-session-wor───gnome-session─┬─bluetooth-apple
│ ├─gnome-keyring-d
│ ├─gnome-panel
│ ├─gpg-agent
│ ├─gpk-update-icon
│ ├─metacity
│ ├─nautilus
│ ├─nm-applet
│ ├─python
│ └─{gnome-session}
├─geyes_applet2
├─gnome-keyring-d
├─gnome-power-man
├─gnome-screensav
├─gnome-settings-─┬─pulseaudio─┬─gconf-helper
│ │ └─2*[{pulseaudio}]
│ └─{gnome-settings-}
├─gnome-terminal─┬─bash───pstree
│ ├─gnome-pty-helpe
│ └─{gnome-terminal}
├─gvfs-fuse-daemo───3*[{gvfs-fuse-daemo}]
├─gvfs-gphoto2-vo
├─gvfs-hal-volume───{gvfs-hal-volume}
├─gvfsd
├─gvfsd-burn
├─gvfsd-trash
├─hald───hald-runner─┬─hald-addon-acpi
│ ├─hald-addon-cpuf
│ ├─hald-addon-inpu
│ └─hald-addon-stor
├─irqbalance
├─klogd
├─main-menu
├─master─┬─pickup
│ └─qmgr
├─6*[mingetty]
├─mixer_applet2───{mixer_applet2}
├─nm-system-setti
├─nmbd
├─notification-da
├─nscd───8*[{nscd}]
├─ntpd
├─rpcbind
├─smbd───smbd
├─sshd
├─startpar
├─stickynotes_app
├─syslog-ng
└─udevd
20.05.2009
sed ile replace
$ sed s/{eski}/{yeni}/ {dosya_adi} seklinde kullaniyordum.Bu kullanimda sed sonucu bir dosyaya yazmiyor, ekranda gosteriyordu. Ayni dosyaya kaydetmek icinse ciktiyi gecici bir dosyaya yazip sonra o dosyanin icerigini eski dosyaya tasiyordum.Yani:
$ sed s/{eski}/{yeni}/ {dosya_adi} > /tmp/gecici && cat /tmp/gecici > {dosya_adi} && rm -f /tmp/gecici
Peki sed'in i parametresi varken ne demeye ugrasyirdum o kadar??
$ sed -i s/{eski}/{yeni}/ {dosya_adi} ile bu isi kokten cozuyoruz.
Unutmamak lazim, paylasmak lazim
Novell CLA
En sonunda "artik yeter" dedim ve 18 Mayis'ta bu ise muspet ya da menfi son vermeye karar verdim.
Ruya gibi bir haftasonu tatilinin hemen ardindan Pazartesi sabahi Kizilay'a gittim
Ankara'da Atlantik (ABI) sirketini sinav yeri olarak belirledim ve saat 10:45 te Novell CLA maratonuna basladim.
Sinav suresi 120 dakikaydi. Sinavin mantigini anlamam ve tutorialleri takip etmem biraz zaman kaybettirse de, sinavdaki basarimi arttirdigi kanaatindeyim.
Saat 11:25 'te sinavdan ciktigimda , biraz zorlanmis olmakla birlikte mutluydum, artik elimde 600 puan ve PASS belgem vardi.
Dun itibariyle de sertifikam -online olarak- elime ulasti.
" Novell, on authorization from the President and CEO, hereby recognizes you
as a Novell Certified Linux Administrator for successfully completing the certification requirements on
This certificate has been granted as evidence thereof.
"
Artik NCLA oldum ... Hedef NCP ve RHCE
13.05.2009
Linux Sistemlerde ACL'ye hizli bakis
Bildiginiz gibi
uileri@uileri:~> ls -l l*
-rw-r--r-- 1 uileri wheel 1744004 2009-03-28 21:16 libcrypto.so.0.9.6
Seklindeki bir ciktida libcrypto.so.0.9.6 dosyasinin uileri tarafinan yazilip okunabilecegi, wheel tarafindan okunabilecegi ve sistemdeki diger herkes tarafindan okunabilecegini anliyoruz.Yani sembolik olarak soylemek gerekirse dosyanin yetkileri 644 .
Ornegin :
- /var/log/audit diye bir klasorumuz bulunsun. Bu klasorun sahibi uileri:wheel ve modu 700 olsun.
- wheel grubunda uileri,ymuccur ve izgens kullanicilari bulunsun
- istedigim sey izgens kullanicisinin uileri ile birlikte klasore tipki uileri gibi girebilsin, okuyabilsin, yazabilsin. Ancak ymuccur bunlardan hicbirini yapamasin.
# df -h // ile partition yapisina bakiyoruz. /var/log/audit klasorunun hangi partitionda oldugunu buluyoruz. Ornegin /dev/sda6 /var
# vi /etc/fstab // ile filesystem tablosunu edit etmeye basliyoruz. /dev/sda6 /var satirini buluyoruz o satirdaki options kolonuna acl girdisini ekliyoruz ([tab] kolon ayraci, "," ise veri ayracidir)
# acl'yi gerekli yere ekledikten sonra o partitionu yeniden bagliyoruz
# getfacl /var/log/audit //ile dosyanin haklarina bakiyoruz.
# setfacl -m user:izgens:rwx /var/log/audit // ile izgens kullanicisina dosyaya erisim hakki veriyoruz.
Isimiz bu kadar kolay, istersek kullanici yerine grup yonetimi de yapabiliriz (setfacl -m group:users:rwx /var/log/audit gibi)
Partitionu Reboot'a gerek kalmadan yeniden baglamak
mount -o remount {partition'un /etc/fstab girdisi}
Ornek:
mount -o remount /mp3
ya da
mount -o remount /dev/mapper/vg0-mp3
12.05.2009
32 bit yüklü işletim sisteminde 4gb'tan büyük memory'i adresleme problemi
Bu sorunun çözümü için;
kernel-PAE-devel-2.6.18-8.el5.i686
kernel-PAE-2.6.18-8.el5.i686
Paketlerini sistem üzerine yüklememiz gerekiyor.
#rpm -ivh kernel-PAE-devel-2.6.18-8.el5.i686
#rpm -ivh kernel-PAE-2.6.18-8.el5.i686
Bu işlemden sonra sistemi yeni kernel'den açmak için grub menusunu edit etmemiz gerekiyor.
#vi /boot/grub/grub.conf
Burada default degeri "0" olarak degiştiriyoruz.
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-8.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-8.el5PAE ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-8.el5PAE.img
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-8.el5.img
Son olarak
#reboot
Peki bu PEA nedir?
Physical Address Extension (PAE) is a feature of x86 and x86-64 processors that enable the use of more than 4 gigabytes of physical memory to be used in 32-bit systems, given appropriate operating system support. PAE is provided by Intel Pentium Pro and above CPUs (including all later Pentium-series processors except the 400 MHz bus versions of the Pentium M),
as well as by some compatible processors such as the Athlon and later models from AMD.
Daha detaylı bilgi için
http://en.wikipedia.org/wiki/Physical_Address_Extension
Notice: Use of undefined constant OPER_MODE_NATIVE - assumed 'OPER_MODE_NATIVE' in
"Notice: Use of undefined constant OPER_MODE_NATIVE - assumed 'OPER_MODE_NATIVE' in /cacti-0.8.7d/include/top_header.php on line 27 " seklinde bir hatayla karsilastik.
Bu hata bildiginiz gibi bu sabitlerin tanimlanmamis olmasindan kaynaklaniyor. Hatanin cozumu ise:
Once top_graph_header.php dosyasini acmak, dosyanin en ustune hemen
define('OPER_MODE_NATIVE', 0);
define('OPER_MODE_RESKIN', 1);
define('OPER_MODE_IFRAME_NONAV', 2); // Bunun icin hata almamistim gerci ancak durmasi bir sorun yaratmaz
satirlarini eklemek, ayni satirlari top_header.php dosyasinin basina da eklersek sorunu tamamen cozmus oluyoruz.
Kaynak : http://forums.cacti.net/about31126.html
bash: /bin/cp: Argument list too long
"bash: /bin/cp: Argument list too long"
Aslinda bu sorun Linux - belki de Unixlerde de, ancak denemedim- cp/mv komutunun calisma biciminden kaynalaniyor.
cp komutu aslinda su sekilde calisiyor.
$ ls a*
a.bz2 a.gz a.tar
$ cp a* /tmp
komutunu verdigimizde isletim sistemi ilk once komut dizinini kendi icerisinde acik acik yaziyor, soyleki:
$ cp a.bz2 a.gz a.tar /tmp seklinde
yani aslinda burdan soyle bir sonuc cikiyor. Diyelim ki:
$ ls a*
a.bz2 a.gz
$ cp a*
komutunu verdigimizde aslinda target destination vermedigimiz icin sistem hata dondurmesi gerekirken dondurmuyor , peki napiyor ???
Komutu acip :
$ cp a.bz2 a.gz
haline getiriyor. Sonra da a.bz2 dosyasini a.gz ismiyle varolan dosyanin uzerine kopyaliyor
Yukarda anlattigim komutun isletim sistemi tarafindan yorumlanmak icin acilarak calistirilmasindan dolayi, rra klasorundeki rrd dosyalarini kopyalarken "bash: /bin/cp: Argument list too long" hatasi aliyoruz.
Bu hatayi asmak icin yapmamiz gereken sey oldukca basit. Dosyalari ya ust klasoru ile ya da daha akillica bir yol ile -find ya da foir ile- teker teker kopyalamaiz gerekecek.
Dolayisiyla:
$ find {rra_klasoru_pathi} -type f -exec cp {target_pathi} {} \; -print komutunu kullanmamiz gerekiyor.
11.05.2009
ifconfig ile MAC adres degistirme
Ornek :
ifconfig eth0 hw ether 00:Ba:14:44:ef:ba
8.05.2009
Solaris 10 Uzerine SNMP ayari
Solaris 10 uzerinde 2 tane SNMP Daemonu geldigini farkettim bugun.
Bunlardan ilki :
Konfigurasyon dosyasi (snmpd.conf) /etc/snmp/conf/ altinda olan ve SUN Solaris icin Sun Microsystems tarafinda gelistirilmis olan snmpd,
Ikincisi ise :
Konfigurasyon dosyasi (snmpd.conf) /etc/sma/snmp altinda olan bildigimiz Net-SNMP.
Bugun tecrube ettim ki, Cacti sistemi Sun'in SNMPD si ile ne yazikki konusamiyor. Sorunsuz calisacak Cacti-Solaris icin kullanmamiz gereken SNMPD server Net-SNMP olmali.
Bu isi cozmek de kolay. Su sekilde:
Oncelikle :
svcs svc:/application/management/sma:default
komutu ile servisin calisip calismadigini kontrol ediyoruz.
1. Eger calisityorsa durduruyoruz.
2. # vi /etc/sma/snmp/snmpd.conf dosyasini " bu " yazimda anlattigim gibi edit ediyoruz.
3. svc:/application/management/snmpdx:default servisinin durumunu kontrol ediyoruz. Calisiyorsa durduruyoruz
4. Son olarak svcadm enable svc:/application/management/sma:default ile sma servisini baslatiyoruz.
Boylece sistemimiz artik Cacti arayuzune eklenebilir duruma gelmis oluyor.
Sun xVM Ops Center Egitimi
Uzun suredir ogrenmeye calistigim SAI'den de egitimine halen devam ettigim Sun xVM Ops Center Egitimini Sun Online Egitim Merkezinde ucretsiz olarak sunmaya baslamis.
Herkese oneririm.
Linki : http://www.sun.com/training/catalog/courses/WVM-3356.xml
Kaynak: http://blogs.sun.com/stevewilson/
Konsol Kisayollari
!! - son komutu calistir. Ornek:
$ rpm -ivh xxx.y-z-k.0.1.rpm
$ sudo !! ( = sudo rpm -ivh xxx.y-z-k.0.1.rpm)
ya da
$ ./deneme.sh
$ vi !! ( = vi ./deneme.sh )
! - komutu en son parametresi ile calistirir. Ornek:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/hosts
# !vi ( = vi /etc/sysconfig/network-scripts/ifcfg-eth0 )
!{NUM} - History'deki o satiri calistirir. Ornek:
# !145 (.bash_history deki 145. satiri yeniden calistirir)
7.05.2009
Solaris 10'da network'u restart etmek
Solaris 10 ile birlikte sun firması servisleri Service Management Facility (SMF) adıyla yeni bir yapıya geçirdi.
Solaris 10'da network'u restart etmek istediginizde (KANKAM gibi :) ),
svcadm restart svc:/network/physical
komutunu vermeniz yeterlidir...
SMF KOMUTLARI
svcs | Reports service status |
svcadm | Used for service management: e.g., starting, stopping and restoring services |
svccfg | Used to list properties of a service |
svcprop | Used to list properties of a service |
inetadm | Used to manage inetd services |
Shutdown Script
#!/usr/bin/bash
function hp_ux
{
echo "HP FONKSIYONU"
echo "$1 kapatiliyor">>tamamlanan.txt
ssh -l root $1 "shutdown -h -y now" 2>/dev/null
}
function her_makina
{
if [ $# -ne 1 ]
then
echo "Hedef verilmemis"
exit 1
fi
OS_OGREN=`ssh -l root $1 "uname" 2>/dev/null`
case "$OS_OGREN" in
'HP-UX')
echo "makina HP-UX"
hp_ux $1;;
'SunOS')
echo "makina SunOs"
echo "$1 kapatiliyor">>tamamlanan.txt
ssh -l root $1 "init 5" 2>/dev/null
;;*)
echo " BILINMIYOR $OS_OGREN"
echo "$1 ulasilamiyor">>ulasilamayan.txt
;;
esac
}
echo "***********************************"
echo "******Remote Shutdown Script*******"
echo "***********************************"
echo ""
echo " Lutfen Lokasyon Secin \c "
echo ""
echo ""
echo " 1-) X Lokasyonu"
echo " 2-) Y Lokasyonu "
echo "3-) Z Lokasyonu"
echo ""
echo ""
echo "***********************************"
echo ""
echo " Seciminiz:"
read sec junk
if [ "$sec" -eq 1 ]
then
file="x.list"
echo "$file isleme aliniyor"
fi
if [ "$sec" -eq 2 ]
then
file="y.list"
echo "$file isleme aliniyor"
fi
if [ "$sec" -eq 3 ]
then
file="z.list"
echo "$file isleme aliniyor"
fi
x=0
while [ $x -lt $(cat $file wc -l) ]
do
let x=x+1
her_makina $(head -n $x $file tail -n 1)
done
exit 0
sendmail max. client sorunu
rejecting connections on daemon MTA: 15 children, max 15
seklinde hatalar almaya ve 25 port acik oldugu ve servis kostugu halde mail yollayamamaya basladik.
Sorunun cozumu ise su sekilde:
# grep -i child /etc/sendmail ile MaxDaemonChildren satiri bulunur
Buradaki (default 15 gelen satir) tercihen 100 yapilir
Son olarak da
# killall sendmail
# sendmail -bd -q30m ile sendmail servisi yeniden baslatilir
lsof
Normalde acik olan dosyalari gosteren lsof'un i parametresi ile connectionlari da gorebiliyormusuz.
Ornek Kullanim:
$ lsof -i
Kaynak: http://www.commandlinefu.com/commands/view/2110/show-established-network-connections
6.05.2009
Partition'un Yaratildigi Zaman Bilgisi
# df / | awk '{print $1}' | grep dev | xargs tune2fs -l | grep create
Kaynak: http://www.commandlinefu.com/commands/using/tune2fs
Linux Sistemlerde Acilista fsck YapMAMAsinin Saglanmasi
Bu durumda sistemin ontanimli degerleri isiginda sistem acilista fsck'e girecek ve acilis suresi uzayacaktir. Kisisel olarak fsck'i cogunlukla oneririm ancak bazen gercekten yapacak durumda olmayabiliriz.
Bu durum icin kullanilacak komutumuz "tune2fs" olmali.
Kullanimi ise cok basit:
# tune2fs -T now partition (/dev/sda1)
Bu sekilde partirion ,o anda fsck'ten gecmis gibi imlenecek ve isletim sistemi yeniden baslarken fsck yapmayacaktir.
Sistemin hicbir partition icin fsck yapmamasini saglamak icin her partition icin (swap haric) tune2fs yapmamiz gerekiyor, UNUTMAYALIM
Sendmail ile Kuyruktaki mailleri yollamak
Partition Dolulugu Uyarisi
Temelde script Solaris uzerindeki partitionlar icin doluluk bilgisini mail atiyor. Biraz degisiklik yapip paylasmak istedim:
#!/bin/sh
df -k | grep team | while read satir ; do
deger=`echo $satir | awk '{ if ( $5 > 95 ) print "b"; else if ($5 > 90) print "k"; }'`
if [ "$deger" = "b" ] ; then
df -k | grep team | mailx -s "\"`echo $satir | cut -d/ -f6`\"Sistem uzerinde %95 uzeri doluluk var!" mailadresi1@mailadresi.com,mailadresi2@mailadresi.com,mailadresi3@mailadresi.com
echo "`date` [ %95 uzeri doluluk ] : $satir" >> /tmp/doluluk.log
elif [ "$deger" = "k" ] ; then
df -k | grep team | mailx -s "\"`echo $satir | cut -d/ -f6`\" Sistem uzerinde %90 uzeri doluluk var!" mailadresi1@mailadresi.com,mailadresi2@mailadresi.com,mailadresi3@mailadresi.com
echo "`date` [ %90 uzeri doluluk ] : $satir" >> /tmp/doluluk.log
fi
done
22.04.2009
too many open files
Linux'te tanımlı olan maksimum açılabilir dosya sayısı limiti aşıldıgında,
oluşan "too many open files" hatasının çözümü oldukça basit;
oncelikle open files limitimizin ne olduguna bakıyoruz
ulimit -n
1024
bu degeri "4096" 'ya çıkarmak için;
/etc/security/limits.conf dosyasının içine
#for too many open files
* soft nofile 4096
* hard nofile 4096
/etc/sysctl.conf dosyasının içine
#for too many open files
fs.file-max=4096
sistemi restart etmeden degişikliklerin aktif olması için
sysctl -p
komutu çalıştırılır...
21.04.2009
Konsol'da Proxy
$ vi ~/.bashrc
Bu dosyanin sonuna asagidaki girdileri eklemektir:
export http_proxy={kullanici_adi}:{sifre}@{proxy}:{port}
export https_proxy={kullanici_adi}:{sifre}@{proxy}:{port}
export ftp_proxy={kullanici_adi}:{sifre}@{proxy}:{port}
Yalniz unutmamak gereken bir nokta : sifreyi plain text olarak yazmali ve icinde @ bulundurmamaliyiz, zira @ konsol proxy de ayrac olarak kullaniliyor.
20.04.2009
SUN Satildi
Bu aslina cok sevindirici benim adima.Daha once Linux uzerinde kosturdugumuz OracleVeritabanlarinin performanslarinin Sun Solaris uzerinde,Windows ile Linux arasindaki Performans farki kadar farkli oldugunu duymus ancak tecrube edememistik. Umarim bundan sonra hersey degisir ve artik hem Oracle Sun sistemlere yatkinligini arttirir hem de Oracle kullanacak kisiler SUN sistemlere daha sicak bakarlar.
Ben kendi adima cok sevindim
Kaynak : http://www.sun.com/aboutsun/media/presskits/2009-0420/index.jsp
gcc ile c++ derlemek
C++ bir program yazilmasi gerekyordu, buyuk olcude yazip lden gecirdim, ilginc olan tarafi uzun suredir gcc ile program derlememisim.
Yazdigim c++ kodunu nasil derleyecegimi aramak zorunda kaldim.
En sonunda buldum :
g++ -Wall svural.cc -o svural
:)
17.04.2009
find ile bos klasorleri bulma
Ama find'in parametreleri arasinda bos klasorleri bulabilecegimiz bir parametresi de varmis.
find {arama_yapilacak_yer} -type d ile klasorlistesini alirken, bir de -empty ekliyoruz.
find {arama_yapilacak_yer} -type d -empty
Kaynak : http://www.void.gr/kargig/blog/2009/04/16/delete-all-empty-directories-using-xarg/
cron Yonetimi
Cron islerini yonetirken bunu su ana kadar belli cercevelerde yapiyordum :
$crontab -e // ile cron editorune giriyor ve isleri burda
dakika saat gun ay haftagunu komut
ya da
# vi /etc/crontab // ile cronjoblari yonetiyordum.
Ancak ozellikle gunluk, haftalik vs yonetimler iicn cron'un da kisa yollari oldugunu ogrendim.
Su sekilde :
string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Kaynak :http://www.howtoforge.com/a-short-introduction-to-cron-jobs
14.04.2009
MailScanner
Eskiden kurdugum bir mail sunucu uzerindeki mail servisinin mail yollamadigini farkettim ve MailScanner servisini baslattigimda sorunun MailScannerdan /usr/lib/MailScanner/MailScanner/Message.pm kaynaklandigini gordum. Aldigim hata : "/usr/lib/MailScanner/MailScanner/Message.pm" seklindeydi.
MailScanner versiyonum eskimisti:
- # perl -MCPAN -eshell
- cpan > install Bundle::CPAN
- cpan > reload cpan
- cpan > exit
- # perl -MCPAN -eshell
- cpan > upgrade
- wget {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu.rpm.tar.gz}
- tar -xvzf {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu.rpm.tar.gz}
- cd {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu}
- ./install.sh
- /etc/init.d/MailScanner restart
- //Burada bir klasor hatasi aldim
- vi /etc/MailScanner/MailScanner.conf // Bu dosyada Lock stringini aratip /tmp yerine adam akilli bir Lock yeri yaziyoruz. (Yer zaten oneriliyor bize)
- /etc/init.d/MailScanner restart
- mailq |wc -l
- Queue gittikce ufaliyor. Sorun cozuldu :)
MySQL ile Yedekten donme
Yakin zamanda mysql'de procedure ve function'larin yedeklemesi hakkinda ufak bir yazi yazmistim.Bugun bloglari gezerken bir makalede bilmedigim bir yolu okudum. Dogrusu makaleyi yazan eleman MySQL administration islerini hala PHPMyAdmin ile yapacak kadar acemi ama yine de gordugum ufacik bilgiyi paylasayim istedim.
Oncelikle mysql'den yedegi
mysqldump -u{db_user_name} -p{db_user_password} {db_adi} > {yedek_dosyasi.sql} seklinde alinacagini ve
mysql -u{db_user_name} -p{db_user_password} {db_adi} < {yedek_dosyasi.sql} ile restore edilecegini biliyoruz. Ancak eleman soyle yapmis:
- mysql -u{db_user_name} -p{db_user_password} // ile mysql'e baglanmis
- use {db_adi}; // ile veritabanini
- source {yedek_dosyasi_pathi} // ile db yi restore etmis
Kaynak : http://ditio.net/2008/12/07/big-mysql-dump-import/
8.04.2009
SLES ile Squid ile Transparent Proxy
Gecen sene Senol'la birlikte bir calismamiz olmustu.
Yapmamiz gereken sey suydu: Sirket icinde kullanilan Proxy'i kullanamadan cikan farkli Gatewayli makinalar icin transparan bir Proxy sunucusu kurmak ve bu kisilerin o Proxy Sunucusu uzerinden internete erismelerini saglamak, dolayisiyla internet erisimlerini loglamak.
En basta soylemem lazim : Transparent Proxy islemi HTTPS baglantilar icin calismamakta
Simdi Senol'un blog'unda yer verdigi seklinden biraz alintilar yaparak kendi eklemelerimle yontemi anlatacagim.
Biz bu calismayi yaparken SLES 11 daha yoktu dolayisiyla calismayi SuSE 10.2 x86_64 ile yaptik.
Oncelikle calisma icin kullanacagimiz paketler :
iptables
ebtables
squid
bridge-utils
Ancak bridge-utils paketi SLES Medyalarindan gelmiyor. Dolayisiyla bridge-utils paketini OpenSUSE Repository den indiriyoruz.Cift arayuzlu sunucumuzu bridge olarak kullanarak ebtables ile gelen paketi Layer 2 den Layer 3 e cikarip ,HTTP trafigini sonra da iptables ile Squid'e yonlendirecegiz. Squid ile de loglayip isimizi bitirecegiz.
// BRIDGE Bolumu
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
// BRIDGE Bolumu
Burada iki interfacei bridge yapiyoruz.Sonra da bridge arayuzune IP veriyoruz.
ifconfig br0 192.168.1.1 netmask 255.255.255.0 up
Sonra da HTTP trafiklerini Layer 3 e tasiyoruz
ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80
-j redirect --redirect-target ACCEPT
Son olarak da Layer 3 e tasidigimiz 80. port trafigini proxy ye yoneldeniriyoruz.
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Gelen trafigi loglayacak Squid konfigurasyonlari asagida verilmis.
Bu kadar :)
Squid 3 versiyonu için /etc/squid.conf dosyası aşağıdaki gibi düzenlenebilir:
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
- acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
acl lan src 192.168.1.0/24
http_access allow localhost
http_access allow lan
- http_access allow all
http_reply_access allow all
icp_access allow all
visible_hostname suseproxy.domainadi.com
always_direct allow all
coredump_dir /var/spool/squid
Kismen Alinti : http://senoldemirkol.wordpress.com/2008/11/17/squidi-transparent-bridge-olarak-calistirmak/
PAM ile kullanici sifre force islemleri
Kisa bir bolumunu alinti yapacagim makaleyi siddetle okumanizi oneririm.
Enforce strong passwords
In this experiment we’ll use the pam_passwdqc module on the password stack to ensure that users choose strong passwords. (Note that this will only make any difference when users set or change their passwords; it won’t winkle out weak passwords that are already set.)
What you need to do: Red Hat already uses the pam_cracklib module to check password strength in the common system-auth file. We simply need to replace the pam_cracklib line with a line that looks something like this:
password requisite pam_passwdqc.so min=12,10,10,8,6 retry=3
Figure 3 above attempts to illustrate the parameters to pam_passwdqc. The test of a password’s strength is based on its length, but you can set different minimum lengths depending on the number of character classes in your password. There are four character classes: lower case, upper case, digits, and other characters. Upper case letters used as the first character and digits used as the last character of a password don’t count.
How to test it: Try changing your password to various strings; in each case count the number of characters and the number of character classes in the string and predict if it should be an acceptable password. There are a few examples in the table belowKaynak: http://tuxtraining.com/2009/04/07/how-pam-works
1.04.2009
Metasploit Kapatildi
ve www.Metasploit.com kapatildi.
(1 Nisan nedeniyle yapmis vicdansizlar :) cok guldum. Ama salakligim da gorunsun istedim....)
SMT nin kullanisli komutlari ve islevleri
KOMUT | İŞLEV |
smt-list-products | SMT servisinin desteklediği Ürün listesini gösterir |
smt-catalogs | Kataloglanabilecek ya da kataloglanmış ürünlerin tümünü gösterir |
smt-catalogs -o | Sadece kataloglanmış ürünlerin tümünü gösterir |
smt-catalogs –e | Güncelleme izlenecek yeni ürün girilmesini sağlar. Katalog numarası ile ilgili katalog, a ile tüm ürünler yansılanır |
smt-catalogs –d | Güncellemesi artık izlenmeyecek ürünlerin listeden çıkarılmasını sağlar. Katalog numarası ile ilgili kataloğun, a ile tüm ürünlerin yansılanmasından vazgeçilir |
smt-list-registrations | SMT sistemine tanıtılmış masaüstü ya da sunucu sistemlerin hepsini listeler. |
smt-delete-registration | SMT sistemine tanıtılmış masaüstü ya da sunucu sistemlerin silinmesini sağlar. Kullanımı smt-delete-registration {Unique ID} şeklindedir. |
smt-report | SMT sistemine bağlanan sunucu ve masaüstlerinin lisans sürelerini, kullanım süresi dolmuş lisansları listeler |
smt-mirror –d | SMT sistemine kaydedilmiş tüm katalog güncellemelerinin indirilmesini sağlar |
Daha fazla bilgi icin:
SLED 11 uzerinde Winbind ile AD
Calistigim sirket icin Linux masaustu sistemleri AD uzerinden kimlik dogrulamasi yapacak sekilde konfigure etmistim. Ancak SLED 10.1 - 10.2 surumlerinde su sekilde bir sorunla karsilasmistim;
Makinayi reboot ettikten sonra, kullanici adi ve sifre giris ekraninda domain'i goremiyorduk. Bunun uzerine Winbind ve Samba servislerini yeniden baslatan scriptler duzenleyerek sorunu cozmeye calismistim, cunku Novell'den Alper de bu konuda yorum yapamamisti.
Ancak gectigimiz hafta SLES/SLED 11 kullanmaya basladim ve bircok yeni ozellik ve hata giderilmesinin yaninda bu sorunun da cozuldugunu gordum.
Su anda sistem "tipki bir Windows makina gibi" AD yi yabancilamadan Domain Membership gorevini ustleniyor ve $ id kullanici adi ciktisi ise gercekten AD kullanicisinin primary ve yan gruplari seklinde gorunuyor.
Redhat ile Hot-Plug CPU
Cok guzel icerikler ve Tipler yollayabiliyorlar.
Ornegin bugun cok begendigim bir trick yollamislar. Paylasiyorum:
Problem
You want to dynamically enable or disable a CPU on a running system.
Solution
Red Hat Enterprise Linux 5 supports the cpu-hotplug mechanism, which allows for CPUs to be dynamically disabled and re-enabled on a system without requiring a system reboot.
In order to disable a CPU core in a running machine, use the file /sys/devices/system/cpu/cpuX/online.
The following command will disable a CPU:
# echo 0 > /sys/devices/system/cpu/cpuX/online
Where X is the ID of the CPU as determined from /proc/cpuinfo.
To re-enable the CPU, run:
# echo 1 > /sys/devices/system/cpu/cpuX/online
Example:
The following output from /proc/cpuinfo shows two processors on a system:
root@xen # grep "processor" /proc/cpuinfo
processor : 0
processor : 1
In order to disable CPU 1, echo "0" to /sys/devices/system/cpu/cpu1/online:
root@xen# echo 0 > /sys/devices/system/cpu/cpu1/online
cpu0/ cpu1/
Check /proc/cpuinfo to see if the cpu is disabled .
root@xen # grep "processor" /proc/cpuinfo
processor : 0
Notice that there is now only one processor shown (CPU 0) instead of two.
Note: There are some architectures in which a CPU cannot be disabled due to a dependency on a certain CPU. In such cases you will notice that the /sys/devices/system/cpu/cpuN/online file is missing.
For further details on CPU hotplugging, see this file:
/usr/share/doc/kernel-doc-2.6.18/Documentation/cpu-hotplug.txt
The documentation files are in the kernel-doc package, which can be installed from RHN.
Alinti: http://kbase.redhat.com/faq/docs/DOC-15523?sc_cid=70160000000HlgQAAS