CRON(tty 제외): 특정 "Message-Id"가 포함된 메시지 삭제

CRON(tty 제외): 특정 "Message-Id"가 포함된 메시지 삭제

내 편지함에서 삭제해야 하는 상황이 생겼습니다(예:/var/메일/루트) 특정 정보가 포함된 메시지메시지 ID.

다음 코드는 콘솔에서만 작동하지만 cron /etc/crontab에서 실행되는 사용자 상호 작용 없이 이 작업을 수행해야 합니다.

문서:/tmp/clear_spam_test

mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern>[email protected]\n<sync-mailbox>qy"

다양한 변형을 시도했습니다

  1. ssh -tt localhost 'bash -s' < /tmp/clear_spam_test

산출:
mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern\>[email protected]\n\<sync-mailbox\>qy"

echo -e "\nTEST $( whoami ) $0"
exit 0 터미널 열기 오류: 알 수 없음. TEST 루트 bash 종료 localhost에 대한 연결이 닫혔습니다.
<n>[email protected]\n<sync-mailbox>qy"



  1. ssh -t localhost 'bash -s' < /tmp/clear_spam_test

산출:
stdin이 터미널이 아니기 때문에 의사 터미널은 할당되지 않습니다.
수신자를 지정하지 않았습니다.

  1. ssh -T localhost 'bash -s' < /tmp/clear_spam_test

산출:
수신자를 지정하지 않았습니다.

  1. ssh -tt $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

산출:
터미널을 여는 중 오류 발생: 알 수 없음.
TEST 루트 /tmp/clear_spam_test localhost에 대한
로그아웃
연결이 닫혔습니다.

  1. ssh -t $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

산출:
stdin이 터미널이 아니기 때문에 의사 터미널은 할당되지 않습니다.
메시지: ttyname 실패: 장치에 대한 부적절한 ioctl
수신자가 지정되지 않았습니다.
테스트 루트/tmp/clear_spam_test

  1. ssh -T $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

산출:
메시지: ttyname 실패: 장치에 대한 부적절한 ioctl
수신자가 지정되지 않았습니다.
테스트 루트 /tmp/clear_spam_test

이들 중 어느 것도 작동하지 않습니다. IFS도 시도했습니다.

답변1

여기서도 같은 문제가 발생합니다. 이 mutt 명령은 cron이 빌드할 수 없는 작동하는 터미널 창에 의존하는 것 같습니다. 적어도 나에게는 screen을 사용하여 가상 터미널을 시작하는 것이 도움이 됩니다.

screen -d -m  mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern>[email protected]\n<sync-mailbox>qy"

관련 정보