Cara mengirim pemberitahuan hanya jika output pekerjaan tidak kosong


11

Kami menggunakan rundeck untuk memindai file log untuk suatu layanan, dan mengambil tindakan tergantung pada apa yang ditemukan di sana. Pada dasarnya, untuk setiap item yang ditemukan, di mana catatan tidak ada, repositori git diinisialisasi dan beberapa titik akhir sisanya dipanggil, tetapi bukan itu intinya.

Kami menyiapkan pekerjaan untuk berjalan sesuai jadwal, katakan setiap beberapa jam, dan untuk mengirim pemberitahuan tentang kegagalan, dan juga untuk mengirim pemberitahuan tentang keberhasilan hanya ketika setidaknya satu tindakan telah diambil (mis. Skrip shell dalam tugas dimasukkan loop setidaknya sekali). Script ditulis sehingga hanya memancarkan output pada stdout ketika item yang akan ditindaklanjuti ditemukan.

Apakah ada cara dalam rundeck untuk memicu notifikasi dengan persyaratan ini? Atau cara untuk skrip tanpa menulis plugin dari awal?

Salah satu solusi yang mungkin adalah mematikan pemicu pemberitahuan kegagalan, dan membuat skrip kembali non-nol jika tidak ada item yang ditindaki, tetapi saya tidak nyaman melakukan hal itu.


Apakah output benar-benar kosong, atau bisakah itu memiliki beberapa garis blanck atau carriage return?
Tensibai

afaics itu kosong, dari perspektif bash; ada satu langkah shell dengan skrip saya, tidak yakin saya akan menghiasinya dengan output sekitar
ᴳᵁᴵᴰᴼ

Apakah mengirim pemberitahuan dari skrip itu sendiri menjadi opsi? Dan jadi rundeck hanya memberi tahu tentang kegagalan dan script melakukan notifikasi sendiri "Saya melakukan sesuatu"?
Tensibai

Itu sebenarnya ide yang bagus!
ᴳᵁᴵᴰᴼ

Jawaban:


6

Cara saya bisa memikirkan adalah:

Menulis plugin Anda sendiri, dari halaman contoh plugin pemberitahuan , mengadaptasi contoh kode pemberitahuan email bisa menjadi cara.

Menonaktifkan notifikasi sukses di rundeck, dan menangani bagian notifikasi sukses di skrip Anda sendiri. Dengan cara ini, tanggung jawab skrip Anda untuk memperingatkannya melakukan sesuatu dalam kondisi normal dan itu tetap tanggung jawab untuk memperingatkan Anda bahwa skrip gagal.


1
Terima kasih; ketika Anda mendapatkan fitur yang dibungkus oleh alat yang Anda miliki di depan, sangat umum kadang-kadang untuk melupakan Anda dapat langsung melakukannya ....
ᴳᵁᴵᴰᴼ

1

Saya bisa mengatasi masalah ini dengan cara yang cerdik dengan mengubah perintah menjadi:

/bin/bash -c "your-command-here | { ! grep '^'; }"

Ini mem-pipe output melalui grepdan gagal jika ada output sama sekali, tetapi grepmasih melewati itu sehingga Anda masih bisa melihat output di Rundeck setelah kegagalan.

Salah satu kelemahannya adalah saya yakin Anda kehilangan garis kosong tetapi kami tidak menampilkannya sehingga tidak ada masalah bagi kami, dan itu akan membuat kami tegang sampai kami dapat memperbarui aplikasi untuk diakhiri dengan kode keluar yang tepat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.