Hai semuanya, apa kabar? Kali ini saya mau lanjutin tulisan kemarin. Udah baca belum? Kalau belum klik disini buat baca tulisan yang kemarin.
Kemarin kita sudah berhasil mengirimkan penggunaan penyimpanan pada telegram seperti pada gambar 1 dibawah ini. Namun, apabila dilihat kurang rapi karena formattingnya berbeda karena Terminal menggunakan monospace dan pesan biasa pada Telegram tidak.
gambar 1
Nah, sekarang kita coba untuk ubah formatnya menjadi seperti pada gambar 2:
gambar 2
Bisa? Bisa dong. Hehehe. Pake perintah awk
di Terminal. awk
bisa dipakai untuk manipulasi dan pemrosesan teks. awk
berasal dari nama pendirinya yaitu Alfred Aho, Peter Weinberger, dan Brian Kernighan.
Sekarang kita buka file konfigurasinya (penyimpanan.sh
). Pada perintah df -h /
tambahkan konfigurasi awk
agar seperti contoh dibawah: (yang lainnya seperti untuk konfigurasi Telegram jangan diubah)
df -h / | awk 'NR==2 {print "Filesystem:", $1; print "Size:", $2; print "Used:", $3; print "Avail:", $4; print "Use%:", $5; print "Mounted on:", $6}' > /home/user/penyimpanan.log
Terdapat operator pipeline (|
) setelah perintah df -h /
. Pipeline berfungsi untuk menjadikan output perintah sebelumnya sebagai input perintah selanjutnya. Dalam hal ini, output perintah df -h /
yang berupa penggunaan kapasitas penyimpanan diteruskan menjadi input perintah awk
Perintah awk memiliki atribut/pattern NR==2
. NR berarti number of record. Pada baris ini, NR==2
artinya kita ingin mengambil nilai pada baris kedua dari input perintah awk
(dalam hal ini artinya nilai dari df -h /
, kita lihat gambar 3)
gambar 3
Nilai yang diambil adalah nilai pada baris 2. kemudian, terdapat perintah di dalam {}. Ada perintah print
yang digunakan untuk mencetak judul tabel seperti Filesystem, Size, dll dan diikuti dengan nilai yang diambil dari input. Misalnya, pada gambar 3, nilai 26G
terletak pada nilai kedua ($2), jadi pada perintah print tertulis print "Size:", $2;.
Oiya kalian bisa kunjungi link https://linuxhint.com/nr-built-in-awk/ untuk belajar lebih lanjut mengenai perintah awk
.
Sekarang kita cek fungsionalitas dari skrip tersebut. Simpan file dan jalankan skrip tersebut.
gambar 4
Pada gambar 4, perintah berhasil dijalankan dan tampilan notifikasi sesuai dengan yang kita inginkan.
Selanjutnya, kita coba tambahkan kalimat seperti “Penggunaan Disk Tanggal <tanggal>” pada bagian atasnya. Untuk melakukannya, kita ubah lagi file penyimpanan.sh
Pada baris pertama skrip (#!/bin/bash
biarkan), tambahkan perintah:
echo "Penggunaan Disk Tanggal $(date +'%d/%m/%Y')" > /home/user/penyimpanan.log
untuk menambahkan judul beserta tanggal saat skrip dijalankan (parameter date). Atribut +'%d/%m/%Y'
digunakan untuk specify format tanggal dd/mm/yyyy. Perintah diatas akan menimpa file penyimpanan.log
(ya, ditimpa. Sudah pernah dijelaskan di tulisan sebelumnya hehe) dengan tulisan tersebut (judul “Penggunaan Disk…”).
Untuk perintah df -h / awk
… dipindahkan pada baris selanjutnya, namun pada bagian akhir diganti dari operator >
menjadi operator >>
agar tidak menimpa judul dan menambahkannya pada baris selanjutnya.
Perintah df -h /
menjadi seperti ini:
df -h / | awk 'NR==2 {print "Filesystem:", $1; print "Size:", $2; print "Used:", $3; print "Avail:", $4; print "Use%:", $5; print "Mounted on:", $6}' >> /home/user/penyimpanan.log
Yuk, kita simpan filenya dan kita jalankan skripnya. Gambar 5 menampilkan skrip berhasil dijalankan dengan format yang baru.
gambar 5
Selanjutnya, kita coba jadwalkan agar skrip tersebut dijalankan secara otomatis tiap waktu tertentu. Pada pengujian kali ini karena untuk menguji fungsionalitasnya, saya coba untuk jalankan pada pukulĀ 10.30, 10.35 dan 10.40.
Untuk melakukan otomatisasi pada Linux, kita bisa menggunakan Cron. Cron adalah job scheduler yang ada pada Linux yang memungkinkan kita untuk menjadwalkan perintah atau skrip tertentu pada waktu yang kita inginkan.
Untuk konfigurasinya, kita buka file konfigurasi Cron dengan menggunakan perintah crontab -e
. Secara default menggunakan vi editor. Untuk masuk ke mode edit, tekan tombol i
Waktu penjadwalan cronjob terdiri dari lima field dan path menuju file skrip yang ingin dijalankan, berikut ini lima fieldnya dan saya gambarkan dengan simbol * (wildcard)
* * * * * /path/ke/file
1. Menit (0-59)
2. Jam (0-23)
3. Tanggal (1-31)
4. Bulan (1-12)
5. Hari (0-7). 0 dan 7 merepresentasikan hari Minggu
Simbol * (wildcard) digunakan untuk menjalankan perintah pada “any”. Misalkan pada tanggal, bulan, dan hari diisi dengan wildcard semua, artinya perintah akan dijalankan pada semua tanggal, bulan, dan hari
Jadwal yang akan saya coba untuk pengujian kali ini adalah pada pukul 10:33, 10:34, dan 10:35. Berikut isi dari skrip cronjob yang digunakan:
33 10 * * * /home/user/penyimpanan.sh
34 10 * * * /home/user/penyimpanan.sh
35 10 * * * /home/user/penyimpanan.sh
Selanjutnya kita simpan konfigurasi cronjobnya. Keluar editor vi tekan Esc>ketik :wq
(write and quit). Untuk mengecek cronjob apa saja yang telah dibuat, kita bisa menggunakan perintah crontab -
l. Berikut ini contoh saat saya menjalankan perintah tersebut:
[user@localhost ~]$ crontab -l
33 10 * * * /home/user/penyimpanan.sh
34 10 * * * /home/user/penyimpanan.sh
35 10 * * * /home/user/penyimpanan.sh
Kemudian, gambar 6 menampilkan notifikasi pada Telegram berhasil dikirimkan sesuai dengan waktu yang ditetapkan pada cronjob.
gambar 6
Nah, dari yang sudah dipelajari kita sudah berhasil membuat penjadwalan untuk menjalankan skrip pada waktu tertentu. Tentu ada banyak hal lain yang dapat ditingkatkan dari skrip ini. Terima kasih sudah membaca tulisan saya dan sampai jumpa, bye~