2011-08-24 1 views
0

현재 웹 사이트에서 유지 관리를 위해 다운되었다고 말하는 경우 저와 다른 수신자를 이메일로 보낼 쉘 스크립트를 만들려고합니다. Curently grep이 "유지 보수를위한 다운"구문을 보았을 때 curl과 grep을 사용하여 변수에 파이프를 연결하려고했지만 웹 사이트가 여전히 정보를 출력한다고하지 않는 경우에도 마찬가지입니다. 나는 문구가 존재한다면 그것이 사실이되도록 vairiable 할 것입니다. 그렇지 않으면 거짓이되고 끝내기 만합니다. Btw 이것은 cronjob을위한 것입니다.웹 사이트에서 유지 관리를 위해 다운되었다고 이메일로 알려주는 쉘 스크립트 작성하기

여기까지 내가 지금까지 생각 해낸 것입니다. P는 그런 멍청한 녀석 인 것을 유감스럽게 생각합니다.

## Sends an email if the website is down for maintanance 
    #RESPONSE = '' 
    curl websiteaddress.com | grep "Down for Maintenance" | read RESPONSE 
    if $RESPONSE 
    then 
    echo "Website is Down" | mail -s "Website is down for maintenance" [email protected] 
    end else 
    exit 

답변

2

변경 :

curl websiteaddress.com | grep "Down for Maintenance" | read RESPONSE 
if $RESPONSE 

사람 :

curl websiteaddress.com | grep -q "Down for Maintenance" 
if [ $? -eq 0 ] ; then 
    echo "Website is Down" | mail -s "Website is down for maintenance" [email protected] 
; fi 

grep -q 그것을하지 않습니다 출력 무엇을 의미하는 "자동 모드"에서 작동 GREP을 알려줍니다. 대신 일치하는 것이 발견되면 0의 리턴 코드로 종료하고 일치하는 것이 없을 경우 1을 리턴합니다. if [ $? -eq 0 ]은 grep의 리턴 코드를 확인합니다.

0

당신의 응답은 파이프로 인해 다른 프로세스에서 올바르게 초기화됩니다. 당신의 호출 스크립트에서 그것은 unkonwn입니다.

당신은 응답을해야하는 경우에는 다음을 수행 할 수

read RESPONSE <<< $(curl websiteaddress.com | grep -q "Down for Maintenance") 
관련 문제