쉘스크립 수정 질문좀

gwpark의 이미지

#!/usr/bin/env bash
#set -x

# Description : OVERTEMP Alarm Script.
# Ver : 0.1v
# Date : 20170516

BELL='tput bel'
ERRMSG='(OVER|checkpoint)'
PRINTMSG=" Error !!!!"
DestFile='/var/adm/syslog/syslog.log'
BellLIMIT=10


## Define Functions
BELL() {
for (( a=0; a < BellLIMIT ; a++ )); do
echo -e "\n\t\t $(date) $PRINTMSG"
tput bel
sleep 1
done
}

# Main
while :;
do
tail -1 $DestFile | egrep -q "$ERRMSG"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
BELL
fi
sleep 0.1
done

------------------------------------------------
출처 : https://kldp.org/node/111218
------------------------------------------------

위 내용은 출처 내용에서 제가 사용해 연습하기 위해서 조금 경로만 수정한 스크립입니다

해당 목적은 OVERTEMP <--- 이 특정로그가 찍히면 로그를 생성하여 그 로그를 모니터링 하려구 했습니다

여러대를 다 못보니 스크립에서 로그를 만들어서 하려구 했으니 능력이 부족한지 저 스크립을 이해가 안되는지 수정이 안됩니다 다른 검색을 해서 넣어봤는데. 저 스크립에 모니터링만됩니다.
로그가 안만들어지더군여;;

혹시 해당 스크립 수정해서 OVER.log (/home) 쪽으로 생성하게 해줄수 없을까여;

백연구원의 이미지

하시려는게 정확히 뭔지 잘 모르겠지만 일단 적합해보이지 않는군요. /var/adm/syslog/syslog.log 에는 sleep 0.1 초 내에 2 개 이상의 메시지는 발생할 수 없다는 전제도 필요하고요.

차라리 이해한게 맞다면 그냥 아래처럼 한줄로만 해도 될 것 같습니다.

$ tail -F /var/adm/syslog/syslog.log | egrep -q "$ERRMSG" >> OVER.log

소곤소곤

ymir의 이미지

-q 가 아니라 --line-buffered 옵션이 들어가야 할 것 같습니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

백연구원의 이미지

아.. 원문 내용 조합해서 만들다보니 그렇게 되었네요. 말씀하신 내용이 맞습니다.

...
  -q, --quiet, --silent     suppress all normal output
...
      --line-buffered       flush output on every line
...

소곤소곤

gwpark의 이미지

일단 목표는 서버운영중 OVERTEMP <-- 메세지 나오면 로그을 생성해서 /home에 log_OVER.log 로 생성되어 저장함.

ymir의 이미지

#!/bin/bash
 
log_file=/var/log/messages
last_line_end=$(wc -l $log_file | awk '{print $1}')
 
while true
do
	curr_line_end=$(wc -l $log_file | awk '{print $1}')
	let line_diff=curr_line_end-last_line_end
 
	if [ $line_diff -gt 0 ] ; then
		tail -$line_diff $log_file | grep OVERTEMP >> /home/OVERTEMP.log
		last_line_end=$curr_line_end
	fi
 
	sleep 1
done
 
exit 0;

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

gwpark의 이미지

근대 죄송하지만 위내용으로 해봤지만
ast_line_end 변수 값이랑 , curr_line_end 변수 값이 동일함..
last_line_end=$(wc -l $log_file | awk '{print $1}')
curr_line_end=$(wc -l $log_file | awk '{print $1}')
if [ $line_diff -gt 0 ] 비교값은 계속 0일테니.. 로그 생성 안될듯...

last_line_end 기준값 설정을 새로 해야 할듯...

이 부분이 수정이 안되네요 아에? find
LOG_DIR='/var/adm/syslog'
LOG_FILE="syslog.log"
RES="OVER"
find $LOG_DIR -name $LOG_FILE |xargs grep -n $RES

넣어봐서 해봤지만 안되고여;; 혹시 다시 수정가능할까여;

ymir의 이미지

저 위에 있는 tail -F ... 한 줄이면 간단히 되는 내용입니다.

$ tail -F /var/adm/syslog/syslog.log | egrep --line-buffered "$ERRMSG" >> OVER.log

스크립트에서.. 첫번째 루프에서는 두 변수의 값이 같지만..
sleep 하는 동안에 로그가 발생한다면 그 다음 루프에서는 발생한 갯수만큼 차이가 나겠죠..?
어차피 로그가 rotate 되는 경우에 대한 처리도 고려해야 되는 상황이니..
스크립트 공부 목적이 아니시라면, 스크립트보다는 간단히 위 명령으로 처리하시는게 나아보입니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.