pam_mail의 사용자 정의 motd 스크립트와 같이 /var/spool/mail/$USER의 "새로움"/"읽은 상태"를 확인하세요.

pam_mail의 사용자 정의 motd 스크립트와 같이 /var/spool/mail/$USER의 "새로움"/"읽은 상태"를 확인하세요.

유사한 메일이 있는지 어떻게 확인 bash하거나 python(선호) 할 수 있나요?unread/var/spool/mail/$USERpam_mail

내 마음대로 맞춤설정하는 데 사용하고 싶습니다.모드 스크립트,motd.dynamic

답변1

메일함 파일에 읽지 않은 메시지가 있는지 확인하는 전통적인 방법은 액세스 시간이 수정 시간보다 빠른지 여부를 확인하는 것입니다.

다음 명령을 사용하여 이러한 시간을 쉽게 찾을 수 있습니다 stat. 이러한 값은 사용자 정의 출력 형식을 지정하여 셸로 가져올 수 있습니다.

eval $(stat -c 'atime=%X; mtime=%Y' /var/spool/mail/$USER)

그런 다음 다음 값을 비교할 수 있습니다.

if [ $atime -le $mtime ]; then echo 'You have new mail'; fi

더욱 강력하게 만들려면 먼저 메일 파일이 존재하는지 확인하세요.

답변2

나는 @wurtel이 나에게 준 아이디어를 받아들여 그것을 파이썬으로 바꾸었습니다:

def mail():
    # See https://tools.ietf.org/html/rfc4155
    import os
    import os.path
    import time
    mailbox = '/var/spool/mail/' + curr_user()

    def d( content, color = COLOR_NORMAL ):
        return colored( justify( content, 1 ) + '\n', color )

    def none():
        return d( 'No new mail' ) if MAIL_NONE_DISPLAY else ''

    if not os.path.isfile( mailbox ): return none()

    stat = os.stat( mailbox )
    if stat.st_mtime > stat.st_atime:
        # mailbox has been modified after accessed.
        if MAIL_NEW_COUNT:
            # check how many new mails.
            count = 0
            newlines = 2

            for l in open( mailbox ):
                if l.isspace(): newlines += 1
                else:
                    # New == We have a From header the date > atime.
                    if newlines == 2 and l.startswith( 'From ' ) and time.mktime( time.strptime( l.split( None, 2 )[2].strip() ) ):
                        count += 1
                    newlines = 0

            # open() will change access time, correct it.
            os.utime( mailbox, (time.time(), stat.st_mtime) if MAIL_CONSIDER_READ else (stat.st_atime, stat.st_mtime) )

            return d( 'You have {0} new mails'.format( count ), COLOR_WARN ) if count else none()
        else: return d( 'You have new mail', COLOR_WARN )
    else: return none()

관련 정보