Menggunakan scripting shell untuk mengotomatiskan tugas pemeliharaan sistem linux - bagian 4

Menggunakan scripting shell untuk mengotomatiskan tugas pemeliharaan sistem linux - bagian 4

Beberapa waktu yang lalu saya membaca bahwa salah satu karakteristik pembeda dari administrator / insinyur sistem yang efektif adalah kemalasan. Tampaknya sedikit kontradiktif pada awalnya tetapi penulis kemudian melanjutkan untuk menjelaskan mengapa:

Seri RHCE: Otomatis Tugas Pemeliharaan Sistem Linux - Bagian 4

Jika seorang sysadmin menghabiskan sebagian besar waktunya memecahkan masalah dan melakukan tugas yang berulang, Anda dapat curiga dia tidak melakukan hal -hal yang benar. Dengan kata lain, administrator / insinyur sistem yang efektif harus mengembangkan rencana untuk melakukan tugas berulang dengan tindakan yang lebih sedikit pada bagiannya, dan harus memperkirakan masalah dengan menggunakan,

Misalnya, alat yang ditinjau di Bagian 3 - Laporan Aktivitas Sistem Monitor Menggunakan Linux Toolsets dari Seri ini. Dengan demikian, meskipun ia mungkin tidak melakukan banyak hal, itu karena sebagian besar tanggung jawabnya telah diurus dengan bantuan skrip shell, yang akan kita bicarakan dalam tutorial ini.

Apa itu skrip shell?

Dalam beberapa kata, skrip shell tidak lebih dan tidak kurang dari program yang dieksekusi langkah demi langkah oleh shell, yang merupakan program lain yang menyediakan lapisan antarmuka antara kernel Linux dan pengguna akhir.

Secara default, shell yang digunakan untuk akun pengguna di RHEL 7 adalah bash (/bin/bash). Jika Anda menginginkan deskripsi terperinci dan beberapa latar belakang sejarah, Anda dapat merujuk ke artikel Wikipedia ini.

Untuk mengetahui lebih lanjut tentang set fitur besar yang disediakan oleh shell ini, Anda mungkin ingin memeriksanya Halaman Manusia, yang diunduh dalam format pdf di (perintah bash). Selain itu, diasumsikan bahwa Anda terbiasa dengan perintah Linux (jika tidak, saya sangat menyarankan Anda untuk pergi melalui panduan dari pemula ke artikel sysadmin di Tecmint.com sebelum melanjutkan). Sekarang mari kita mulai.

Menulis skrip untuk menampilkan informasi sistem

Untuk kenyamanan kita, mari kita buat direktori untuk menyimpan skrip shell kita:

# skrip mkdir # skrip cd 

Dan buka file teks baru bernama sistem Informasi.SH dengan editor teks pilihan Anda. Kami akan mulai dengan memasukkan beberapa komentar di bagian atas dan beberapa perintah sesudahnya:

#!/bin/bash # skrip sampel ditulis untuk bagian 4 dari seri rhce # skrip ini akan mengembalikan set informasi sistem berikut: # -Hostname Informasi: echo -e "\ e [31; 43m ***** Informasi nama host ***** \ e [0m "hostnamectl echo" " # -file Sistem Disk Ruang Penggunaan: Echo -e" \ E [31; 43M ***** Penggunaan Ruang Disk Sistem File ***** \ e [0m "df -h echo" " # -bebas dan menggunakan memori dalam sistem: echo -e" \ e [31; 43m ***** Memori gratis dan bekas ***** \ E [0M "GRATIS ECHO" " # -Sistem Uptime dan Load: Echo -e" \ E [31; 43M ***** Uptime dan Load Sistem ***** \ e [0m "uptime echo" " # -logged -in pengguna: echo -e" \ e [31; 43m ***** Saat ini pengguna masuk ***** \ e [0m "Who echo" " # -top 5 Proses sejauh menyangkut penggunaan memori Echo -e" \ E [31; 43M ***** 5 proses yang memakan memori teratas ***** \ e [0m "ps -eo%mem,%cpu, comm --sort = -%mem | head -n 6 echo" "echo -e" \ e [1; 32mdone.\ e [0m " 

Selanjutnya, berikan skrip menjalankan izin:

# chmod +x system_info.SH 

dan jalankan:

./sistem Informasi.SH 

Perhatikan bahwa header dari setiap bagian ditampilkan dalam warna untuk visualisasi yang lebih baik:

Skrip shell pemantauan server

Fungsionalitas itu disediakan oleh perintah ini:

echo -e "\ e [Color1; Color2m\ e [0m " 

Di mana Warna1 Dan Color2 masing -masing adalah warna latar depan dan latar belakang (info lebih lanjut dan opsi dijelaskan dalam entri ini dari wiki Arch Linux) dan adalah string yang ingin Anda tunjukkan dalam warna.

Tugas Mengotomatisasi

Tugas yang mungkin perlu Anda otomatisasi dapat bervariasi dari kasus ke kasus ke kasus. Dengan demikian, kami tidak mungkin membahas semua skenario yang mungkin dalam satu artikel, tetapi kami akan menyajikan tiga tugas klasik yang dapat diotomatisasi menggunakan skrip shell:

1) perbarui database file lokal, 2) temukan (dan hapus alternatif) dengan 777 izin, dan 3) waspada saat penggunaan sistem file melampaui batas yang ditentukan.

Mari kita buat file bernama AUTO_TASKS.SH Di direktori skrip kami dengan konten berikut:

#!/bin/bash # skrip sampel untuk mengotomatiskan tugas: # -pdate database file lokal: echo -e "\ e [4; 32mMemperbarui database file lokal\ e [0m "Diperbarui if [$? == 0]; Kemudian gema "Basis data file lokal diperbarui dengan benar."Else echo" database file lokal tidak diperbarui dengan benar."fi echo" " # -find dan / atau hapus file dengan 777 izin. echo -e "\ e [4; 32mMencari file dengan 777 izin\ e [0m " # Aktifkan salah satu opsi (komentari baris lain), tetapi tidak keduanya. # Opsi 1: Hapus file tanpa meminta konfirmasi. Mengasumsikan versi gnu find. #find -type f -perm 0777 -delete # Opsi 2: Minta konfirmasi sebelum menghapus file. Lebih portabel di seluruh sistem. temukan -type f -perm 0777 -exec rm -i  +; echo "" # -alert saat penggunaan sistem file melampaui batas yang ditentukan echo -e "\ e [4; 32mMemeriksa Penggunaan Sistem File\ e [0m "threshold = 30 saat baca baris; lakukan # variabel ini menyimpan jalur sistem file sebagai string filesystem = $ (echo $ line | awk 'print $ 1') # variabel ini menyimpan persentase penggunaan (xx% ) Persentase = $ (Echo $ line | awk 'cetak $ 5') # Penggunaan persentase tanpa tanda %. Penggunaan = $ persentase%? jika [$ usage -gt $ threshold]; Kemudian gema "Ruang yang tersedia yang tersisa di $ filesystem sangat rendah. Digunakan: $ persentase "fi selesai < <(df -h --total | grep -vi filesystem) 

Harap dicatat bahwa ada ruang di antara keduanya < tanda -tanda di baris terakhir skrip.

Skrip shell untuk menemukan 777 izin

Menggunakan cron

Untuk mengambil efisiensi satu langkah lebih jauh, Anda tidak ingin duduk di depan komputer Anda dan menjalankan skrip itu secara manual. Sebaliknya, Anda akan menggunakan cron Untuk menjadwalkan tugas -tugas tersebut untuk dijalankan secara berkala dan mengirimkan hasilnya ke daftar penerima yang telah ditentukan melalui email atau menyimpannya ke file yang dapat dilihat menggunakan browser web.

Skrip berikut (fileSystem_usage.sh) akan menjalankan yang terkenal df -h perintah, format output ke dalam tabel html dan simpan di laporan.html mengajukan:

#!/BIN/BASH # Contoh skrip untuk menunjukkan pembuatan laporan HTML menggunakan shell skrip # Web direktori web_dir =/var/www/html # CSS kecil dan tata letak tabel untuk membuat laporan terlihat sedikit lebih baik gema "   .titulo font-size: 1em; warna putih; Latar belakang:#0863ce; Padding: 0.1em 0.2em; tabel border-collapse: collapse;  tabel, td, th border: 1px solid black;  "> $ Web_dir/laporan.html # view hostname dan masukkan di bagian atas host body html = $ (hostname) echo "penggunaan sistem file untuk host $ Host
Terakhir diperbarui: $ (tanggal)

">> $ web_dir/laporan.html # Baca output df -H baris demi baris saat membaca baris; lakukan gema "">> $ web_dir/laporan.html selesai < <(df -h | grep -vi filesystem) echo "
Berkas sistem Ukuran Menggunakan %
">> $ web_dir/laporan.html echo $ line | awk 'cetak $ 1' >> $ web_dir/laporan.html echo "">> $ web_dir/laporan.html echo $ line | awk 'cetak $ 2' >> $ web_dir/laporan.html echo "">> $ web_dir/laporan.html echo $ line | awk 'cetak $ 5' >> $ web_dir/laporan.html echo "
">> $ web_dir/laporan.html

Di kami RHEL 7 Server (192.168.0.18), ini terlihat sebagai berikut:

Laporan Pemantauan Server

Anda dapat menambahkan laporan itu sebanyak yang Anda inginkan. Untuk menjalankan skrip setiap hari di 13:30, Tambahkan entri crontab berikut:

30 13 * * */root/skrip/fileSystem_usage.SH 

Ringkasan

Anda kemungkinan besar akan memikirkan beberapa tugas lain yang Anda inginkan atau butuhkan untuk mengotomatisasi; Seperti yang Anda lihat, menggunakan skrip shell akan sangat menyederhanakan upaya ini. Jangan ragu untuk memberi tahu kami jika Anda menemukan artikel ini bermanfaat dan jangan ragu untuk menambahkan ide atau komentar Anda sendiri melalui formulir di bawah ini.