web-dev-qa-db-ja.com

CRON(ttyなし):特定の「メッセージID」を持つメッセージを削除

特定のMessage-Idを含むメールボックス(例/ var/mail/root)メッセージから削除する必要がある状況があります。

次のコードはコンソールからのみ機能しますが、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"
終了0
_<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 root/tmp/clear_spam_test
ログアウト
ローカルホストへの接続が閉じられました。

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

出力:
stdinは端末ではないため、疑似端末は割り当てられません。
mesg:ttyname failed:Inappropriate ioctl for device
受信者が指定されていません。
TEST root/tmp/clear_spam_test

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

出力:
mesg:ttyname failed:Inappropriate ioctl for device
受信者が指定されていません。
TEST root/tmp/clear_spam_test

それは機能しません。 IFSも試しました。

2
Pauli

ここでも同じ問題。この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"
3
Werner Bartho