Yalnızca iş çıktısının boş olmaması durumunda bildirim gönderme


12

Bir hizmet için günlük dosyalarını taramak ve burada bulunanlara bağlı olarak işlem yapmak için rundeck kullanıyoruz. Temel olarak, bir kayıt bulunmayan bulunan her öğe için bir git deposu başlatılır ve birkaç dinlenme bitiş noktası çağrılır, ancak bu nokta değildir.

İşi planlanan şekilde çalışacak, birkaç saatte bir söyleyecek ve başarısızlıkla ilgili bildirim gönderecek ve ek olarak yalnızca en az bir işlem yapıldığında (yani, görevdeki kabuk betiği girildiğinde) bildirim göndereceğiz döngü en az bir kez). Komut dosyası, yalnızca, işlemden geçirilecek öğeler bulunduğunda stdout'ta çıktı yayınlayacağı şekilde yazılır.

Geri bildirimde bu gereksinimle bildirimi tetiklemenin bir yolu var mı? Veya sıfırdan bir eklenti yazmadan komut dosyasının bir yolu?

Olası bir çözüm, hata bildirimi tetikleyicisini kapatmak ve hiçbir öğenin işlem görmemesi durumunda komut dosyasının sıfırdan farklı hale getirilmesi olabilir, ancak bunu yapmakta rahat değilim.


Çıktı gerçekten boş mu veya bazı boşluk satırları veya satır başı olabilir mi?
Tensibai

afaics bash perspektifinden boş; benim komut dosyası ile tek bir kabuk adım var, emin değilim ben rundeck etrafında çıktı ile süslemek
13

Komut dosyasının kendisinden bildirim göndermek bir seçenek olabilir mi? Ve böylece rundeck sadece başarısızlık bildirmek ve komut dosyası kendi "Ben bir şey yaptım" bildirim yapar?
Tensibai

Bu aslında iyi bir fikir!
ᴳᵁᴵᴰᴼ

Yanıtlar:


7

Düşünebileceğim yol:

Bildirim eklentisi örnek sayfasından kendi eklentinizi yazmak , örnek posta bildirim kodunu uyarlamanın bir yolu olabilir.

Geri bildirimde başarı bildirimlerini devre dışı bırakın ve komut dosyanızın kendisinde başarı bildirimi bölümünü işleyin. Bu şekilde, normal durumda bir şey yaptığını uyarmak için komut dosyanızın sorumluluğu budur ve komut dosyasının başarısız olduğu konusunda sizi uyarmak yine de sorumluluğu yeniden kontrol eder.


1
Teşekkürler; önde olan araç tarafından sarılmış bir özellik olsun, bazen doğrudan gidebilirsiniz unutmak çok yaygın ....
ᴳᵁᴵᴰᴼ

1

Komutunu şu şekilde değiştirerek bu sorunu biraz tehlikeli bir şekilde halledebildim:

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

Bu, çıktıyı yönlendirir grepve herhangi bir çıktı varsa başarısız olur, ancak grepyine de geçirir, böylece hata durumunda Rundeck'te çıktıyı hala görebilirsiniz.

Tek dezavantajı, boş satırları kaybettiğinize inanıyorum, ancak bizim için çok büyük bir çıkış yapmıyoruz ve uygulamayı uygun bir çıkış koduyla sonlandıracak şekilde güncelleyene kadar bize gelecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.