githubのBashスクリプトblcheck形式に電子メール出力の問題があります。
コンソール出力は正しく表示されますが、mailx 経由で電子メールで送信すると、本文ではなく添付ファイルとして表示されます。
33%% dnsbl.inps.de ✓
50%% xbl.spamhaus.org ✓
ファイルまたは電子メールで出力例:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net) ✓ESC(BESC[m
ファイルやメールの形式を変更する方法を教えてください。
CMD がメール本文に送信されませんでした。
sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheck
日付" [email protected]
スクリプト:https://github.com/IntellexApps/blcheck
@john1024と@casの助けと以前の投稿を通して制御文字の削除以下のcmdで問題を修正しました。
CMD: ./blcheck-l -v xx.xx.xx.xx | perl -pe 's/\e([^[]]|[.*?[a-zA-Z]|].*?\a)//g' | col -b | mail -s "blcheck-l -v `date`" email@address
darko-poljakは、非対話型の使用に精通した出力を作成するための新しいオプションと一緒にgithubにフルリクエストを送信しました。
https://github.com/IntellexApps/blcheck/pull/2
答え1
あなたが見ているのはANSIエスケープシーケンスです。blcheck
表示されるテキストの色を変更するために使用されます。ターミナルから。ご存知のように、電子メールでは機能しません。
永久に削除するには、blcheck
お気に入りのエディタを使用してスクリプトを編集します。次の行を探してください。
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)
次の行を次に置き換えます。
RED=
GREEN=
YELLOW=
CLEAR=
これにより、blcheck
最初にANSIシーケンスが追加されるのを防ぐことができます。
より柔軟なアプローチ
端末(ANSI)またはパイプ(ANSIなし)でコードを動作させることができます。次のコードは、stdoutが端末かどうかをテストします。その場合は、カラー変数を目的のANSIシーケンスに設定します。端末でない場合、ANSIシーケンスは生成されません。
RED=
GREEN=
YELLOW=
CLEAR=
if [ -t 1 ]
then
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)
fi