我正在嘗試使用Bash腳本來執行某些日誌條目並通過swatch使用swatch生成更加用戶友好的通知電子郵件。但是,我發現當swatch拾取相應的日誌文件行以匹配特定的應用程序時,Bash腳本與sh: script: No such file or directory
錯誤。Bash腳本失敗 - 撿起假正面腳本調用
這似乎是由於問題的輸出類似的日誌行: [2017-05-22 20:00:41] somehost someapp[3999]: INFO: <script>: bad stuff happened bruh
我測試過的腳本出從東西像rsyslog現在輸出到/ var/log/messages文件和安全,這不要不會造成問題。我試圖使這些通知的具體應用程序只是有問題,因爲日誌行本身包括<script>
,我不能排除。具體來說,這似乎只與<script
絆倒,因爲我已經搞砸了刪除可能被解釋爲除了文本之外的東西的日誌行中的字符。
有關如何不讓Bash腳本嘗試將<script>
解釋爲原始日誌中的文件/目錄的任何想法?如果建議的答案是簡單地將這個問題簡單化,那就更好了。我試過使用sed -i 's/\<script\>//g ${@}
刪除<script>
以去除和存儲到一個臨時變量,目的是做類似於:echo -e "${plainenglish}\n\nThe original log message is:${logline}" >> $outputfile
但我得到了上述相同的錯誤。
編輯:更多信息。有問題的應用程序是Kamailio,其中大部分來自路由執行的記錄都是由xlog模塊寫入的。默認情況下,xlog會在您登錄的所有內容前面推送<script>
。該模塊確實包含用於前綴的參數覆蓋(modparam),默認爲<script>
。
你可以發佈一個你正在使用的Bash腳本的最小例子嗎? –
這不會發生。也許你正在調用'eval','sh','ssh','su'或類似的東西。此外,仔細檢查,因爲您的錯誤信息,似乎您使用的是說你在使用''bash' sh' –
我這裏還有一些片段: 從樣本的配置: 'watchfor /假裝這是正則表達式/ EXEC 「bash /path/to/somescript.sh $ _」' From Bash script: ' #!/ bin/bash#< - - 這個bash表明這是/ bin/bash而不是/ bin/sh HOST = $(echo -e $ @ | cut -d「」-f 3) MSG =「This請參閱下面的冒犯日誌:「 echo -e」\ n \ n $ {@}「>> $ MSG ' – Ruhrohshingo