Salı, Ocak 29, 2019

IT Altyapı'da agile kullanılmaz! (mı?)

Tamamen konu dışı birşeyler yazmak istiyorum bugün. Aslında ilişkisini de en sonda biraz kuracağım.

Son günlerde her yerde IT çalışanları için bir Agile (Çevik) dönüşüm furyası gidiyor. Çalıştığım şirkette de dahil olmak üzere, herkes "Agile"ı cümle içinde kullanmak için gereğinden fazla (ve çoğu zaman gereksiz) bir çaba içine giriyor. :-) Bir diğer çokça duyduğum ve asıl yazmama sebep olan kısım ise "Agile, -sadece- bir yazılım metodolojisi". Aslında epeyce bir süre ben de bu fikre sahiptim ve inceden de gıcık olmuyor değildim. :-) Yıllarca "IT Altyapı" hizmeti vermiş biri olarak neredeyse "oyun dışı" kalmak gibi geliyordu. Fakat itiraz etmek, yok saymak, her zamanki gibi bizi uçuruma süreklerdi. Önce ne olduğunu araştırmaya başladım. Biliyorum, öğrendim kesinlikle demiyorum ancak öğrendiklerimi birleştirdikçe de işin sadece "yazılım" ile bitmeyeceğini de gördüm. Demek ki artık inceden "sinir olmak" değil "içine de girmek" zamanı gelmişti. Ayrıca metodolojinin "uygulaması" kısmı ile hiç ilgilenmedim. Kanban, scrum vs. bambaşka konular.

Hikayenin ardından biraz da neleri anlatmaya çalışacağımın girişini yapıp başlayayım; Amacım konunun anlaşılması olduğu için önce kısaca benim agile'dan anladığım ile başlayacağım. Agile koçu olmadığım, özel hiç bir eğitim de almadığımı* düşünürsek sanırım epeyde düşük seviyede bir tanımlama olacak. Sonra da bu "metodoloji" içinde "IT Altyapı" hizmetleri neden gerekli, nasıl kullanılıyor (benim bildiklerim tabi) ve nasıl kullanılabilir üzerine biraz kafa yormayı düşünüyorum. Yanlışlarımı, eklenmesini düşündüklerinizi lütfen yorumlara ekleyin ki gelişsin bu yazı da...

"Agile nedir?" diyerek başlayacağız dedim. Benim öğrendiklerim ve anladıklarım çerçevesinden bakarsak, Agile (çevik), aslında bir çeşit proje yönetim metodolojisi. Daha önceleri "waterfall" denen metodoloji tercih edilirken, son yıllarda daha hızlı çözüm üretmek temeli üzerine kurulmuş bir metodoloji. (Bu açısından bakarsak özellikle Türklerin yadırgamayacağı bir model :-) ,


Üstteki şema için uğraşamadım ve internetten buldum. İngilizce bu sebeple. Ancak,iki modeli kıyaslamak için çok öğretici. Kısaca üstünden geçersek, waterfall modelinde bir amaca ulaşmak için (bu ürün de olabilir, bir işin tamamlanması da aslında projeden bahsediyorsak) önce planlıyoruz, hazırlıyoruz, testini vs yapıp, mükemmele ulaştığından emin olduğumuzda sonuca erdiriyoruz. Bu da günümüz "sabırsız" insanı veya Y-Z kuşağı için kabul edilemez görünüyor. Aslında işte Agile Metodolojisi de tam burada farklılaşıyor. "Sabırsızları tatmin etme ve adım adım en iyiye..." Agile süreçlerinde ise mükemmel ürünü çıkarmadan önce veya projeyi mükemmel sonuca erdirmeden önce ufak ufak alıştırma sürümleri ile hem geri dönüş alabiliyor (bu dönüşler sayesinde aslında mükemmele daha da doğru yaklaşılabiliyor), hem de "baba adamlar birşeyler yapıyor" dedirtmiş oluyor ve az önce bahsettiğim o "sabırsızlar" biraz törpülemiş oluyor. (Hatta aslında dolaylı olarak test sürecine de dahil olmuş oluyorlar.)





Daha da uzakmadan, kısaca süreç nasıl olmalı diyerek girişi kapatıp asıl konuya geleceğim. (Bu resim de internetten bulduğum bir alıntı) Agile süreçlerini de planlarken de, hızlı olacağız derken, ara ürünlerin amaçsız, işe yaramaz ve tatmin etmez olmamasına da dikkat etmek gerek. Üstteki örnek her ne kadar "agile" gibi görünse de "işe yarar" ürün en sonda çıkıyorsa, hiç bir anlamı kalmıyor. Ancak alt örneği incelersek, kaykay ile pek tatmin olunmasa da, adım adım işe yarar ürünler çıktıkça memnuniyet artıyor ve aslında tam da istendiği gibi ilerliyor. (Bu arada yolcunun  da yolda kalmadığına, başlangıçta zor da olsa hedefine bir araç ile gidebildiğine dikkat etmek gerek)

Aslında bu çerçeve ile bakmaya başlarsak, ilk başta da dediğim gibi, sanki hep bir hedefe yönelim var. IT için ürün "yazılım" hedef "müşteri/kullanıcı" ise "Agile IT Altyapı için gerekli değil" gibi bir sonuç akla geliyor. Ancak, altyapı, -adı üstünde- sağlam olmadığında  (kış lastiğin yoksa), hızlı gitmeye uygun değilse (F1 lastikleri gibi değilse) istenildiği kadar agile (hızlı/çevik) olmaya çalışılsın çakılmaya mahkumdur. İşte tam da bu noktada aslında F1'deki "pilot mu otomobil mi?" tartışması açılır ki gerçek yanıt "ikisi de" olmalı galiba. Sadece bu sebeple, "Hayır Agile sadece yazılım için değil, tüm IT (aslında tüm çalışma birimleri de denebilir) içindir."

Ana fikrimizi çürüttük (en azından öyle sanıyorum :-), peki altyapı olarak agile dönüşüme nasıl destek veriyoruz şu an? İşte burada da en çok "Devops" kavramı çıkıyor karşımıza. Aslında bu kavram da bizi yıllardır kopuk yaşayan (veya yaşadığı sanılan demek daha doğru olur) yazılımcılar ile altyapıcıları birbirine daha çok yaklaştırıyor. Bu da kısaca şöyle anlatılıyor; Yazılım tamam, siz kendi geliştirme ortamınızda işleri bitirdiniz, ancak canlı ortama sürmek için altyapı kısmından destek istiyorsunuz. Eğer altyapıyı anlayan bir yazılımcı varsa veya yazılım gereksinimleri üzerine kafa yormuş bir sistem yöneticisi, o zaman şanslısınız. Ancak bu durumda bile "deployment" süreci çok can sıkıcı ve uzun zaman alabiliyor. Sadece işletim sisteminin update versiyonu bile bazen günler alabiliyor veya bir Java versiyonu. Bir yanda sabırsız müşteri ve yönetici, diğer yanda yazılımcı ve sistem yöneticisi birbirlerini yiyorken, agile veya kanban kimsenin aklına gelmiyor. İşte devops (DEV-eloper OP-eration-S) süreçleri sizin daha hızlı ürün ortaya koyabilmenizi sağlıyor. İşte buradaki OPS aslında altyapı oluyor. (Yani biz :-) )

Deployment (yazılımı canlı ortama taşıma) sürecini daha hızlandırabilmek için de gelişen bir çok otomasyon teknolojileri var. Container teknolojileri (örnek Docker) , versiyon takip sistemleri (örnek git), yazılım dağıtım otomasyonları vs.İşte bu konular da "IT Altyapı çalışanları" için yeni bir yol haritası olmalı. Tabi aynı zamanda "Agile" olacağım diyen şirketler için de...

Sonuç olarak bakarsak, Agile olmamış bir altyapı ile isteseniz de agile proje çıkaramazsınız. Tam da bu sebeplerle "Agile sadece yazılımcılar için kullanılan bir metodoloji değildir..."

* Bu yazının %95'ini yazdığımda hiç eğitim almamıştım ancak yakın zamanda 2 günlük keyifli bir agile eğitim aldık. :-)



Pazar, Kasım 18, 2018

"ChromeCast Stream with mkChrome" Python app



Bir önceki post'ta bahsettiğim Phyton uygulamasını da aşağıda paylaşıyorum. Aklımda uygulamanın tam halini koymak vardı aslında. Çünkü "webcast" ve "filecast" seçenekleri de var. Ancak en basit haliyle paylaşmak daha anlaşılır olması için mantıklı geldi.

Uygulamanın çalışması için mkChrome kurulu olmalı.


from tkinter import *
window = Tk()
window.geometry('450x300')
window.title("ChromeCast Stream with mkChrome")


def stream():
    link = txt.get()
    tik = Label('window,text=link')
    tik.grid(column=0, row=4)
    command = "mkchromecast -y " + link + " --video"
    import os
    os.system(command)

lbl = Label(window, text="Youtube Link:")
txt = Entry('window,width=20')
btn = Button(window, text="Stream to ChromeCast", command=stream)

lbl.grid(column=0, row=0)
txt.grid(column=1, row=0)
btn.grid(column=0, row=1)

window.mainloop()

Perşembe, Kasım 15, 2018

Egemen, Ubuntu ve Chromecast hikayesi

Merhaba,
Ne kadar çok zamandır ara vermişim. Kendimden de utandım desem yeri var.
Aslında, bunca yıllık ölü toprağını üstümden atmamı sağlayan, yeniden nefes aldım dedirten hikayeyi yazmaya geldim.
Blog adı Aylin-ux ama galiba artık burada "Egemen" hikayeleri olacak gibi. Eski laptopa merak saldı son günlerde. Pek de kullanmadığımdan içinde yarım yamalak çalışan bir Windows vardı, Madem merak saldın adam gibi birşey kullan/öğren diyerek geçenlerde Ubuntu kurduk. Kurduk diyorum çünkü "kuralım" dedikten sonra günlerce "baba ne zaman kuracağız?" diye gezindi çevremde. Eski laptop olunca da çeşitli donanımsal sorunlar da yaşadık iş biraz uzadı. Ancak sonunda kurduk ve artık Linux kullanmaya başladı. (Aklıma geldi; yıllar önce SDÜ'de İnternet Haftası için yaptığımız bir etkinliğe rahmetli Mustafa Akgül Hoca gelmişti ve bir Linux sunumum vardı. "Linux zor diyorlar, ne alakası var.." diyerek sahneye İsmail Hoca'nın oğlu Şerif Ali'yi çıkarmıştım. (O da şimdi Bilgisayar Mühendisliği okuyor) o zamanlar okuma bile bilmiyordu. 5-6 yaşında. Birkaç şey yapmıştı sahnede.) Neyse ya amma uzattım. Yazacak anlatacak ne çok şey var. (Yaşlanma belirtileri vol:1)
Ubuntu kurduk, Egemen hayatından memnun, "Ubuntu Software"  ile istediği programları indiriyor, hatta bazen alakasız birşey indiriyor anlayamıyor çünkü oyun değil. Ama inatla ne olduğunu çözmek için başımın etini yiyor. Minecraft'a kadar hemen herşeyi bulduk alışık olduğu.
Ancak ip geçen hafta sonu koptu. En sevdiği şeylerden birisi evdeki "chromecast" ile youtube'da bulduğu videoyu TV'ye aktarmak. Ancak ubutu software içinde chrome yok. Başta hiç aklıma da gelmedi gidip sayfasına bakmak. (Bazen basit şeyler için gözümüz kör oluyor ve zora yöneliyoruz çok teknik düşünmekten**). Google'dan "how to stream from ubuntu to chromecast" diye aradım. Oradan da (doğal olarak) başka bir uygulama  buldum. "mkchromecast" diye python ile yazılmış bir uygulama. Ancak sorun şu; uygulama komut satırında. Çok basit bir komut ama Egemen'e öğretmek zor. (Anında ezberler gerçi o da ayrı konu). Bir süredir ben de phyton ile uğraşıyorum, aklıma bunun için bir GUI uygulama yazmak geldi. Kabaca, Egemen istediği bir videonun linkini kopyalasın, yapıştırsın ve TV'ye aktarılsın.
Daha önce hiç python'da GUI yazmamıştım. Hemen onu araştırdım. Çok zor değil zaten. Bir kaç saat içinde basit programım hazırdı. Böylece GUI dünyasına da el atmış oldum. Ama asıl paylaşmak istediğim; suyun altında durup (ben en fazla 4-5 sn. durabiliyorum gerçi)  kafanı çıkardığında deriin bir nefes alırsın ya, işte tam da öyleyim. OOoohhhhhhh....

Uygulama hakkında detayları ayrı bir post olarak atacağım. Hem biraz elden geçirmek de istiyorum yayınlamadan önce. Zaten eksikleri de çok. Ama şu an çalışıyor. Heyecanımı paylaşmak için yazdım. Ancak bir ekran görüntüsü ile bu yazı bitsin. ;-)

** Not: Bu arada yazmayı unutmayayım, Ubuntu için Chrome var. Chrome web sayfasından download diyerek kolayca kurulabiliyor. (deb paketi indirilerek) Ayrıca chromecast ile de bağlantı kurabiliyor. Benin uygulamam hem öğrenme/proje amaçlı oldu, hem de dediğim gibi nefes içindi... ;-)


Çarşamba, Ekim 30, 2013

CentOS 5.5 ile DC yapmak


Sonunda CentOS 5.5 ile Domain kontroller yapmak makalesini bitirdim. Çok uzun süründü elimde garibim ancak dökümanı yazmak için yeniden kurulum yeninden ayar yaptım. Çalıştığından eminim hatta config dosyalarını da ekledim.

Herkese hayırlı olsun.

Not: Bu belge kaynak göstermek kaydıyla kullanılabilir.


CentOS 5.5 ile Domain kontrol yapmak [pdf dosya indirmek için tıklayın]

Ayar dosyaları [rar dosya indirmek için tıklayınız]

Pazartesi, Aralık 12, 2011

Bacula yedekleme sunucusu kurulumu

Bacula yedekleme yazılımını bir süredir araştırıyorum. Aslında son derece güzel, kullanışlı ve bir o kadar da yetenekli bir yazılım. Open Source olması da cabası. :) Tek sorun ben fazla Türkçe kaynak bulamadım. Bu sebeple tarihe not olsun diye bu dökümanı yazıyorum :)
Kendi denemelerimde disk üzerine, iSCSI üzerinden NAS'a ve LTO-2 kartuşa backup almayı başardım. Zaten disk üzerine backup almak en kolayıyken, NAS ve LTO kartuşta dikkat edilmesi gereken 1-2 nokta var. Onları da sonraki dökümanlarda (umarım) yazacağım.
Bacula Nedir?
Önce Bacula nedir ile başlayalım. Bacula network tabanlı, açık kaynaklı yedekleme yazılımıdır. (http://www.bacula.org) Çok geniş bir yelpazede farklı ortamlara yedek alabilir ve yedekten geri dönüş işlemi gerçekleştirilebilir. Kolay bir yönetim arayüzü olduğu gibi konsol üzerinden de komutlar aracılığı ile backup/restore prosedürü, aktif işler vs. yönetilebilir.
Bacula Nasıl Çalışır?
Network tabanlı olması sebebiyle sunucu/istemci mimarisi üzerine kurulmuştur. Bacula sunucusu yedek alma prosedürünü ve yedek alınan ortamı yönetir. Bacula Server, üzerindeki veya başka bir sunucudaki veritabanı üzerine backup kayıtlarını katalog olarak kaydeder. Bu sayede de dosya/gün/saat bazında geri dönüşü kolaylaştırır. Veritabanı olarak MySQL, PostgreSQL veya SQLLite kullanılabilir. Sunucu tarafında Linux, FreeBSD, Solaris ve Open Solaris kullanılabilir. (Windows sunucu çalışması devam ediyormuş)
İstemci kısmında sadece backup'ın aktarılacağı sunucuyla bağlantıyı sağlamak için küçük bir uygulama çalıştırılır. İstemci yazılımı daha geniş bir desteğe sahip. Linux'tan, Windows'a, Mac'a kadar hemen hemen tüm işletim sistemlerinin yedeğini bacula sayesinde alınabilir. Sunucu ve istemci tarafına uyumlu işletim sistemleri için daha ayrıntılı listeyi bu linkte inceleyebilirsiniz: http://www.bacula.org/en/dev-manual/main/main/Supported_Operating_Systems.html
Bacula'yı Anlayalım
Bacula için çalışan temel 3 servis vardır. Bunlar;
Bacula Director Deamon (bacula-dir): Bacula sunucu üzerinde çalışan, yedekleme yapısını, zamanlamasını, nereye yedek alınacağı, hangi istemcilerden yedek alınacağı, istemcilerin kimlik denetlemeleri gibi aslında tüm backup sürecini yöneten servistir. 9101 portundan çalışır.
Bacula Storage Deamon (bacula-sd): Bacula'nın yedeklerin alınacağı ortamını düzenleyen servisidir. Bu servis sayesinde directory ile storage farklı sunuculardan hizmet verebilir. 9102 portunu kullanır.
Bacula File Deamon (bacula-fd): İstemci tarafında çalışan servisidir. Director, istemciye (linux, windows, mac veya diğerleri) bu servis ile ulaşır. 9103 portunu kullanır. (Olası firewall v.s. ayarlarında düzenlenmelidir.)
Ayrıca 2 tane kavramdan bahsetmek gerek;
Bacula Catalog (Database): Yedekleme işleminin kayıt altına alındığı veritabanıdır. Katalogta, kayıt alınan dosyalar, dosyaların yetkileri vs. bilgileri, volume'lerin (doğru sözcüğü bulamadım malesef) kullanım oranları, çalışan işlemler gibi tüm bilgiler kaydedilir.
Bacula Console: Bacula Director ile bağlantıyı sağlayan uygulamadır. Konsol tabanlı veya QT tabanlı grafik arayüzü veya web tabanlı arayüzü vardır.

Aşağıdaki şema bu kavramları daha ayrıntılı anlamak için son derece güzel;
Bacula Kuralım

Ben Bacula kurulumun Centos 5.7 üzerine yaptım. Bu sebeple de rpm source derleme yöntemi daha kolay geldi. Sonrasında source üzerinden yaptığım rpm'leri kolayca kurarak sistemi hazır hale getirdim. Aslında depolarda da bulunabiliyor ancak nedense ben depodan kurduğumda çalışmadı. Çok da araştıramadım itiraf ediyorum. :)

Elimizde standart kurulumuş bir CentOS 5.x olduğunu düşünüyorum. İlk olarak ihtiyacımız olacak bazı paketleri ekleyelim;

yum install autoconf automake e2fsprogs-devel gcc-c++ glibc-devel glibc-headers kernel-devel krb5-devel libacl-devel libgomp libstdc++-devel libtermcap-devel libxml2-devel lsscsi m4 make mt-st mysql mysql-devel mysql-server ncurses ncurses-devel openssl-devel perl-DBI php php-gettext php-pear qt4 qt4-devel redhat-rpm-config rpm-build rpm-devel rpm-libs screen zlib-devel


bu paketler kurulduktan sonra epel reposunu ekliyoruz;
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
* burada güncel ve uygun paketi ilgili linki düzenleyerek yazın. Örneğin 64 bit içn i386 yerine x86_64 gibi.

Ve kalan diğer paketleri kuruyoruz;
yum install qwt qwt-devel wxGTK
Sıra geldi rpm'leri hazırlamaya. Bunun için önce klasörümüzü hazırlayalım; (Bu işlemleri root değilken de yapabiliriz)
cp -r /usr/src/redhat ~/rpm_build
Şimdi bacula'nın src.rpm dosyalarının güncel halini indirelim; (Ben şu adresten 5.0.3 versiyonu indirdim: http://sourceforge.net/projects/bacula/files/rpms/5.0.3/)
şimdilik ihtiyacımız olan dosyalar; bacula-bat-5.0.3-2.src.rpm, bacula-mtx-5.0.3-1.src.rpm, bacula-docs-5.0.3-1.src.rpm, bacula-5.0.3-1.src.rpm.
Gelelim indirdiğimiz source rpm paketlerinden derlenmiş rpm paketleri yapmaya.
rpmbuild --rebuild --define "build_centos5 1" --define "build_mysql 1" --define "build_bat 1" --define "build_wxconsole 1" bacula-5.0.3-1.src.rpm
rpmbuild --rebuild --define "build_centos5 1" --define "build_mysql 1" --define "build_bat 1" --define "build_wxconsole 1"bacula-bat-5.0.3-2.src.rpm
rpmbuild --rebuild --define "build_centos5 1" --define "build_mysql 1" --define "build_bat 1" --define "build_wxconsole 1" bacula-mtx-5.0.3-1.src.rpm
rpmbuild --rebuild --define "build_centos5 1" --define "build_mysql 1" --define "build_bat 1" --define "build_wxconsole 1" bacula-docs-5.0.3-1.src.rpm
Ve paketlerimiz hazır. Gelelim kurmaya. Bunu root olarak yapıyoruz. Önce rpm_build/RPMS/ (veya i386) klasörüne gidiyoruz. Hazırladığımız paketler burada. Kuruluma başlayalım;
rpm -Uvh bacula-libs-5.0.3-1.rpm
rpm -Uvh bacula-mysql-5.0.3-1.rpm
rpm -Uvh bacula-bat-5.0.3-1.rpm
Geldik libbac-5.X.Y.so dosyasına yetki vermeye.
chown bacula:bacula /usr/libXX/libbac-5.0.1.so
* Burada 64 bit için /usr/lib64 klasörü, 32 bit için /usr/lib klasörü kullanılıyor.

Mysql Ayarları
Kurulum tamamlandı. Artık son aşama veritabanı ayarlarını yapmak. Ben mysql kullandığım için mysql ayarlarını veriyorum.
Önce mysql üzerinde bacula kullanıcısının şifresini belirleyelim;
#mysql -u root -p
mysql> set password for 'bacula'@'localhost' = password ('BaculaŞifresi');
msqyl> quit
Yetkilerin verilmesi, database'in oluşturulması, tabloların oluşturulması için zaten script hazır. Önce /usr/lib/bacula klasörüne gidip bu scriptleri sırasıyla çalıştırmak yeterli;

cd /usr/lib/bacula/
./grant_mysql_privileges
./create_mysql_database
./make_mysql_tables
Şimdi database'imizi bacula'ya tanıtalım. /etc/bacula/bacula-dir dosyasında aşağıdaki satırı düzenliyoruz;
Catalog {
Name = MyCatalog
# dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport =
dbname = "bacula"; dbuser = "bacula"; dbpassword = "BaculaŞifresi"
}
Artık servisleri çalıştırma zamanı;
service bacula-sd start
service bacula-dir start
service bacula-fd start
Bacula çalıştı. Şimdi daha da önemli olan ayarlara geldi sıra. O da 2. belgede olacak.

*** Ben bacula-dir servisini çalıştırırken bazı hatalar aldım. Sonrasında araştırmalarım sonucu (nedense) /etc/bacula/bacula-dir dosyasındaki I (Büyük I) harfleri ile problemi olduğunu gördüm. Örneğin DIRPort yazan satırları DirPort olarak değiştirdiğimde problemim çözüldü.

Kaynaklar;

Salı, Aralık 21, 2010

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

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

Komutun kullanımı da çok kolay sadece;

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

# dmidecode --type BIOS

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

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

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


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

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

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

İşte parametrelerin listesi;


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

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

Salı, Kasım 09, 2010

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

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

do

echo $dosya
rm $dosya

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

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

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