2012-06-20 6 views
0

Я пытался понять это, но не важно, что я пытаюсь сделать, похоже, не работает так, как я хочу. В основном, недостатки в том, что grep не перечисляет имена файлов, когда он находит совпадение (что, как я полагаю, должен делать флаг -H?), И uuencode, похоже, не хочет прикреплять файл в электронная почта. Я пробовал как uuencode, так и кошку, и я ничего не получаю.Uuencode не прикрепляет файл к электронной почте и grep, не перечисляя имена файлов

Кто-нибудь знает, что может быть проблемой здесь?

for i in `ls SystemOut_*[0-9].log`; do 
    grep -inEH '^\[.*(error|exception)' $i >> scannedErrors.txt; 
    mv "$i" "${i%.log}"_scanned.log; 
done 
if [[ -s scannedErrors.txt ]]; then 
    uuencode scannedErrors.txt | mailx -s "Scanned Logfile Errors" [email protected] < Message.txt; 
fi 
/bin/rm scannedErrors.txt; 

ответ

0

uuencode scannedErrors.txt ожидает ввода - когда вызывается только с одним вариантом, он рассматривает этот вариант как имя файла, чтобы включить в выходной, а не имя файла для чтения. Так или сделайте cat scannedErrors.txt | uuencode scannedErrors.txt или uuencode scannedErrors.txt scannedErrors.txt.

Я не обязательно вижу что-то не так с битом grep, но может быть полезно разместить cat scannedErrors.txt там, чтобы убедиться, что вы находите то, что хотите. Вы могли бы также сделать grep ... SystemOut_*[0-9].log, а не цикл for, что сделало бы -H по умолчанию, но вам, вероятно, все равно понадобится цикл for для переименования вещей, если только у вас не будет доступного скрипта rename (скрипт perl, который позволяет креативное переименование через регулярные выражения).

+0

ни одна из этих работ :( 'кошка scannedErrors.txt | UUencode ScannedErrors.txt' или ' UUENCODE scannedErrors.txt scannedErrors.txt' редактировать: Кроме того, я сделал первую часть в цикле, как, что в случае создания новых файлов во время сканирования. Таким образом, я не случайно называю несканированные файлы в качестве отсканированных. –

0

попробовать:

{ cat scannedErrors.txt|uuencode scannedErrors.txt;cat Message.txt;}|mailx -s "Scanned Logfile Errors" [email protected] 

, потому что существует конфликт между | и <

+0

Это работает для прикрепления файла! Очень приятно. Единственная проблема заключается в том, что Message.txt больше не является телом из сообщения, и я не уверен, как это исправить. Я попытался снова с '

+0

Вы можете объединить несколько файлов, plain te xt или uuencoded. В электронном письме файлы uuencoded будут рассматриваться как вложение, текст как тело. –

+0

Ну, когда я включаю этот 'cat Message.txt;' в squiggly brackets, сообщение по-прежнему отправляется нормально, но полностью игнорирует эту часть. Не знаю, почему. –