Merhabalar,
Linux sistemler, aynı zamanda geliştirmeler için de kullanılan sistemlerdir. Dolayısıyla, kullanıcılar tarafından da test etme, geliştirme işlemleri için yoğun olarak kullanılabilirler. Bunun sonucu olarak, birçok kullanıcı sisteme bağlanmak durumunda olabilir. Böyle olunca da sistem yöneticileri, bazı bilgilendirme mesajlarını o an oturum açan kullanıcılara göndermek isteyebilirler. Örneğin acil bir durumda sistem reboot gerektiğinde, acil durum mesajları gönderilebilir. İşte bu makalede, linux komut satırından, oturum açmış tüm kullanıcılara ya da belli bazı kullanıcılara nasıl mesaj gönderilebileceğini inceleyeceğiz.
Diğer kullanıcılara mesaj göndermek için çeşitli araçlar var elbette, ancak güvenlik sorunları nedeniyle yaygın olarak belirli kullanıcılara göndermeye veya almaya izin vermeyebilirler. Bu nedenle terminaller aracılığıyla mesaj göndermekle sınırlıyız.
Terminalde Aktif Kullanıcıları Kontrol Etme
Öncelikle, sistemdeki tüm kullanıcıları, /etc/passwd dosyasından kontrol edebilirsiniz.
cat /etc/passwd | cut -d: -f1
Oturum Açmış Kullanıcıların Tespit Edilmesi
O anda, sistemde kimin oturum açtığını ve kullanıcının hangi terminalde oturum açtığını kontrol etmek için w komutu kullanılabilir. w komutu, terminalde kimlerin oturum açtığını ve gerçekleştirdikleri eylemleri gösterecektir.
Bu komut, /var/run/utmp dosyasını ve /proc işlemlerini okuyarak makinedeki mevcut kullanıcılar hakkında bilgileri görüntüler. Bu komut çıktısında, geçerli oturumu açma saati, sistem çalışma süresi, oturum açan kullanıcı sayısı gibi sistem etkinliğini görüntüleyen bir başlık ile birlikte gelir.
w komutu, herhangi bir seçenek olmadan kullanılır ve aşağıdaki formatta bilgileri bize sağlar.
Şimdi ise bu çıktıdaki sütunların açıklamasını yapalım.
USER: Login olan kullanıcının ismi.
TTY: Kullanıcı tarafından kullanılan terminalin adı. pts, uzak bağlantı olduğunu, tty ise sunucu konsolundan bağlanıldığını gösterir.
FROM: Kullanıcının, linux sunucuya uzak bağlantıyı yaptığı makinenin IP adresi.
LOGIN@: Login olunan saati gösterir.
IDLE: Kullanıcının terminalle en son etkileşimde bulunmasından bu yana geçen süre.
JCPU: tty’ye bağlı tüm işlemler tarafından kullanılan süre.
PCPU: Kullanıcının, mevcut süreci tarafından kullanılan süre.
WHAT: Kullanıcının mevcut süreci ve seçenekleri/argümanları.
Sisteme giriş yapan tüm kullanıcıları görmek ve başlık kısmını kaldırmak istiyorsanız, who komutunu da kullanabiliriz.
who komutu, sistemde oturum açmış olan kullanıcıların biçimlendirilmiş bir listesiyle çıktı verir.
Sistemde oturum açmış olan kullanıcıları w ya da who komutuyla gördükten sonra nasıl mesaj gönderebileceğimizi görelim. İki şekilde mesaj gönderebiliriz. Tüm kullanıcılara gönderebileceğiniz gibi sadece belli bir kullanıcıya da mesaj gönderebilmektesiniz.
Oturum Açmış Tüm kullanıcılara Komut Satırından Mesaj Gönderme
Sistemde oturum açmış tüm kullanıcılara mesaj göndermek için wall komutunu kullanıyoruz. Tüm Linux dağıtımlarında önceden yüklenmiş olarak gelir ve tty2 kullanarak terminaldeki başka bir kullanıcıya mesaj göndermemize izin verir. Mesajda herhangi bir simge, karakter veya boşluk kullanabilirsiniz. Yalnız Türkçe karakter kullanmamanız gerekiyor, çünkü Türkçe karakterler bozuk olarak karşı tarafa gidiyor. Mesajı yazdıktan sonra, Enter tuşuna basabilir ya da mesajı tüm kullanıcılara göndermek için CTRL + D tuşlarını kullanabiliriz.
wall “isleyen.net icin komut satiri mesaj testidir.”
Tüm kullanıcılara mesaj gönderildi. O sırada oturum açmış olan yusuf ve ali kullanıcılarında aşağıdaki gibi görünür.
Oturum Açmış Belli Kullanıcılara Komut Satırından Mesaj Gönderme
Aktif iş yapıyor olmasalar bile oturum açmış kullanıcılara mesaj göndermek için write komutunu kullanıyoruz.
write komutu, tüm Linux dağıtımlarında önceden kuruludur ve tty2 kullanarak terminaldeki başka bir kullanıcıya mesaj göndermemize izin verir. Metni girdikten Enter tuşuna basabilirsiniz. Ancak bu işlem iki yönlü bir konuşma değildir. Yani chat ekranı gibi kullanamıyoruz.
Şimdi örnek bir mesaj gönderelim. Öncelikle sistemdeki kullanıcıları ve nereden/nasıl bağlantı sağladıklarına dair bilgileri görelim.
w
Yusuf kullanıcısı pts/1 üzerinden bağlıymış. write komutumuzu bu durumda şu şekilde kullanacağız.
write yusuf pts/1
“Yusuf selam, isleyen.net icin komut satiri test mesajidir.”
root kullanıcısı, yusuf kullanıcısına write ile mesajı göndermek istediğinde, yusuf kullanıcısının komut satırında yukarıdaki gibi mesaj geleceğine dair satırı göreceğiz. Mesajı yazıp enter tuşuna bastığında ise mesaj aşağıdaki gibi görünecek yusuf tarafından.
root kullanıcısı, mesaj yazmaya devam etmek isteyebilir. O arabirimden çıkmadığı sürece enter tuşlarıyla satır atlayarak birden fazla satırla mesaj atabilir. İkinci satırda ise, ikinci mesaj olduğuna dair bilgilendirme yaparak gönderelim.
yusuf tarafına ikinci mesaj da geldi.
root kullanıcısı, mesaj yazmayı kesmek ve mesaj arabiriminden çıkmak için ctrl+c tuşlarını kullanabilir. Bu durumda yusuf tarafında da mesaj kanalının kapatıldığını EOF mesajıyla göreceğiz.
Bağlantı terminali ismini yanlış yazarsak ne olur peki? Örneğin yusuf kullanıcısı, pts/1’den bağlıydı ama komutu pts/2 olarak kullanırsak ne olurdu?
write yusuf pts/2
Bakınız pts/2’den yusuf kullanıcısının login olmadığına dair uyarı mesajıyla işlem sonlandırıldı. Çünkü pts/2’de ali kullanıcısı var. Böylece izole bir kanal olduğunu ve yanlış kişiye de mesaj gönderilmesinin önüne geçilmiş olduğunu görmekteyiz.
root kullanıcısı, herkese ya da belli kullanıcılara mesaj gönderebildi. Peki bu kullanıcıya cevaben, diğer kullanıcılar mesaj göndermek isterse ne yapılmalı? Aynı şekilde komutu kullanabiliriz. Şimdi yusuf kullanıcısından root kullanıcısına mesaj atmayı deneyelim.
write root pts/0
Bakınız burada mesajlaşmanın root tarafında disable olduğunu görüyoruz. Dolayısıyla kullanıcılar, root kullanıcısına mesaj atamazlar. Mesaj gönderip gönderemeyeceklerini görmek için root kullanıcısı tarafında şu komutu yazalım.
mesg
Burada n bilgisi dönüyor ve “no” anlamına geliyor. Yani root kullanıcısı demiş ki, “bana kimse mesaj gönderemez, çünkü bana mesaj atılmasını disable ettim.”
Şimdi bunu enable edelim ve kullanıcılar da root kullanıcıya mesaj gönderebilsin. mesg komutunu y/n ile kullanarak enable-disable edebiliriz mesajlaşmayı.
mesg y
Artık enable durumda. Şimdi yeniden yusuf kullanıcısından root kullanıcısına mesaj atmayı deneyelim.
write root pts/0
root kullanıcısı tarafına mesaj ulaştı.
Herhangi bir kullanıcı, root haricinde tüm kullanıcılardan mesaj almayı engellemek isterse, kendine ait mesajlaşmayı disable edebilir. Örneğin yusuf kullanıcısı, diğer kullanıcılardan mesaj almayı kapatsın.
Bundan sonra da örneğin ali kullanıcısı, yusuf kullanıcısına mesaj atmayı denesin.
Bakınız, yusuf kullanıcısı için mesajlaşma disable durumda ve ali kullanıcısı mesajı gönderemedi.
Burada şunu unutmayınız : bir kullanıcıda mesajlaşma disable ise root dışındaki kullanıcılardan mesaj almaz. root kullanıcısı, her durumda mesaj gönderebilir durumda olur. Kullanıcı disable etmiş olsa bile root kullanıcısından mesaj alma engellenemez.
Eğer mesaj, bir metin dosyasında saklanıyorsa, mesajı göndermek için metin dosyasını kullanıcıya göndermek için write komutuyla cat yardımcı programını birlikte kullanabiliriz. Metin dosyası içeriği, oturum açmış tüm kullanıcılara gönderilecektir. Örneğin root kullanıcısı, bir metin dosyasında yazılan mesajı, sadece belli bir kullanıcıya göndermek istesin.
cat mesaj.txt | write yusuf pts/1
Yusuf tarafındaki görüntüsü aşağıdaki gibi olmuştur.
Bakınız mesaj.txt metin dosyası içine yazılan mesaj, yusuf kullanıcısına ulaştı.
Peki bir diğer kullanım da şöyle olsun. Örneğin bir metin dosyası içindeki mesajı, bu sefer tüm kullanıcılara gönderelim. En başta wall komutunu kullanmıştık. Bu senaryo için de aynı şekilde aşağıdaki gibi kullanacağız.
cat mesaj.txt | wall
Tüm kullanıcılara mesaj gönderildi ve örnek olarak ali kullanıcısının komut satırına baktığımızda, aşağıdaki gibi gelen mesajı görebilmekteyiz.
Aslında bu makalenin konusu değil ama yine de küçük bir ekleme daha yapayım.
Sistemi kapatmak veya reboot etmek gerektiğinde de kullanıcılara mesaj gönderebilirsiniz. Aşağıdaki komutu parametre ve yanında 5 sayısı ile kullanıyoruz. Kaç dakika sonra reboot edileceğini belirtmek için burada 5 kullandım.
shutdown -r 5 Sistem bakimi ve guncellemeleri dolayısıyla, sunucu 5 dakika icinde reboot edilecektir. Veri kaybinizi onlemek icin lutfen calismalarinizi kaydediniz.
Yusuf kullanıcısına mesaj gelmiş.
Ali kullanıcısına da mesaj gelmiş.
Linux komut satırından mesajlaşma konusu da bu şekilde. Sistem yöneticilerinin ihtiyaç duyacağı bir konu olabilir.
Yararlı olması dileğiyle.
Yusuf İşleyen