Linux'ta Bash'te Bir Soketten Veri Nasıl Okunur

Yayınlanan: 2022-06-28
Optik kablolardan akan ikili kod.
XYZ/Shutterstock.com

Linux komut satırı, bir soketi dinleyerek veya bir sokete bağlanarak verileri almanızı sağlar. Veriler bir metin dosyasında yakalanabilir. Size nasıl olduğunu gösteriyoruz.

Soket İstemciler ve Sunucular

Soketler, ağ bağlantılı yazılımların iletişim kurmasını sağlar. İlk olarak 1983'te Berkeley'deki California Üniversitesi'nde oluşturulan 4.2BSD Unix işletim sisteminde uygulandılar. System V Unix ve Microsoft Windows tarafından hızla benimsendiler.

Linux'ta "Her Şey Bir Dosyadır" Ne Demektir?
İLGİLİ "Her Şey Bir Dosyadır" Linux'ta Ne Anlama Gelir?

Soket, bir dosya tanıtıcısı olarak ele alınabilmesi için soyutlanmış bir yazılım ağ bağlantısının uç noktasıdır. Bu, "her şey bir dosyadır" şeklindeki genel Unix ve Linux tasarım ilkesine uyduğu anlamına gelir. Ağ kablonuzu taktığınız duvardaki fiziksel soketi kastetmiyoruz.

Bir program başka bir yazılım parçasındaki bir sokete bağlanırsa, diğer yazılımın istemcisi olarak kabul edilir. Diğer yazılımların bağlantı talep etmesine izin veren yazılıma sunucu denir. Bu terimler, BT dünyasında istemci ve sunucunun diğer kullanımlarından bağımsız olarak kullanılır. Karışıklığı önlemek için bazen belirsizliği ortadan kaldırmak için soket istemcisi ve soket sunucusu olarak adlandırılırlar. Onlara istemciler ve sunucular diyeceğiz.

Soketler, bir uygulama programlama arabirimi (API) olarak uygulanır ve yazılım geliştiricilerin kodlarının içinden soket işlevselliğini çağırmalarına olanak tanır. Bir programcıysanız sorun değil, ama ya değilseniz? Ya da belki öylesiniz, ancak kullanım durumunuz bir uygulama yazmayı garanti etmiyor mu? Linux, ihtiyaçlarınıza göre diğer soket etkin işlemlerden veri almak veya almak için temel soket sunucularını ve soket istemcilerini kullanmanıza izin veren komut satırı araçları sağlar.

İLGİLİ: API Nedir ve Geliştiriciler Bunları Nasıl Kullanır?

İlişkiler Asla Kolay Değildir

Kullanacağımız programlar nc ve ncat . Bu iki yardımcı programın garip bir ilişkisi var. nc programı, ncat çok daha eski olan nc yeniden yazılmış halidir. Ama ncat da yeniden yazıldı ve şimdi nc yapamayacağı bazı şeyleri yapmamıza izin veriyor. Ve kendisi netcat adlı bir aracın türevi olan ncat birçok uygulaması vardır. Bunun da ötesinde, çoğu dağıtımda nc , ayrı bir program değil, ncat için sembolik bir bağlantıdır.

Son Arch, Manjaro, Fedora ve Ubuntu dağıtımlarını kontrol ettik. Araçların yüklenmesini gerektiren tek kişi Manjaro'ydu. Manjaro'da nc almak için netcat paketini yüklemeniz gerekir, ancak ncat , netcat alırsınız. Ve Manjaro'da nc , netcat ile sembolik bir bağlantıdır.

 sudo pacman -S netcat 

Netcat paketini Manjaro'ya yükleme

Sonuç olarak, Manjaro'da bu makaledeki örneklerde ncat gördüğünüzde netcat kullanın.

Sokette Dinleme

Yazılım gelen soket bağlantılarını dinliyorsa, sunucu görevi görüyor demektir. Soket bağlantısı üzerinden gelen herhangi bir verinin sunucu tarafından alındığı söylenir. Bu davranışı nc kullanarak çok kolay bir şekilde çoğaltabiliriz. Alınan tüm veriler terminal penceresinde görüntülenir.

-l (dinle) seçeneğini kullanarak nc bağlantıları dinlemesini söylemeliyiz ve bağlantıları dinleyeceğimiz portu belirtmemiz gerekiyor. Bu nc örneğine bağlanmaya çalışan tüm istemci programları veya işlemleri aynı bağlantı noktasını kullanmalıdır. -p (port) seçeneğini kullanarak nc hangi portu dinleyeceğini söylüyoruz.

Bu komut, nc bir soket sunucusu olarak başlatır ve 6566 numaralı bağlantı noktasındaki bağlantıyı dinler:

 nc -l -p 6566 

nc'yi bir soket sunucusu olarak başlatmak

Gelen bir bağlantı için beklerken, nc çıktı üretmez. Bir bağlantı yapıldığında, alınan tüm bilgiler terminal penceresinde görüntülenir. Burada, kendisini "istemci 1" olarak tanımlayan bir istemci programı tarafından bir bağlantı yapılmıştır.

nc bir istemciden veri alma

nc tarafından görüntülenen her şey istemciden alınır. Bu istemci, adını ve saat ve tarihi içeren numaralı bir mesaj gönderir.

İstemci bağlantısını kestiğinde, nc sonlandırılır ve terminal istemine geri dönersiniz.

nc, istemci tarafında bir bağlantı kesilmesinden sonra sonlandırıldı

Dosyaya Veri Gönderme

İstemciden bir dosyadaki verileri yakalamak için, çıktıyı yeniden yönlendirmeyi kullanarak nc bir dosyaya gönderebiliriz. Bu komut, alınan verileri “logfile.txt” adlı bir dosyaya kaydeder.

 nc -l -p 6566 > logfile.txt 

Çıktıyı nc'den bir metin dosyasına yönlendirme

Herhangi bir çıktı görmeyeceksiniz—dosyaya giriyor—ve paradoksal olarak, nc sonlandırılana kadar bir bağlantının olup olmadığını bilemezsiniz. Komut istemine döndürülmesi, bir bağlantının kurulduğunu ve istemci tarafından sonlandırıldığını gösterir.

“logfile.txt” dosyasının içeriğini incelemek için less kullanabiliriz.

 daha az logile.txt 

Bir metin dosyasını incelemek için daha az kullanma

Daha sonra veriler arasında gezinebilir ve less'in yerleşik işlevlerini kullanarak arama yapabilirsiniz.

Daha az nc'den yakalanan çıktıyı gözden geçirme

İLGİLİ: Linux'ta daha az Komut Nasıl Kullanılır

Dosyaya ve Terminal Penceresine Veri Gönderme

Verinin terminal penceresinde kaydığını görmek ve aynı anda bir dosyaya gönderilmesini istiyorsanız, çıktıyı nc tee .

 nc -l -p 6566 | tee logfile.txt 

Çıktıyı nc'den bir dosyaya ve aynı anda terminal penceresine gönderme

Çoklu Bağlantıları Kabul Etme

Her şey yolunda, ancak sınırlamaları var. Yalnızca bir bağlantıyı kabul edebiliriz. Tek bir istemciden veri almakla sınırlıyız. Ayrıca, o istemci bağlantıyı kestiğinde, nc soket sunucumuz da sonlandırılır.

Birden fazla bağlantıyı kabul etmeniz gerekiyorsa, ncat kullanmamız gerekir. ncat nc ile yaptığımız gibi dinlemesini ve belirli bir bağlantı noktasını kullanmasını söylememiz gerekecek. Ama aynı zamanda -k (canlı tut) seçeneğini de kullanacağız. Bu, ncat son etkin bağlantı koptuğunda bile istemcilerden gelen bağlantıları çalıştırmaya ve kabul etmeye devam etmesini söyler.

Bu, "Ctrl-C" ile sonlandırmayı seçene kadar ncat çalışacağı anlamına gelir. ncat şu anda herhangi bir istemciye bağlı olsa da olmasa da yeni bağlantılar kabul edilecektir.

 ncat -k -l -p 6566 

ncat ile birden fazla bağlantı için dinleme

ncat çıktısında görünen farklı istemcilerden gelen verileri, bağlanırken görebiliriz.

ncat'e bağlanan ikinci ve üçüncü istemciler

Sunucuya Bağlanmak

Ayrıca nc bir soket istemcisi olarak kullanabilir ve bağlantıları kabul eden ve sunucu görevi gören başka bir programa bağlanabiliriz. Bu senaryoda, nc soket istemcisidir. Bunu yapmak için nc sunucu yazılımının ağ üzerinde nerede olduğunu söylememiz gerekiyor.

Bunu yapmanın bir yolu, bir IP adresi ve bir bağlantı noktası numarası sağlamaktır. Sunucu, nc üzerinde çalıştığımız bilgisayardaysa, 127.0.0.1'lik geri döngü IP adresini kullanabiliriz. Sunucu adresini ve bağlantı noktası numarasını belirtmek için kullanılan hiçbir bayrak olmadığından değil. Biz sadece uygun değerleri sağlıyoruz.

Aynı bilgisayardaki bir sunucuya bağlanmak ve 6566 numaralı bağlantı noktasını kullanmak için geri döngü IP adresini kullanabiliriz. Kullanılacak komut şudur:

 nc 127.0.0.1 6566 

nc'yi soket istemcisi olarak kullanma

nc sunucudan aldığı veriler, terminal penceresinde kaydırılır.

nc ile bir soket sunucusundan veri alma

Sunucu yazılımını çalıştıran bilgisayarın ağ adını biliyorsanız, IP adresi yerine bunu kullanabilirsiniz.

 nc sulaco 6566 

Sunucunun üzerinde çalıştığı PC adını kullanarak bir soket sunucusuna bağlanmak için nc'yi kullanma

Bağlantıyı kesmek için “Ctrl+C” kullanın.

Çabuk ve kolay

nc ve ncat , özel bir soket işleyicisi yazmak istemiyorsanız, ancak soket etkin bir kaynaktan veri toplamanız gerektiğinde tasarıya uyar. Çıktıyı bir dosyaya yeniden yönlendirmek, less kullanarak çıktıyı gözden geçirmenize ve grep gibi yardımcı programları kullanarak dosyayı ayrıştırmanıza olanak tanır.

İLGİLİ: Linux'ta grep Komutu Nasıl Kullanılır