Error Initramfs

Otomatisasi Server Linux: Mematikan Server ketika Mati Lampu

Server temanku si Faza kembali berulah lagi. Apa pasal? Ternyata karena servernya tidak dipasangi UPS untuk menjaga server tetap hidup selama pemadaman listrik. Alasannya, UPS cuma bertahan sampai 30 menit sedangkan pemadaman listrik berlangsung hingga lebih dari 3 (tiga) jam.

Nextcloud
Nextcloud

Jadi, temanku di kantornya menggunakan sebuah server untuk penyimpan semua pekerjaan arsitek, engineer dan drafter untuk berbagi pakai di internal jaringan mereka. Beberapa waktu yang lalu, aku menginstalasi server tersebut dengan distro GNU/Linux Ubuntu Server 18.04 LTS. Di dalam server tersebut aku tanamkan aplikasi Nextcloud agar server tersebut bisa berfungsi selayaknya Dropbox atau Google Drive, namun hanya di dalam jaringan intranet.

Biasanya, kalau sudah kejadian padam lampu tiba-tiba tersebut, Faza akan mengontakku dan meminta untuk membereskan servernya yang rusak tersebut. Aku akan datang ke sana untuk memperbaikinya dengan melakukan booting dari Ubuntu Desktop 18.10 Live version kemudian akan mengetikkan perintah berikut:

sudo fsck /dev/sda5

karena berhubung biasanya drive yang bermasalah ada pada /dev/sda5. Jika Anda memiliki permasalahan yang serupa, silakan cek hardisk Anda dengan perintah fdisk -l dan ganti /dev/sda5 dengan model drive Anda.

Perintah yang sangat simple, tetapi karena temanku ini ogah sekali berhubungan dengan sistem operasi GNU/Linux dan masih Windows mindset, maka pekerjaan ini harus selalu aku yang lakukan. Hahaha…

Kondisi ini terus berulang karena daerah sini sering terjadi pemadaman listrik dan server tidak menggunakan UPS, akhirnya aku mencoba mencari ide. Bagaimana caranya agar server akan mati sendiri jika listrik padam walau cuma berbekal UPS yang bertahan selama 30 menit?

Setelah berpikir akhirnya diambil keputusan bahwa server akan melakukan pinging secara terus menerus ke modem Indihome dan jika terdeteksi bahwa hasil ping tidak bernilai 0 (nilai 0 merupakan kode bahwa ping sukses .pen) maka server akan menjalankan perintah haltshutdown -h now“. Masalahnya adalah, terkadang modem Indihome yang digunakan oleh kantor untuk mengakses internet sering di-restart karena suka lelet pada waktu tertentu. Akhirnya diambil kesimpulan bahwa yang akan dijadikan obyek ping adalah sebuah print server yang selalu hidup.

Kode pemrograman yang digunakan untuk melakukan deteksi ping dan shutdown komputer menggunakan script bash. Diletakkan di /root/scripts/cek_modem.sh.

baiquni@server:~$ sudo su -
[sudo] password for baiquni: 
root@server:~#
root@server:~# mkdir -p scripts
root@server:~# touch scripts/cek_modem.sh
root@server:~# chmod +x scripts/cek_modem.sh
root@server:~# nano scripts/cek_modem.sh
/linux-scripts/blob/master/cek_modem.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
MODEM=192.168.0.10
 
sleep 5m
 
while true;
do
    ping -c1 $MODEM > /dev/null 2>&1
    if [ $? -qe 0 ] ; then
        echo "OK" > /dev/null
    else
        shutdown -h now
    fi
done

Langkah selanjutnya adalah membuat script tersebut dijalankan ketika booting. Awalnya coba digunakan perintah @reboot /root/scripts/cek_modem.sh pada cron root tetapi entah kenapa perintah tersebut tidak berjalan dengan semestinya ketika dilakukan percobaan. Untuk membuatnya masuk ke dalam systemd juga malas, perintahnya banyak. Jadi, diambil keputusan untuk memanggilnya di /etc/rc.local. Caranya adalah sebagai berikut:

root@server:~# touch /etc/rc.local
root@server:~# chmod +x /etc/rc.local
1
2
3
4
#!/bin/bash
 
/root/scripts/cek_modem.sh &
exit 0

Setelah dilakukan percobaan, cara ini berhasil dengan sukses! Semoga untuk ke depan, servernya kantor temanku tidak rusak lagi ketika terjadi pemadaman listrik. Amin…