Cara Membaca Data Dari Soket di Bash di Linux

Baris perintah Linux memungkinkan Anda mengambil data dengan mendengarkan di soket atau menyambung ke soket. Data dapat ditangkap dalam file teks. Kami menunjukkan kepada Anda bagaimana. Klien dan Server

Socket

Socket memungkinkan perangkat lunak berjaringan untuk berkomunikasi. Mereka pertama kali diimplementasikan dalam sistem operasi Unix 4.2BSD, yang dibuat di University of California, Berkeley, pada tahun 1983. Mereka dengan cepat diadopsi oleh System V Unix dan Microsoft Windows.

A adalah titik akhir dari koneksi jaringan perangkat lunak, diabstraksikan sehingga dapat diperlakukan sebagai pegangan file. Itu berarti cocok dengan prinsip desain umum Unix dan Linux “semuanya adalah file.” Kami tidak bermaksud soket fisik di dinding tempat Anda menyambungkan kabel jaringan.

Jika suatu program terhubung ke soket di perangkat lunak lain, itu dianggap sebagai klien dari perangkat lunak lain. Software yang memungkinkan software lain meminta koneksi disebut server. Istilah-istilah ini digunakan secara independen dari penggunaan lain dari klien dan server di dunia TI. Untuk menghindari kebingungan, mereka terkadang disebut klien soket dan server soket untuk menghilangkan ambiguitas. Kami akan menyebutnya klien dan server.

Sockets diimplementasikan sebagai antarmuka pemrograman aplikasi (API), memungkinkan pengembang perangkat lunak untuk memanggil fungsionalitas soket dari dalam kode mereka. Tidak apa-apa jika Anda seorang programmer, tetapi bagaimana jika bukan? Atau mungkin memang demikian, tetapi kasus penggunaan Anda tidak menjamin penulisan aplikasi? Linux menyediakan alat baris perintah yang memungkinkan Anda menggunakan—server soket dasar—dan klien soket, sesuai kebutuhan Anda, untuk mengambil atau menerima data dari proses lain yang mendukung soket.

Koneksi Tidak Pernah Mudah

Program yang akan kita gunakan adalah nc dan ncat. Kedua utilitas ini memiliki hubungan yang aneh. Program nc adalah penulisan ulang ncat, yang jauh lebih tua dari nc . Tapi ncat telah ditulis ulang juga, dan sekarang memungkinkan kita melakukan beberapa hal yang tidak bisa dilakukan nc. Dan ada banyak implementasi dari ncat, yang merupakan turunan dari alat yang disebut netcat. Selain itu, pada sebagian besar distribusi, nc adalah tautan simbolis ke ncat dan bukan program terpisah.

Kami memeriksa distribusi Arch, Manjaro, Fedora, dan Ubuntu terbaru. Satu-satunya yang membutuhkan alat untuk diinstal adalah Manjaro. Di Manjaro, Anda perlu menginstal paket netcat untuk mendapatkan nc, tetapi Anda tidak mendapatkan ncat, Anda mendapatkan netcat. Dan di Manjaro, nc adalah tautan simbolis ke netcat.

sudo pacman -S netcat

Intinya adalah, di Manjaro gunakan netcat ketika Anda melihat ncat dalam contoh di artikel ini.

Listening Socket

Jika perangkat lunak mendengarkan koneksi soket yang masuk, itu bertindak sebagai sebuah server. Data apa pun yang datang melalui koneksi soket dikatakan diterima oleh server. Kita dapat mereplikasi perilaku ini dengan sangat mudah menggunakan nc. Setiap data yang diterima ditampilkan di jendela terminal.

Kita perlu memberi tahu nc untuk mendengarkan koneksi, menggunakan opsi -l (listen), dan kita perlu menentukan port tempat kita akan mendengarkan koneksi. Setiap program atau proses klien yang mencoba menyambung ke instance nc ini harus menggunakan port yang sama. Kami memberi tahu nc port mana yang akan didengarkan dengan menggunakan opsi -p (port).

Perintah ini memulai nc sebagai server soket, mendengarkan koneksi pada port 6566:

nc -l -p 6566

Saat menunggu koneksi masuk, nc menghasilkan tidak ada keluaran. Setelah koneksi dibuat, setiap informasi yang diambil akan ditampilkan di jendela terminal. Di sini, koneksi telah dibuat oleh program klien yang mengidentifikasi dirinya sebagai “klien 1.”

Semua yang ditampilkan oleh nc diterima dari klien. Klien ini kebetulan mengirim namanya, dan pesan bernomor yang berisi waktu dan tanggal.

Ketika klien memutuskan koneksinya, nc berakhir dan Anda kembali ke terminal prompt.

Mengirim Data ke File

Untuk mengambil data dari klien dalam a file, kita dapat mengirim output dari nc ke file menggunakan redirection. Perintah ini menyimpan data yang diterima dalam file bernama “logfile.txt.”

nc -l -p 6566 > logfile.txt

Anda tidak akan melihat output apa pun—itu masuk ke file—dan, secara paradoks, Anda tidak akan tahu apakah koneksi telah terjadi sampai nc berakhir. Kembali ke prompt perintah menunjukkan koneksi telah terjadi dan telah dihentikan oleh klien.

Kita dapat menggunakan lebih sedikit untuk meninjau konten file “logfile.txt”.

less logile.txt

Anda kemudian dapat menggulir data, dan mencari menggunakan less’s built-in functions.

Mengirim Data ke File dan Jendela Terminal

Jika Anda ingin melihat data bergulir di jendela terminal dan mengirimkannya ke file pada saat yang sama, pipa keluaran dari nc ke tee .

nc -l -p 6566 | tee logfile.txt

Menerima Beberapa Koneksi

Semua itu baik-baik saja, tetapi memiliki batasan. Kami hanya dapat menerima satu koneksi. Kami terbatas untuk menerima data dari satu klien. Juga, ketika klien itu memutuskan koneksi, server soket kami nc berakhir.

Jika Anda perlu menerima beberapa koneksi, kami perlu menggunakan ncat. kita perlu memberi tahu ncat untuk mendengarkan, dan menggunakan port tertentu, seperti yang kita lakukan dengan nc. Tapi kita juga akan menggunakan opsi -k (tetap hidup). Ini memberitahu ncat untuk tetap berjalan dan menerima koneksi dari klien bahkan ketika koneksi aktif terakhir terputus.

Ini berarti ncat akan berjalan sampai kita memilih untuk menghentikannya dengan “Ctrl-C.” Koneksi baru akan diterima baik ncat saat ini terhubung ke klien mana pun atau tidak.

ncat -k -l -p 6566

Kita dapat melihat data dari klien berbeda yang muncul di output dari ncat saat mereka terhubung.

Menghubungkan ke Server

Kita juga dapat menggunakan nc sebagai klien soket dan terhubung ke program lain yang menerima koneksi, dan bertindak sebagai server. Dalam skenario ini, nc adalah klien soket. Untuk melakukan ini, kita perlu memberi tahu nc di mana perangkat lunak server berada di jaringan.

Salah satu cara untuk melakukannya adalah dengan memberikan alamat IP dan nomor port. Jika server berada di pc yang sama dengan tempat kita menjalankan nc, kita dapat menggunakan alamat IP loopback 127.0.0.1. Bukan berarti tidak ada flag yang digunakan untuk menunjukkan alamat server dan nomor port. Kami hanya memberikan nilai yang sesuai.

Untuk terhubung ke server pada PC yang sama, dan menggunakan port 6566, kami dapat menggunakan alamat IP loopback. Perintah yang digunakan adalah:

nc 127.0.0.1 6566

Data yang diambil nc dari server akan digulirkan di jendela terminal.

Jika Anda mengetahui nama jaringan komputer yang menjalankan perangkat lunak server, Anda dapat menggunakannya sebagai ganti alamat IP.

nc sulaco 6566

Gunakan “Ctrl+C” untuk memutuskan koneksi.

Kesimpulan

nc dan ncat sesuai dengan tagihan saat Anda tidak ingin menulis penangan soket khusus, tetapi Anda perlu mengumpulkan data dari beberapa sumber yang mendukung soket. Mengarahkan output ke file memungkinkan Anda meninjau output menggunakan lebih sedikit, dan mengurai file menggunakan utilitas seperti grep.

Itulah berita seputar Cara Membaca Data Dari Soket di Bash di Linux, semoga bermanfaat. Disadur dari HowToGeek.com.