Menggunakan skrip shell untuk mengautomasikan tugas penyelenggaraan sistem Linux - Bahagian 4

Menggunakan skrip shell untuk mengautomasikan tugas penyelenggaraan sistem Linux - Bahagian 4

Beberapa ketika dahulu saya membaca bahawa salah satu ciri yang membezakan pentadbir / jurutera sistem yang berkesan adalah kemalasan. Ia seolah -olah sedikit bercanggah pada mulanya tetapi penulis kemudian menerangkan mengapa:

Siri RHCE: Automatikkan Tugas Penyelenggaraan Sistem Linux - Bahagian 4

Sekiranya sysadmin menghabiskan sebahagian besar masa menyelesaikan masalahnya dan melakukan tugas berulang, anda boleh mengesyaki dia tidak melakukan perkara yang betul. Dengan kata lain, pentadbir / jurutera sistem yang berkesan harus membangunkan rancangan untuk melaksanakan tugas berulang dengan tindakan yang kurang di bahagiannya, dan harus meramalkan masalah dengan menggunakan,

Contohnya, alat yang dikaji semula dalam Bahagian 3 - Laporan Aktiviti Sistem Monitor menggunakan alat Linux dalam siri ini. Oleh itu, walaupun dia mungkin tidak banyak melakukan, itu kerana kebanyakan tanggungjawabnya telah dijaga dengan bantuan skrip shell, yang akan kita bicarakan dalam tutorial ini.

Apa itu skrip shell?

Dalam beberapa perkataan, skrip shell tidak lebih dan tidak kurang dari satu program yang dilaksanakan langkah demi langkah oleh shell, yang merupakan program lain yang menyediakan lapisan antara muka antara kernel Linux dan pengguna akhir.

Secara lalai, shell yang digunakan untuk akaun pengguna di RHEL 7 adalah bash (/bin/bash). Sekiranya anda mahukan penerangan terperinci dan latar belakang sejarah, anda boleh merujuk kepada artikel Wikipedia ini.

Untuk mengetahui lebih lanjut mengenai set ciri -ciri yang besar yang disediakan oleh shell ini, anda mungkin ingin menyemaknya halaman lelaki, yang dimuat turun dalam format pdf di (perintah bash). Selain daripada itu, diandaikan bahawa anda sudah biasa dengan arahan Linux (jika tidak, saya sangat menasihatkan anda untuk melalui panduan dari pemula ke artikel sysadmin di Tecmint.com sebelum meneruskan). Sekarang mari kita mulakan.

Menulis skrip untuk memaparkan maklumat sistem

Untuk kemudahan kami, mari buat direktori untuk menyimpan skrip shell kami:

# skrip mkdir # CD skrip 

Dan buka fail teks baru yang dinamakan System_info.sh dengan editor teks pilihan anda. Kami akan bermula dengan memasukkan beberapa komen di bahagian atas dan beberapa arahan selepas itu:

#!/Bin/Bash # Sample Skrip Ditulis untuk Bahagian 4 Siri RHCE # Skrip ini akan mengembalikan set maklumat sistem berikut: # -HostName Maklumat: echo -e "\ e [31; 43m ***** Maklumat Nama Host ***** \ e [0m "hostnamectl echo" " # -file sistem cakera sistem: echo -e" \ e [31; 43m ***** Penggunaan ruang cakera sistem fail ***** \ e [0m "df -h echo" " # -free dan memori yang digunakan dalam sistem: echo -e" \ e [31; 43m ***** Memori Percuma dan Digunakan ***** \ e [0m "echo percuma" " # -System uptime and load: echo -e" \ e [31; 43m ***** Sistem masa dan beban ***** \ e [0m "Uptime echo" " # -logged -in pengguna: echo -e" \ e [31; 43m ***** Pada masa ini pengguna log masuk ***** \ e [0m "Who echo" " # -top 5 Proses sejauh penggunaan memori berkenaan echo -e" \ e [31; 43m ***** Proses 5 yang memakan memori teratas ***** \ e [0m "ps -eo%mem,%cpu, comm -sort = -%mem | head -n 6 echo" "echo -e" \ e [1; 32mdone.\ e [0m " 

Seterusnya, berikan skrip melaksanakan keizinan:

# chmod +x System_info.sh 

Dan jalankan:

./System_info.sh 

Perhatikan bahawa tajuk setiap bahagian ditunjukkan dalam warna untuk visualisasi yang lebih baik:

Skrip shell pemantauan pelayan

Fungsi itu disediakan oleh arahan ini:

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

Di mana Warna1 dan Warna2 adalah warna latar depan dan latar belakang (lebih banyak maklumat dan pilihan dijelaskan dalam entri ini dari arch linux wiki) dan adalah rentetan yang ingin anda tunjukkan dalam warna.

Mengautomasikan tugas

Tugas yang mungkin anda perlukan untuk mengotomatisasi mungkin berbeza dari kes ke kes. Oleh itu, kita tidak boleh meliputi semua senario yang mungkin dalam satu artikel, tetapi kami akan membentangkan tiga tugas klasik yang boleh automatik menggunakan skrip shell:

1) Kemas kini pangkalan data fail tempatan, 2) cari (dan alternatif padam) fail dengan 777 kebenaran, dan 3) Makluman apabila penggunaan sistem fail melebihi had yang ditetapkan.

Mari buat fail yang dinamakan AUTO_TASKS.sh Dalam direktori skrip kami dengan kandungan berikut:

#!/Bin/bash # Sample Skrip untuk mengautomasikan tugas: # -update pangkalan data fail tempatan: echo -e "\ e [4; 32mMengemas kini pangkalan data fail tempatan\ e [0m "dikemas kini jika [$? == 0]; Kemudian echo "pangkalan data fail tempatan dikemas kini dengan betul."lain echo" pangkalan data fail tempatan tidak dikemas kini dengan betul."fi echo" " # -find dan / atau padam fail dengan 777 kebenaran. echo -e "\ e [4; 32mMencari fail dengan 777 kebenaran\ e [0m " # Dayakan sama ada pilihan (mengulas baris lain), tetapi tidak kedua -duanya. # Pilihan 1: Padam fail tanpa meminta pengesahan. Mengandaikan versi mencari GNU. #find -type f -perm 0777 -delete # Opsyen 2: minta pengesahan sebelum memadam fail. Lebih mudah alih di seluruh sistem. cari -type f -perm 0777 -exec rm -i  +; echo "" # -Alert Apabila penggunaan sistem fail melepasi had yang ditetapkan echo -e "\ e [4; 32mMemeriksa Penggunaan Sistem Fail\ e [0m "ambang = 30 semasa baca baris; lakukan # pembolehubah ini menyimpan laluan sistem fail sebagai sistem fail rentetan = $ (echo $ line | awk 'print $ 1') # pembolehubah ini menyimpan peratusan penggunaan (xx% ) Peratusan = $ (echo $ line | awk 'print $ 5') # penggunaan peratusan tanpa tanda %. Penggunaan = $ peratusan%? jika [$ penggunaan -gt $ ambang]; Kemudian echo "Ruang yang ada yang ada dalam sistem fail $ sangat rendah. Digunakan: $ peratusan "fi selesai < <(df -h --total | grep -vi filesystem) 

Sila ambil perhatian bahawa terdapat ruang antara kedua -duanya < Tanda -tanda dalam baris terakhir skrip.

Skrip shell untuk mencari 777 kebenaran

Menggunakan Cron

Untuk mengambil kecekapan satu langkah lebih jauh, anda tidak akan mahu duduk di hadapan komputer anda dan menjalankan skrip tersebut secara manual. Sebaliknya, anda akan menggunakan Cron Untuk menjadualkan tugas tersebut untuk dijalankan secara berkala dan menghantar hasilnya ke senarai penerima yang telah ditetapkan melalui e -mel atau simpannya ke fail yang boleh dilihat menggunakan penyemak imbas web.

Skrip berikut (Filesystem_USAGE.sh) akan menjalankan yang terkenal df -h perintah, formatkan output ke dalam jadual HTML dan simpannya di laporan.html Fail:

#!/Bin/bash # Skrip sampel untuk menunjukkan penciptaan laporan HTML menggunakan shell Scripting # Web Directory Web_dir =/var/www/html # sedikit CSS dan susun atur meja untuk membuat laporan kelihatan sedikit echo "   .titulo font-size: 1em; Warna: Putih; Latar Belakang:#0863ce; Padding: 0.1em 0.2em; Jadual Border-collapse: runtuh;  jadual, td, th sempadan: 1px pepejal hitam;  "> $ Web_dir/laporan.HTML # Lihat nama hos dan masukkannya di bahagian atas host badan html = $ (hostname) echo "penggunaan fail sistem untuk tuan rumah $ Host
Terakhir dikemas kini: $ (tarikh)

">> $ web_dir/laporan.HTML # Baca output baris DF -H mengikut baris semasa membaca baris; lakukan echo "">> $ web_dir/laporan.html selesai < <(df -h | grep -vi filesystem) echo "
Sistem fail Saiz Gunakan %
">> $ 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

Dalam kita RHEL 7 pelayan (192.168.0.18), ini kelihatan seperti berikut:

Laporan Pemantauan Pelayan

Anda boleh menambah laporan itu sebanyak mungkin maklumat yang anda mahukan. Untuk menjalankan skrip setiap hari di 1:30 petang, Tambahkan entri Crontab berikut:

30 13 * * */root/scripts/filesystem_usage.sh 

Ringkasan

Anda kemungkinan besar akan memikirkan beberapa tugas lain yang anda mahu atau perlu mengautomasikan; Seperti yang anda lihat, menggunakan skrip shell akan memudahkan usaha ini. Jangan ragu untuk memberitahu kami jika anda mendapati artikel ini membantu dan jangan ragu untuk menambah idea atau komen anda sendiri melalui borang di bawah.