CRON (no tty):刪除帶有特定“Message-Id”的消息
我有一種情況,我需要從郵箱(例如**/var/mail/root**)中刪除具有特定Message-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>~iSomeMessageId@messageid.test\n<sync-mailbox>qy"
我嘗試了很多變化
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\>~iSomeMessageId@messageid.test\n\<sync-mailbox\>qy"
迴聲 -e “\n測試” $ ( whoami ) $ 0"
退出 0
<n>~iSomeMessageId@messageid.test\n<sync-mailbox>qy"
打開終端時出錯:未知。
測試 root bash
退出
與本地主機的連接已關閉。
ssh -t localhost 'bash -s' < /tmp/clear_spam_test
輸出:
不會分配偽終端,因為標準輸入不是終端。
未指定收件人。
ssh -T localhost 'bash -s' < /tmp/clear_spam_test
輸出:
沒有指定收件人。
ssh -tt $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH
輸出:
錯誤打開終端:未知。
TEST root /tmp/clear_spam_test
logout
與本地主機的連接已關閉。
ssh -t $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH
輸出:
不會分配偽終端,因為標準輸入不是終端。
消息:ttyname 失敗:設備
的 ioctl 不合適 未指定收件人。
測試根 /tmp/clear_spam_test
ssh -T $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH
輸出:
消息:ttyname 失敗:設備
的 ioctl 不合適 未指定收件人。
測試根 /tmp/clear_spam_test
它都不起作用。我也試過IFS。
這裡同樣的問題。這個 mutt 命令似乎依賴於 cron 無法建構的工作終端視窗。至少對我來說,它有助於使用螢幕啟動虛擬終端:
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>~iSomeMessageId@messageid.test\n<sync-mailbox>qy"