2017-01-06 10 views
0

ここに初めてのユーザー。2ファイルに書き込むためのwgetが必要

  • のLinuxスパイク4.4.36-サーバ2.mga5#1 SMP火12月6日午後05時32分56秒UTC 2016 x86_64のx86_64でのx86_64のGNU/Linuxののlinux-gnuの上に構築された

  • GNU Wgetは1.15

  • GNUのbashのバージョン4.3.48(1)-release(x86_64版-mageia-のlinux-gnuの)私は、ファイルをダウンロードするためにwgetのを使用してcronジョブを持っている

。簡単な仕事。私は自分の電子メールでその仕事の検証を見たいと思う。私はこれをうまく機能させるのに部分的に成功しましたが、電子メールはwgetログ情報ではなくcronの出力で表示されます。ここに例があります。

cronジョブ:動作しますが、私のメールが全体wgetのログを運ぶ

wget --user=<usr> --password=<passwd> -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg -a /usr/share/xplanet/logs/clouds.log 

(:このcronジョブによって初期化

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

シェルスクリプト(update_clouds.sh)は、この行います/usr/share/xplanet/logs/clouds.log)を参照してください。私はちょうど最後の取引がその電子メールに表示されるようにしたい。

最初は、wgetのログオプション-oと-aの両方を使用できると思っていました。システムログに追加して、自分のメールの本文に必要なファイルを上書きすることはできますが、それはうまくいきません。 Wgetは、コマンドラインで最後のオプションを使用するだけで、両方を使用することはありません。

私はちょうどwgetのログから最後の30行を取り出して郵送したという解決策を得ました。それはうまくいったが、非効率的で醜い。

/usr/local/bin/update_clouds.sh ; tail -30 /usr/share/xplanet/logs/clouds.log > /usr/share/xplanet/logs/update_clouds.txt ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

私は "tee"を使ってみましたが、どちらも動作しませんでした。あたかもteeが何も通らず空のファイルを生成しているようです。私は電子メールを受け取りますが、体には何もありません。私は前にティーを使用したことがないし、私はそれにハンドルを持っているか分からない。

wget --user=mark9118 --password=xplanetmap -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg -a /usr/share/xplanet/logs/clouds.log 2>&1 |tee /usr/share/xplanet/logs/update_clouds.txt 

これまでに読んだことがある場合は、この猫に多くのスキンがあるように見えるかもしれません。私の好みはwgetにファイルをダウンロードさせ、ログファイルを解析してから、コマンドを実行して電子メールを送るだけです。

私のアプローチが間違っていると思われる場合は、もっと簡単で機能的で経済的な方法があれば教えてください。私はそれを見ていきたいと思います。

助けてください。

マーク

答えて

0

私は試行錯誤のカップルより多くの時間後に自分の質問に答えますよ。私が何をしたか

されました:

  1. のwgetのネイティブログファイル機能を放棄します。これは標準出力への出力を得ました。

  2. リダイレクトされた標準エラーと標準出力をテキストファイルに書き込んで、管理者に郵送します。

  3. 同じ行に、郵送するテキストファイルの内容をupdate_cloudsのログファイルに追加するコマンドを追加しました。

  4. スクリプトを実行してメールで通知するようにcronジョブを設定しました。

シェルスクリプト内のコマンドは次のようになります。私は不必要にコミュニティにもまれていることが申し訳ない

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Updated Clouds" -r "Shuttle Cron<[email protected]>" [email protected] < /usr/share/xplanet/logs/update_clouds.txt ; 

wget --user=xxxxxx --password=xxxxxxxxxx -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg 2> /usr/share/xplanet/logs/update_clouds.txt ; cat /usr/share/xplanet/logs/update_clouds.txt >> usr/share/xplanet/logs/clouds.log 

cronジョブはこれです。私はこのことについて助けを得る機会に感謝します。私はちょうどパートタイムの愛好家で、私はこのことを学びます。今日は確かにいくつかのものを学びました。

マーク

関連する問題