Saya punya bash script sederhana yang menjalankan serangkaian pemeriksaan ( ping
, nslookup
, dll) dan kemudian mengirimkan laporan email dengan output dari data tersebut.
Saya ingin email memasukkan informasi tentang berapa lama waktu yang dibutuhkan untuk menjalankan seluruh skrip. Apakah ada cara mudah untuk mengumpulkan informasi itu?
sumber
$SECONDS
; itu hebat! Untuk menambah ini, Anda dapat mengkonversi detik menjadi jam: menit: detik dengan sesuatu sepertidate -d "1970-01-01 ${SECONDS} sec" +'%k:%M:%S'
(lihatman date
opsi pemformatan lainnya).SECONDS=0
satu skrip dan hal yang sama pada skrip lain, akankah mereka saling mengganggu?START_TIME=$SECONDS; dosomething; ELAPSED_TIME=$(($SECONDS - $START_TIME))
. Ini tampaknya sedikit lebih fleksibel untuk penggunaan simultan.Awali dengan perintah Anda
/usr/bin/time
dan perintah waktu akan menampilkan waktu yang dibutuhkan skrip untuk dijalankan. Ini lebih portabel daripada menggunakan sesuatu yangbash
spesifik.sumber
Saat menggunakan
SECONDS
dantime
akan memberi Anda nilai relatif. Jika Anda ingin memiliki nilai absolut untuk Tujuan Audit dan Pelaporan tentang kapan skrip berjalan dan ketika skrip selesai, Anda mungkin ingin mencoba sesuatu seperti ini sebelum dan sesudah perintah Andadate '+%Y%m%d%H%M%S.%N'
. Ini juga bisa memberi Anda rincian yang lebih baik karena dapat menangkap perbedaan sub-detik karena Anda memiliki perintah sepertiping
yang biasanya dijalankan dalam satu detik.sumber
Sarang skrip Anda. Untuk mengirim email ada sejumlah opsi. Saya pribadi mendukung msmtp untuk ini, Anda dapat menentukan sendiri judul "di sini" gaya (inline) atau menggunakan file terpisah dan cat bersama-sama. Ada segala macam alternatif untuk perl ini, python dll.
Garis kosong yang tertinggal itu penting. cat pesan rakitan Anda ke msmtp dengan demikian:
Seorang pesimis akan berulang sampai berhasil beberapa kali.
Payload juga bisa berupa html, dan bisa dibuat php.
Alternatif yang sangat jelek untuk operasi "batchy" semalam katakan adalah membuat cronjob dan hasilnya diemail sebagai pengganti stdout / stderr.
sumber