Pardus Linux awk Komutu
awk, Linux ve Unix sistemlerinde kullanılan güçlü bir metin işleme ve raporlama aracıdır. Özellikle sütunlu veriler üzerinde işlem yapmak, log dosyalarını analiz etmek, filtreleme yapmak ve rapor üretmek için kullanılır.
Pardus Linux’ta awk, sistem yöneticileri, yazılım geliştiriciler ve siber güvenlik uzmanları için oldukça önemli araçlardan biridir.
awk adı, geliştiricileri olan:
Alfred Aho
Peter Weinberger
Brian Kernighan
soyadlarının baş harflerinden oluşur.
awk Komutunun Temel Yapısı
awk 'koşul { işlem }' dosya
Örnek:
awk '{ print $1 }' dosya.txt
Bu komut:
Dosyadaki her satırı okur
İlk sütunu (
$1) ekrana yazdırır
Örnek Veri Dosyası
Makale boyunca şu örnek dosyayı kullanalım:
Ali 80 90
Ayşe 70 85
Mehmet 95 100
Zeynep 60 75
Dosya adı:
notlar.txt
Sütun Mantığı
awk boşlukları varsayılan ayırıcı olarak kabul eder.
| İfade | Açıklama |
|---|---|
$1 | 1. sütun |
$2 | 2. sütun |
$3 | 3. sütun |
$0 | Tüm satır |
NF | Sütun sayısı |
NR | Satır numarası |
Temel Kullanımlar
1. İlk Sütunu Yazdırma
awk '{ print $1 }' notlar.txt
Çıktı:
Ali
Ayşe
Mehmet
Zeynep
2. Birden Fazla Sütun Yazdırma
awk '{ print $1, $2 }' notlar.txt
Çıktı:
Ali 80
Ayşe 70
Mehmet 95
Zeynep 60
3. Tüm Satırı Yazdırma
awk '{ print $0 }' notlar.txt
Satır Filtreleme
4. Belirli Şarta Göre Filtreleme
80’den büyük notları göster:
awk '$2 > 80 { print $1, $2 }' notlar.txt
Çıktı:
Mehmet 95
5. Metin Arama
awk '/Ayşe/ { print }' notlar.txt
Satır ve Sütun Bilgileri
6. Satır Numarası Yazdırma
awk '{ print NR, $0 }' notlar.txt
Çıktı:
1 Ali 80 90
2 Ayşe 70 85
3 Mehmet 95 100
4 Zeynep 60 75
7. Sütun Sayısını Gösterme
awk '{ print NF }' notlar.txt
Toplama ve Ortalama Alma
8. Sayıları Toplama
awk '{ toplam += $2 } END { print toplam }' notlar.txt
Çıktı:
305
9. Ortalama Hesaplama
awk '{ toplam += $2 } END { print toplam/NR }' notlar.txt
Çıktı:
76.25
BEGIN ve END Kullanımı
| Bölüm | Açıklama |
|---|---|
BEGIN | İşlem başlamadan önce |
END | İşlem bittikten sonra |
10. Başlık ve Sonuç Yazdırma
awk '
BEGIN { print "Not Listesi" }
{ print $1, $2 }
END { print "İşlem Tamamlandı" }
' notlar.txt
Alan Ayırıcı (FS) Kullanımı
Varsayılan ayırıcı boşluktur. Farklı ayırıcı kullanmak için:
11. Virgülle Ayrılmış CSV Dosyası
Örnek:
Ali,80,90
Ayşe,70,85
Komut:
awk -F "," '{ print $1, $2 }' dosya.csv
Sistem Bilgileri İçin Kullanım
12. /etc/passwd Analizi
awk -F ":" '{ print $1 }' /etc/passwd
Kullanıcı isimlerini listeler.
13. Bash Kullanan Kullanıcıları Listeleme
awk -F ":" '$7 ~ /bash/ { print $1 }' /etc/passwd
Disk Kullanımı Analizi
14. df Çıktısını İşleme
df -h | awk '{ print $1, $5 }'
Log Analizi
15. Hata Satırlarını Bulma
awk '/error|ERROR|failed/' sistem.log
Belirli Satırları Seçme
16. İlk 3 Satırı Yazdırma
awk 'NR <= 3' dosya.txt
17. Çift Numaralı Satırlar
awk 'NR % 2 == 0' dosya.txt
Metin Biçimlendirme
18. Düzenli Çıktı Oluşturma
awk '{ printf "%-10s %5s\n", $1, $2 }' notlar.txt
Koşullu İşlemler
19. Geçti/Kaldı Sistemi
awk '
{
if($2 >= 70)
print $1, "Geçti"
else
print $1, "Kaldı"
}
' notlar.txt
Değişken Kullanımı
20. Shell Değişkeni Aktarma
sinir=75
awk -v limit=$sinir '$2 > limit' notlar.txt
awk ile Pipe Kullanımı
Linux’ta çoğunlukla başka komutlarla birlikte kullanılır.
21. ps ile Kullanım
ps aux | awk '{ print $1, $11 }'
22. ls ile Kullanım
ls -l | awk '{ print $9 }'
awk İçindeki Operatörler
| Operatör | Açıklama |
|---|---|
== | Eşit |
!= | Eşit değil |
> | Büyük |
< | Küçük |
>= | Büyük eşit |
<= | Küçük eşit |
&& | VE |
| ` |
Düzenli İfadeler (Regex)
23. Belirli Harfle Başlayanlar
awk '/^A/' dosya.txt
24. Sayıyla Biten Satırlar
awk '/[0-9]$/' dosya.txt
awk Fonksiyonları
| Fonksiyon | Açıklama |
|---|---|
length() | Uzunluk |
tolower() | Küçük harf |
toupper() | Büyük harf |
substr() | Parça alma |
split() | Bölme |
25. Karakter Uzunluğu
awk '{ print $1, length($1) }' notlar.txt
26. Büyük Harfe Çevirme
awk '{ print toupper($1) }' notlar.txt
gawk Nedir?
Pardus Linux’ta genellikle GNU sürümü olan gawk kullanılır.
Sürüm kontrolü:
awk --version
veya:
gawk --version
Performans Avantajları
awk:
Çok hızlıdır
Büyük log dosyalarında etkilidir
Shell scriptlerle mükemmel çalışır
Otomasyon için idealdir
Gerçek Hayat Kullanım Alanları
Sistem Yönetimi
Log analizi
Kullanıcı analizi
Disk kullanımı raporlama
Siber Güvenlik
Şüpheli IP analizi
Log filtreleme
Olay inceleme
Veri İşleme
CSV analizi
Rapor üretme
Büyük veri filtreleme
awk ve sed Farkı
| Özellik | awk | sed |
|---|---|---|
| Sütun işlemleri | Güçlü | Zayıf |
| Metin değiştirme | Orta | Güçlü |
| Matematiksel işlem | Var | Yok |
| Programlama yeteneği | Gelişmiş | Sınırlı |
En Çok Kullanılan awk Kalıpları
İlk sütun
awk '{print $1}'
Son sütun
awk '{print $NF}'
Satır sayısı
awk 'END {print NR}'
Toplama
awk '{sum+=$1} END {print sum}'
Güvenlik ve Dikkat Edilmesi Gerekenler
Büyük log dosyalarında dikkatli kullanılmalıdır
Hassas sistem dosyaları üzerinde işlem yaparken yedek alınmalıdır
Regex kullanımı yanlış filtrelemelere neden olabilir
Sonuç
awk, Pardus Linux üzerinde çalışan en güçlü metin işleme araçlarından biridir. Özellikle:
Sistem yönetimi
Siber güvenlik
Log analizi
CSV işleme
Otomasyon
gibi alanlarda büyük kolaylık sağlar.
Linux öğrenen herkesin awk komutunu ayrıntılı şekilde öğrenmesi, terminal kullanım becerisini ciddi ölçüde geliştirir.
Ek Çalışma Önerileri
Şunlarla birlikte çalışmayı deneyin:
grepsedcutsortuniqfindxargs
Pardus Linux (ve genel olarak Unix tabanlı işletim sistemleri) üzerinde metin dosyalarını işlemek, verileri filtrelemek ve raporlamak için kullanabileceğiniz en güçlü komut satırı araçlarından biri awk'tır. awk, aslında başlı başına bir programlama dilidir.
Aşağıda, Pardus Linux terminalinizde hemen uygulamaya başlayabileceğiniz, temelden ileri düzeye doğru ilerleyen kapsamlı bir awk eğitim rehberi bulabilirsiniz.
1. awk Nasıl Çalışır ve Temel Sözdizimi
awk, bir metin dosyasını (veya bir komutun çıktısını) satır satır okur. Her satırı bir Kayıt (Record), satır içindeki boşluklarla ayrılmış her bir kelimeyi ise bir Alan (Field - Sütun) olarak kabul eder.
Temel Sözdizimi:
awk 'koşul { işlem }' dosya_adi
koşul (pattern): Hangi satırların işleneceğini belirler. Boş bırakılırsa tüm satırlarda işlem yapılır.
işlem (action): Koşulu sağlayan satırlarda ne yapılacağını belirler (örneğin yazdırma, hesaplama vb.). Mutlaka süslü parantez
{}içine yazılır.
Önemli Gömülü Değişkenler
awk'ın gücü, sunduğu gömülü değişkenlerden gelir:
$0: Üzerinde işlem yapılan tüm satırı temsil eder.$1, $2, $3...: Satırdaki 1., 2., 3. vb. sütunları temsil eder.NR(Number of Records): O an okunan satırın numarasını verir.NF(Number of Fields): O an okunan satırdaki toplam sütun sayısını verir.
2. Pratik Örnekler İçin Örnek Veri Dosyası
Bu eğitimdeki komutları Pardus'ta denemek için terminalinizi açın ve personel.txt adında bir dosya oluşturun:
Ali Yılmaz Muhasebe 50000
Ayşe Demir Bilisim 70000
Mehmet Can İK 45000
Fatma Şahin Bilisim 75000
Veli Öztürk Satis 55000
3. Temel Kullanım Senaryoları
Belirli Sütunları Yazdırmak
Sadece çalışanların isimlerini (1. sütun) ve maaşlarını (4. sütun) listelemek isteyelim:
awk '{print $1, $4}' personel.txt
Çıktı:
Ali 50000
Ayşe 70000
Mehmet 45000
Fatma 75000
Veli 55000
Belirli Bir Metni İçeren Satırları Bulmak (Filtreleme)
Sadece "Bilisim" departmanında çalışanları listelemek için iki eğik çizgi /.../ arasına aradığımız kelimeyi yazarız:
awk '/Bilisim/ {print $0}' personel.txt
(Not: Sadece {print} veya {print $0} yazmak tüm satırı yazdırır.)
Satır Numaralarını Eklemek
Çıktıya satır numaralarını eklemek için NR değişkenini kullanırız:
awk '{print NR, $1, $2}' personel.txt
Çıktı:
1 Ali Yılmaz
2 Ayşe Demir
3 Mehmet Can
4 Fatma Şahin
5 Veli Öztürk
4. Mantıksal ve Matematiksel İşlemler
awk, sayısal değerler üzerinde matematiksel kontroller yapmanıza olanak tanır.
Koşullu Filtreleme
Maaşı 60.000'den büyük olan personelin adını ve maaşını listeleyelim:
awk '$4 > 60000 {print $1, $4}' personel.txt
Çıktı:
Ayşe 70000
Fatma 75000
Birden Fazla Koşul Kullanma (AND / OR)
Sadece Bilisim departmanında çalışan VE (&&) maaşı 70.000'den yüksek olanları bulalım:
awk '$3 == "Bilisim" && $4 > 70000 {print $1}' personel.txt
5. BEGIN ve END Blokları
BEGIN: Dosya okunmaya başlanmadan önce sadece bir kez çalışır. (Genellikle başlık eklemek veya değişken tanımlamak için kullanılır).END: Dosyanın tamamı okunduktan sonra sadece bir kez çalışır. (Genellikle toplam veya özet sonuçları yazdırmak için kullanılır).
Örnek: Tabloya bir başlık ekleyelim ve en sonda toplam personel sayısını yazdıralım.
awk 'BEGIN {print "--- PERSONEL LİSTESİ ---"} {print $1, $2} END {print "Toplam Personel:", NR}' personel.txt
Çıktı:
--- PERSONEL LİSTESİ ---
Ali Yılmaz
Ayşe Demir
Mehmet Can
Fatma Şahin
Veli Öztürk
Toplam Personel: 5
6. Sütun Ayırıcıyı Değiştirmek (-F Parametresi)
Varsayılan olarak awk boşlukları sütun ayırıcı olarak kabul eder. Ancak Pardus'ta sistem dosyaları genellikle farklı ayırıcılar kullanır (örneğin iki nokta üst üste : veya virgül ,).
Sistemdeki kullanıcıları barındıran /etc/passwd dosyasını inceleyelim. Bu dosyadaki değerler : ile ayrılmıştır. Sadece kullanıcı adlarını (1. sütun) listelemek için -F parametresini kullanırız:
awk -F':' '{print $1}' /etc/passwd
7. Diğer Komutlarla Birlikte Kullanım (Piping)
awk, Pardus terminalindeki diğer komutlarla | (pipe) işareti üzerinden mükemmel bir uyumla çalışır. Örneğin, sistemde çalışan bash süreçlerini listelemek için:
ps aux | grep bash | awk '{print $2, $11}'
Bu komut, ps aux çıktısını alır, içinde "bash" geçen satırları filtreler ve ardından awk ile Süreç ID'sini (PID - 2. sütun) ve komut adını (11. sütun) ekrana yazdırır.
Özetle; awk, Pardus Linux sistem yöneticileri, veri analistleri ve geliştiriciler için günlük görevleri saniyelere indiren vazgeçilmez bir araçtır. Yukarıdaki temel yapıyı anladıktan sonra, terminal ekranında verilerinizi dilediğiniz gibi şekillendirebilirsiniz.
Siber güvenlik dünyasında awk, bir güvenlik analistinin, sızma testçisinin (pentester) veya sistem yöneticisinin "İsviçre Çakısı" olarak kabul edilir.
Siber güvenlikte hız ve anında müdahale kritik bir öneme sahiptir. Karmaşık güvenlik yazılımlarının (SIEM gibi) bulunmadığı, çöktüğü veya sadece terminal erişiminizin olduğu bir sunucuda devasa boyutlardaki verileri saniyeler içinde analiz etmeniz gerektiğinde awk hayat kurtarır.
İşte awk komutunun siber güvenlikteki yeri, temel kullanım alanları ve neden bu kadar önemli olduğuna dair detaylar:
1. Siber Güvenlikte Temel Kullanım Alanları
Log (Kayıt) Analizi ve Tehdit Avcılığı (Threat Hunting): Bir sunucuya saldırı yapıldığında saldırganın izleri log dosyalarında (auth.log, syslog, access.log vb.) gizlidir. Milyonlarca satırlık bir web sunucusu logundan sadece SQL Injection (SQLi) denemelerini veya belirli bir IP'den gelen istekleri saniyeler içinde süzmek için awk kullanılır.
Ağ Trafiği ve Port Analizi: netstat, ss veya nmap gibi araçların çıktılarından sadece açık portları, şüpheli dış bağlantıları veya belirli bir servisi çalıştıran IP adreslerini ayıklamak için tercih edilir.
Olay Müdahalesi (Incident Response): Acil bir siber olay anında, sisteme zarar veren şüpheli bir sürecin (process) PID'sini (Süreç Kimliği) bulup otomatik olarak sonlandıran komut zincirleri oluşturmak için kullanılır.
Görünürlük ve Raporlama: Dağınık haldeki ham verileri, yöneticilere veya diğer güvenlik araçlarına sunulabilecek temiz, okunabilir tablolar (CSV vb.) haline dönüştürür.
2. Gerçek Dünya Siber Güvenlik Senaryoları
Siber güvenlikte awk'ın nasıl kullanıldığını daha iyi anlamak için en yaygın senaryolara bakalım:
Senaryo 1: SSH Brute-Force (Kaba Kuvvet) Saldırılarını Tespit Etmek
Birisi sunucunuza sürekli yanlış şifre ile girmeye çalışıyorsa, bu loglara düşer. Hangi IP adreslerinin kaç kez başarısız giriş denemesi yaptığını bulmak için:
Bash:awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nr | head -10
Bu komut: auth.log dosyasında "Failed password" geçen satırları bulur, IP adresinin bulunduğu sütunu çeker, sayar ve en çok saldıran 10 IP adresini listeler.
Senaryo 2: Web Sunucusuna En Çok İstek Yapan IP'leri Bulmak (DDoS / Tarama Tespiti)
Web sitenize aşırı yüklenen veya açık taraması yapan şüpheli IP'leri tespit etmek için access.log dosyası incelenir:
Bash:awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -5
Bu komut: Sadece log dosyasının 1. sütununu (IP adresini) alır ve en yoğun istek gönderen 5 IP'yi ekrana basar.
Senaryo 3: Açık Portları ve Süreçleri Listelemek
Sunucuda dışarıya açık ve dinlemede olan (LISTEN) şüpheli bağlantıları hızlıca filtrelemek için:
Bash:netstat -tulnp | awk '/LISTEN/ {print $4, $7}'
Bu komut: Hangi IP/Port ikilisinin (4. sütun), hangi süreç (7. sütun) tarafından dinlendiğini gösterir.
3. Neden Bu Kadar Önemli?
Her Yerde Hazır Bulunur (Ubiquity): Python, Perl veya gelişmiş log analiz araçlarını hedef sisteme kurmanız gerekmeyebilir; ancak awk, hemen hemen tüm Linux/Unix sistemlerde (Pardus dahil) varsayılan olarak yüklü gelir.
İnanılmaz Hızlıdır: C dili ile yazılmış ve metin işleme üzerine optimize edilmiştir. GB'larca büyüklüğündeki log dosyalarını grafik arayüzlü (GUI) programlardan çok daha hızlı işler. Kaynak tüketimi yok denecek kadar azdır.
Otomasyona Uyumludur: Bash scriptlerinin içine kolayca gömülebilir. Bir IDS (Saldırı Tespit Sistemi) uyarısı geldiğinde çalışan ve otomatik IP engelleyen betiklerin kalbinde genellikle awk yatar.
Bu yetenekler, awk'ı sadece bir komut olmaktan çıkarıp, siber güvenlik uzmanlarının veriyle konuşmasını sağlayan bir dile dönüştürür.
Linux dünyasında awk, yalnızca bir metin işleme aracı değildir. Siber güvenlik uzmanları için:log analizi,
olay inceleme,
tehdit avcılığı (threat hunting),
sistem izleme,
veri filtreleme
gibi kritik alanlarda kullanılan temel araçlardan biridir.
Özellikle Pardus Linux gibi GNU/Linux tabanlı sistemlerde çalışan güvenlik uzmanları, SOC analistleri, sistem yöneticileri ve penetration tester’lar için awk vazgeçilmez araçlardan biridir.
Siber Güvenlikte Neden Önemlidir?
Siber güvenlikte en önemli konulardan biri:
Büyük miktardaki veriyi hızlı analiz edebilmek
olduğu için awk büyük avantaj sağlar.
Çünkü:
Devasa log dosyalarını işleyebilir
Belirli alanları filtreleyebilir
Şüpheli aktiviteleri ayıklayabilir
Otomatik rapor oluşturabilir
Diğer Linux araçlarıyla birlikte çalışabilir
En Büyük Gücü: Log Analizi
Siber güvenlikte log dosyaları her şeydir.
Örneğin:
SSH giriş kayıtları
Web sunucu logları
Firewall kayıtları
IDS/IPS kayıtları
Sistem olay kayıtları
çoğunlukla metin tabanlıdır.
awk bu verileri analiz etmek için mükemmeldir.
1. Başarısız SSH Girişlerini Bulma
Örnek:
cat /var/log/auth.log | awk '/Failed password/ { print $1, $2, $3, $11 }'
Bu komut:
başarısız girişleri bulur
tarih bilgisini gösterir
saldırıyı yapan IP adresini listeler
2. En Çok Deneme Yapan IP Adresleri
awk '/Failed password/ { print $11 }' auth.log | sort | uniq -c | sort -nr
Bu kullanım:
brute force saldırılarını tespit etmekte çok faydalıdır.
3. Web Sunucu Saldırılarını İnceleme
Apache/Nginx loglarında şüpheli istekleri filtreleme:
awk '$9 == 404 { print $1, $7 }' access.log
Gösterir:
saldırgan IP adresi
erişmeye çalışılan dosya
4. SQL Injection Denemelerini Yakalama
awk '/UNION|SELECT|DROP|--/' access.log
Şüpheli SQL injection girişimlerini tespit edebilir.
5. DDoS Analizi
Aynı IP’den gelen yoğun istekleri bulma:
awk '{ print $1 }' access.log | sort | uniq -c | sort -nr | head
Threat Hunting (Tehdit Avcılığı)
Threat Hunting sürecinde güvenlik uzmanları:
anormal davranış,
beklenmeyen erişim,
olağandışı trafik
aramaktadır.
awk bu analizleri terminal üzerinden hızlı yapmayı sağlar.
Zararlı Yazılım Analizi
Kötü amaçlı yazılımlar çoğu zaman:
şüpheli process,
garip bağlantılar,
olağan dışı dosyalar
oluşturur.
Örneğin çalışan süreçleri inceleme:
ps aux | awk '{ print $1, $11 }'
Ağ Güvenliğinde Kullanımı
Açık Bağlantıları İnceleme
netstat -tunap | awk '{ print $5 }'
Şüpheli Portları Bulma
ss -tulnp | awk '{ print $5 }'
SIEM ve SOC Ortamlarında Kullanımı
SOC (Security Operations Center) ekipleri:
Splunk
ELK Stack
Wazuh
Graylog
gibi sistemler kullanır.
Fakat terminal seviyesinde hızlı analiz için hâlâ awk çok değerlidir.
Özellikle:
ilk müdahale,
olay doğrulama,
hızlı filtreleme
işlemlerinde.
Incident Response Sürecindeki Önemi
Bir saldırı sonrası uzmanlar:
hangi IP bağlandı,
hangi kullanıcı giriş yaptı,
hangi dosyalar değişti,
hangi süreç çalıştı
sorularına cevap arar.
awk bu cevapları saniyeler içinde verebilir.
Adli Bilişim (Digital Forensics)
Adli analizlerde:
log korelasyonu,
zaman analizi,
kullanıcı hareketleri
incelenir.
Örneğin:
awk '{ print $1, $2, $3 }' auth.log
zaman damgalarını çıkarmada kullanılabilir.
Linux Siber Güvenlik Araçlarıyla Kullanımı
awk çoğu zaman şu araçlarla birlikte kullanılır:
Araç Kullanım grep Filtreleme sed Düzenleme sort Sıralama uniq Tekilleştirme cut Alan ayırma find Dosya arama xargs Komut zinciri
Gerçek Hayat Senaryosu
SSH Brute Force Tespiti
cat auth.log | awk '/Failed password/ { print $11 }' | sort | uniq -c | sort -nr
Örnek çıktı:
245 185.220.101.12
180 45.33.22.10
95 103.15.66.9
Bu çıktı:
saldırgan IP’leri
deneme sayılarını
gösterir.
Siber Güvenlikte Avantajları
Çok Hızlıdır
Gigabyte boyutundaki loglarda bile çalışabilir.
Kaynak Tüketimi Düşüktür
GUI araçlara göre çok daha hafiftir.
Otomasyona Uygundur
Shell scriptlerle kolayca entegre edilir.
Gerçek Zamanlı Analiz Yapabilir
Örneğin:
tail -f auth.log | awk '/Failed/'
Siber Güvenlik Uzmanları Neden Öğrenmeli?
Çünkü:
Linux altyapılarında standarttır
SOC ortamlarında kullanılır
Penetration test süreçlerinde işe yarar
Log analizi için çok güçlüdür
Terminal hâkimiyeti kazandırır
awk ile Güvenlik Otomasyonu
Basit alarm sistemleri oluşturulabilir.
Örneğin:
10’dan fazla başarısız giriş varsa uyarı üret
belirli IP’yi engelle
log raporu oluştur
Örnek Güvenlik Scripti
awk '/Failed password/ { print $11 }' auth.log \
| sort | uniq -c | awk '$1 > 20 { print "Şüpheli IP:", $2 }'
Sonuç
awk, siber güvenlik dünyasında:
hızlı analiz,
log inceleme,
olay müdahalesi,
tehdit avcılığı,
sistem gözlemi
için kullanılan en güçlü terminal araçlarından biridir.
Özellikle Pardus Linux kullanan güvenlik uzmanlarının:
awk
grep
sed
sort
gibi araçları iyi öğrenmesi, gerçek dünyadaki güvenlik operasyonlarında büyük avantaj sağlar.
Yorumlar