Mdr{dani} Notes

Linux Hands-on 2 (Output and Text Manipulation)

·

8 min read

Cover Image for Linux Hands-on 2 (Output and Text Manipulation)

Nah, di artikel ini kita lanjut ke Tugas 2, nih! Fokusnya kali ini soal ngolah teks dan output. Kita bakal pakai macem-macem perintah dan bikin output-nya dalam bentuk file teks.

Task 2.1: Generate a Fake Log File

go install github.com/mingrammer/flog@latest

flog: Ini adalah nama aplikasi yang mau kita instal. flog adalah tool atau alat yang berguna untuk membuat fake log, alias log palsu. Biasanya dipakai untuk testing atau simulasi. Karena flog ini dibuat menggunakan bahasa pemrograman Go, maka kita butuh tool "Go" untuk memasangnya.

cd go/bin
./flog -s 10s -n 200 > /home/sdb/access.log

Bagian 1: cd go/bin

  • cd: Ini singkatan dari "change directory" alias "pindah folder". Jadi, perintah ini digunakan untuk berpindah dari folder tempat kita berada sekarang ke folder lain.

  • go/bin: Ini adalah "alamat" atau lokasi folder yang ingin kita tuju. Dalam hal ini, kita mau pindah ke folder bin yang ada di dalam folder go. Biasanya, di folder bin ini terdapat file-file program yang bisa dijalankan.

Jadi, bagian ini intinya adalah: Berpindah ke folder go/bin.

Bagian 2: ./flog -s 10s -n 200 > /home/sdb/access.log

  • ./flog: Ini adalah perintah untuk menjalankan program flog. Tanda ./ di depan flog artinya program flog tersebut ada di folder tempat kita berada sekarang (yaitu folder go/bin).

  • -s 10s: Opsi -s ini artinya "seconds" alias detik. Jadi, kita mau flog menghasilkan log setiap 10 detik.

  • -n 200: Opsi -n ini artinya "number" alias jumlah. Jadi, kita mau flog menghasilkan 200 baris log.

  • >: Nah, ini nih yang penting. Tanda > ini artinya kita mau "mengarahkan" output dari perintah flog ke sebuah file. Jadi, log yang dihasilkan tidak hanya ditampilkan di layar, tetapi juga disimpan di dalam sebuah file.

  • /home/sdb/access.log: Ini adalah "alamat" lengkap file tempat kita menyimpan log yang dihasilkan oleh flog. Dalam hal ini, kita menyimpannya di dalam file access.log yang ada di folder sdb di dalam folder home.

Task 2.2: Extract unique IP Address

awk '{print $1}' access.log | sort | uniq

  • awk: Ini adalah program yang sangat berguna untuk memproses teks. awk bekerja dengan membaca file baris per baris, dan kita bisa menentukan apa yang ingin kita lakukan untuk setiap barisnya.

  • '{print $1}': Ini adalah "instruksi" untuk awk. print $1 artinya kita mau menampilkan kata pertama dari setiap baris. Dalam file access.log, biasanya kata pertama ini berisi IP address atau alamat server yang mengakses.

  • access.log: Ini adalah nama file yang berisi log akses.

  • sort: Ini adalah perintah untuk mengurutkan teks. Secara default, sort akan mengurutkan teks secara alfabetis.

  • uniq: Ini adalah perintah untuk menampilkan baris-baris unik. Jadi, kalau ada IP address yang muncul berkali-kali, uniq hanya akan menampilkannya sekali.

Task 2.3: Count Accurrence of each IP Address

awk '{print $1}' access.log | sort | uniq -c | sort -nr > ip_counts.txt

  • uniq: Ini adalah perintah untuk menampilkan baris-baris unik. Jadi, kalau ada IP address yang muncul berkali-kali, uniq hanya akan menampilkannya sekali.

  • -c: Opsi -c ini artinya "count" alias hitung. Jadi, selain menampilkan IP address yang unik, uniq juga akan menampilkan berapa kali IP address tersebut muncul.

  • sort: Sama seperti sebelumnya, ini adalah perintah untuk mengurutkan teks.

  • -n: Opsi -n ini artinya "numeric" alias angka. Jadi, kita mau mengurutkan berdasarkan angka, bukan alfabet.

  • -r: Opsi -r ini artinya "reverse" alias terbalik. Jadi, kita mau mengurutkan dari angka terbesar ke angka terkecil.

Task 2.4: Filter Log Entries with status Code 404

grep " 404 " access.log > errors.log

  • grep: Nah, kalau grep ini kayak detektif yang lagi nyari sesuatu di dalam teks. Dia bakal nyari baris-baris yang mengandung kata atau pola tertentu.

  • " 404 ": Ini adalah "target" yang mau dicari oleh grep. Dalam hal ini, kita mau mencari baris yang mengandung kode "404". Kode "404" ini biasanya muncul di log akses website dan menandakan bahwa halaman yang diminta tidak ditemukan alias "error".

  • access.log: Ini adalah nama file yang akan "diperiksa" oleh grep. Jadi, grep akan mencari kode "404" di dalam file access.log.

  • >: Nah, ini nih yang penting. Tanda > ini artinya kita mau "mengarahkan" output dari perintah grep ke sebuah file. Jadi, baris-baris yang mengandung kode "404" tidak hanya ditampilkan di layar, tetapi juga disimpan di dalam sebuah file.

  • errors.log: Ini adalah nama file tempat kita menyimpan baris-baris yang mengandung kode "404".

Task 2.5: Replace “Mozilla” with “BrowserX”

sed 's/Mozilla/BrowserX/g' access.log > access_modified.log

  • sed: Nah, kalau sed ini kayak editor teks otomatis. Dia bisa mencari dan mengganti teks di dalam file secara otomatis, tanpa perlu kita buka filenya satu per satu.

  • 's/Mozilla/BrowserX/g': Ini adalah "instruksi" untuk sed. Mari kita pecah lagi:

    • s: Ini singkatan dari "substitute" alias "ganti". Jadi, kita mau mengganti teks.

    • /Mozilla/: Ini adalah teks yang mau kita cari atau ganti. Dalam hal ini, kita mau mencari kata "Mozilla".

    • /BrowserX/: Ini adalah teks penggantinya. Jadi, kata "Mozilla" akan diganti dengan "BrowserX".

    • g: Ini artinya "global". Jadi, semua kemunculan kata "Mozilla" di setiap baris akan diganti, bukan hanya yang pertama saja.

  • access.log: Ini adalah nama file yang akan "diedit" oleh sed. Jadi, sed akan mencari dan mengganti teks di dalam file access.log.

  • >: Nah, ini nih yang penting. Tanda > ini artinya kita mau "mengarahkan" output dari perintah sed ke sebuah file baru. Jadi, hasil editan tidak langsung mengubah file access.log aslinya, tetapi disimpan di file baru.

  • access_modified.log: Ini adalah nama file baru yang akan berisi teks yang sudah dimodifikasi.

Task 2.6: Extract Log Entries froom a Spesific Date

 grep "06/Feb/2025" access.log > specific_date.log

  • grep: Perintah untuk mencari pola teks dalam file.

  • "06/Feb/2025": Pola teks yang dicari. Dalam hal ini, kita mencari baris yang mengandung tanggal "06/Feb/2025". Perhatikan bahwa format tanggal ini harus sama persis dengan yang ada di file access.log Anda.

  • access.log: Nama file yang akan dicari.

  • >: Operator redirection yang mengarahkan output dari perintah grep ke file lain.

  • specific_date.log: Nama file baru yang akan berisi baris-baris yang cocok dengan pola yang dicari.

Task 2.7: Calculate Total Bytes Transferred

awk '{sum += $10} END {print sum}' access.log

  • sum += $10: Ini artinya kita membuat sebuah variabel bernama sum dan menambahkan nilai dari kolom ke-10 ($10) ke variabel sum tersebut. Jadi, sum akan menyimpan total dari nilai-nilai di kolom ke-10.

  • Kolom ke-10 di file access.log Anda kemungkinan besar berisi ukuran response dalam byte.

  • 'END {print sum}': Ini juga "instruksi" untuk awk.

    • END: Ini artinya perintah di dalam kurung kurawal akan dieksekusi setelah awk selesai membaca seluruh file.

    • print sum: Ini artinya kita mau menampilkan nilai dari variabel sum, yaitu total dari ukuran response.

Task 2.8: Find IP with the Most 404 Errors

grep ' 404 ' access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 1 > top_404_ip.txt

  • grep ' 404 ' access.log:

    • grep: Ini adalah perintah untuk mencari pola teks dalam file.

    • ' 404 ': Pola teks yang dicari. Kita mencari baris yang mengandung kode "404". Kode ini biasanya menunjukkan error "Not Found" di log akses web.

    • access.log: Nama file log yang akan dicari.

    • Intinya: Mencari semua baris di access.log yang mengandung "404".

  • awk '{print $1}':

    • awk: Program untuk memproses teks per baris.

    • '{print $1}': Instruksi untuk awk. $1 artinya kolom pertama dari setiap baris. Biasanya, di log akses web, kolom pertama ini berisi alamat IP.

    • Intinya: Mengambil alamat IP dari setiap baris yang dihasilkan oleh grep.

  • sort:

    • sort: Perintah untuk mengurutkan teks. Secara default, ia mengurutkan berdasarkan abjad.

    • Intinya: Mengurutkan daftar alamat IP.

  • uniq -c:

    • uniq: Perintah untuk menampilkan baris-baris unik.

    • -c: Opsi untuk menghitung berapa kali setiap baris muncul.

    • Intinya: Menghitung berapa kali setiap alamat IP muncul (berapa kali setiap IP menghasilkan error 404).

  • sort -nr:

    • sort: Perintah untuk mengurutkan teks.

    • -n: Opsi untuk mengurutkan secara numerik (bukan abjad).

    • -r: Opsi untuk membalik urutan (dari terbesar ke terkecil).

    • Intinya: Mengurutkan alamat IP berdasarkan jumlah kemunculannya, dari yang paling sering muncul.

  • head -n 1:

    • head: Perintah untuk menampilkan beberapa baris pertama dari sebuah file atau output.

    • -n 1: Opsi untuk menampilkan hanya 1 baris.

    • Intinya: Mengambil alamat IP yang paling sering menghasilkan error 404.

  • >:

    • >: Operator redirection untuk mengarahkan output ke sebuah file.

    • top_404_ip.txt: Nama file yang akan menyimpan output.

    • Intinya: Menyimpan alamat IP yang paling sering menghasilkan error 404 ke dalam file top_404_ip.txt.

Task 2.9: Anonymize All IP Address

sed -E 's/^[^ ]+/ANONYMIZED_IP/' access.log > access_anonymized.log

's/^[^ ]+/ANONYMIZED_IP/': Ini adalah "instruksi" untuk sed. Mari kita bedah lagi:

  • s: Ini singkatan dari "substitute" alias "ganti". Jadi, kita mau mengganti teks.

  • ^: Ini artinya "awal baris". Jadi, kita mau mencari teks yang ada di awal baris.

  • [^ ]+: Ini adalah pola teks yang mau kita cari. [^ ] artinya "semua karakter kecuali spasi". + artinya "satu atau lebih kemunculan". Jadi, [^ ]+ artinya satu atau lebih karakter yang bukan spasi. Karena ada ^ di depannya, berarti kita mencari satu atau lebih karakter bukan spasi yang ada di awal baris. Biasanya, di log akses web, bagian ini adalah alamat IP.

  • /ANONYMIZED_IP/: Ini adalah teks penggantinya. Jadi, teks yang cocok dengan pola ^[^ ]+ (yaitu alamat IP di awal baris) akan diganti dengan "ANONYMIZED_IP".

Task 2.10: Count Log Entries with 500 status code

grep " 500 " access.log | wc -l

  • wc: Ini adalah perintah untuk menghitung jumlah kata, baris, dan karakter dalam sebuah file atau input.

  • -l: Opsi untuk menghitung jumlah baris.

  • Intinya: Menghitung jumlah baris yang diberikan sebagai input. Dalam hal ini, inputnya adalah output dari perintah grep.

Mdr{dani} Notes

A digital garden where I plant ideas, share thoughts on DevOps, cloud infrastructure, open-source, and my journey in tech. Keep exploring and happy automating!

Explore Topics

Web DevelopmentReactNext.jsGolangOpen SourceTutorials

Supported By

Codeathome
LampungDev

Made with© 2026 Muhamad Dani Ramanda

Powered by HashnodeHosted on Vercel