複数のサーバーで Maldet を実行し、結果を確認するために cronjob の出力をメールアドレスにリンクしました。この方法は9つのサーバーでうまく機能しますが、10番目のサーバーでは出力が異なります。
通常、私たちは画面の最後の出力を取得しますが、問題のサーバーではすべての出力行を取得します。 Maldetは検索するファイルごとに1行を書き換えるため、画面の行の先頭から返された内容はメッセージの新しい行に出力されます。
例2:
いいね:
maldet(30251): {scan} setting nice scheduler priorities for all operations: cpunice 19 , ionice 6
maldet(30251): {scan} file list completed in 172s, found 3850 files...
maldet(30251): {scan} found clamav binary at /usr/bin/clamscan, using clamav scanner engine...
maldet(30251): {scan} scan of / (3850 files) in progress...
**maldet(30251): {scan} scan completed on /: files 3850, malware hits 0, cleaned hits 0, time 316s** maldet(30251): {scan} scan report saved, to view run: maldet --report 160707-0016.30251
悪い:
maldet(2198): {scan} 3577/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3578/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3579/3587 files
scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3580/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3581/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3582/3587 files scanned: 0 hits 0
cleaned[1Gmaldet(2198): {scan} 3583/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3584/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3585/3587 files scanned: 0 hits 0 cleaned[1Gmaldet
(2198): {scan} 3586/3587 files scanned: 0 hits 0 cleaned[1Gmaldet(2198): {scan} 3587/3587 files scanned: 0 hits 0 cleaned
maldet(2198): {scan} scan completed on /: files 3587, malware hits 0, cleaned hits 0, time 654s
maldet(2198): {scan} scan report saved, to view run: maldet --report 160707-0045.2198
ご覧のとおり、すべてのファイルが出力に記載されています。ただし、メールにリダイレクトする場合にのみ該当します。画面にありません。
CentOS Linuxバージョン7.0.1406(コア)を実行しています。
答え1
画面に書き込むと、CR文字はカーソルを行の先頭に移動し、次の文字が前の文字を上書きします。ただし、Maldetは端末に書き込むときにこのメカニズム(および例に示されている制御コード)のみを使用する必要があります。本当の質問は、なぜその奇妙なサーバーのMaldetが出力がパイプではなく画面に出力されると思うのかです。