コンピュータ統計を自動的に生成して電子メールで送信する方法
毎日サーバー上のさまざまなログデータと統計情報を確認することが重要ですが、それは面倒なことになります。毎日すべてのハイライトが記載された単一のEメールを受信するのは良いことではないでしょうか。そのため、問題を確認するためにサーバーにアクセスする必要すらありません。このガイドでは、LinuxとWindowsで自動電子メールを設定する方法について説明します。.
UbuntuとWindows 8.1については、メールの送信元となるEメールサーバーとしてGmailを使用して、これを具体的に説明します。他のバージョンのLinuxまたはWindowsを使用している場合、または他の電子メールサービスを使用したい場合は、ここに示す手順を簡単に適用できるはずです。.
Linuxでの自動メール
これを実現するために2つの異なるパッケージssmtpとmailutilsを使用するので、次のコマンドを使用して両方をインストールします。
$ sudo apt-get install ssmtp mailutils
それらがインストールされたら、SSMTP設定ファイルにいくつかの変更を加える必要があります:
$ sudo vi /etc/ssmtp/ssmtp.conf
これらの変更を加えてファイルを編集します(必要に応じて、ファイル内のすべてのテキストを消去し、これらの設定をコピーして貼り付けるだけで安全です)。
#このアドレスはEメールを受信しますので、受信したい場合はここにEメールを入力してください.
#ここにメールサーバーを指定します(Gmailを使用している場合はそのままにします)。.
mailhub = smtp.gmail.com:587
#メールの送信元ドメイン名.
rewriteDomain = gmail.com
#これらのEメールの送信元のEメールアドレス.
#Gmailや他のほとんどのメールサーバーに必要なSSL / TLS設定.
UseTLS =はい
UseSTARTTLS =はい
#Gmailアカウントのユーザー名とパスワード.
AuthUser = username
AuthPass =パスワード
#上記とは異なる送信元アドレスを指定できるようにする.
FromLineOverride = yes
ファイルの編集が終わったら、Gmailのパスワードはプレーンテキストで保存されているので、アクセス許可を変更します。.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
rootをファイルの所有者にする方が常に安全ですが、その場合はスクリプトでsudoコマンドを使用する必要があり、それによってパスワードの入力を求められるため、このプロセス全体を自動化するという目的は無効になります。.
共有サーバーを使用していて、自分のパスワードが平文で保存されてrootで読めることが心配な場合は、使い捨てのGmailアカウントを作成するか、まず認証を必要としない電子メールサーバーを使用します。.
すべてが正しく設定されていることを確認するために、テストEメールを試してみましょう。
$ echo "テスト" | mail -s "メール設定のテスト" [email protected]
「テスト中」はEメールの本文にあり、件名は「テストメール設定」になります。Eメールをチェックして、受信したことを確認してください。.
電子メール用のスクリプトを書く
コマンドラインからEメールを送信できるようになったので、システムに関する基本的な情報を送信するスクリプトを作成しましょう。.
#!/ bin / bash
#ハードディスクの空き容量を確認する
"ハードドライブの空き容量:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
#ログインしているユーザーを一覧表示する
echo "現在ログインしているユーザー:" >> /home/geek/email.txt
who >> /home/geek/email.txt
#現在実行中のプロセスを一覧表示する
echo "実行中のプロセス:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
#メールを送る
cat /home/geek/email.txt | mail -s「毎日のサーバー情報」[email protected]
#作成したファイルを削除します
rm /home/geek/email.txt
明らかにあなたはあなたのスクリプトでもっともっと深くなることができてそしてフォーマットをもう少し良くすることさえできます、しかしこれは出力が我々の電子メールのように見えることである:
スクリプトが作成されテストされたので、cronを使用して毎日同じ時刻に自動的に実行することができます。この例では、毎朝午前2時に電子メールが送信されるように設定します。そのため、その日の後半にデータを確認できます。.
$ crontab -e
午前2時のEメールの場合は、次を追加してください。
0 2 * * * /home/geek/script.sh
この部分に関してさらに助けが必要な場合は、crontabファイルに関する記事全体を書きました。.
Windowsの自動メール
コマンドラインで電子メールを送信することはPowerShellを通して可能です、しかし我々はこの機能を実装することがサードパーティのアプリケーションで、特にGmailを使用するときにはるかに簡単であることを発見しました。 SendEmailは、Windows用の無料のプログラムで、WindowsのTask SchedulerやGmailと簡単に統合できます。上記のリンクをクリックして最新版をダウンロードし、必ずTLS対応版を入手してください。.
SendEmailをダウンロードしたら、zipファイルを解凍し、自動メールを送信する予定がある限り、その内容を保存できる場所に置きます。この例では、プログラムをC:\ SendEmailに格納します。
SendEmailを試してみて、それがどのように機能するかをすぐに理解しましょう。 [スタート]または[ファイル名を指定して実行](Ctrl + R)メニューに「cmd」と入力してコマンドプロンプトを開きます。.
コマンドプロンプトを開いた状態で、ディレクトリの変更コマンドを使用してSendEmailファイルを保存した場所に移動します。.
cd C:\ SendEmail
次のコマンドでテスト用のメールを送信してみましょう。
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -x username -xp password -u "テストメールの件名" -m "これはテストメールです。"
明らかに、コマンドを実行する前に、“ username”と“ password”をあなたのアカウント認証情報に置き換えてください。.
上記のコマンドが実際に行うことは次のとおりです。
メールを送る
プログラムを実行する.
-f
- 住所から
-トン
- 対処する
-の
- SMTPサーバー
-xu
- アカウントのユーザー名
-xp
- アカウントパスワード
-う
- メールの件名
-メートル
- メール本文
受信トレイをチェックしてテスト用の電子メールを受信したことを確認したら、サーバー情報を送信するスクリプトの作成に進むことができます。.
電子メール用のスクリプトを書く
スクリプトを最大限に活用するために、それをPowerShell用に作成します。ファイル名を指定して実行プロンプトに「powershell_ise.exe」と入力して、Windows PowerShell ISEを開きます(Ctrl + R)。.
PowerShell ISEウィンドウの右側に、PowerShellが実行できるすべてのコマンドを一覧表示できます。これはあなたがあなたが報告する必要がある情報の種類を生成する上であなたに良いスタートを与えるべきです。スクリプトでは、サードパーティ製のプログラムを呼び出して情報を出力することもできます(つまり、SendEmailはサードパーティ製のアプリですが、PowerShellとcmdは通常はできないタスクを実行するためにそれを使用できます)。.
このスクリプト例では、Cドライブの現在のディスク使用量を確認し、現在実行中のプロセスを表示し、現在ネットワーク経由で共有されているすべてのファイルを表示します。.
#ハードディスクの空き容量を確認する
echo "C:Drive Usage:"> C:\ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "デバイスID = 'C:'" |選択オブジェクトサイズ、FreeSpace >> C:\ SendEmail \ info.txt
#現在実行中のプロセスを一覧表示する
echo "running processes:" >> C:\ SendEmail \ info.txt
取得プロセス>> C:\ SendEmail \ info.txt
#現在共有されているファイル/フォルダを一覧表示する
"SMB共有:" >> C:\ SendEmail \ info.txtをエコーします。
get-smbshare >> C:\ SendEmail \ info.txt
#メールを送る
C:\ SendEmail \ info.txtと入力します。 C:\ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u「毎日のサーバー情報」
#作成したファイルを削除します
rm C:\ SendEmail \ info.txt
このスクリプトでは、さまざまな情報がC:\ SendEmail \ info.txtに出力され、その文書のテキストが削除される前に電子メールで送信されます。スクリプトをps1ファイル拡張子(PowerShellファイル)で保存します。.
スクリプトが完成したら、Runプロンプトからクイックテストを実行して、正しく機能していることを確認します。.
ただ使用する パワーシェル
コマンドを -ファイル
引数とスクリプトへのパスを指定します.
powershell -file "c:\ SendEmail \ daily-email.ps1"
受信トレイをチェックして、電子メールを受信したことを確認します。受信していない場合は、構文エラーがないかスクリプトを確認してください。サンプルスクリプトから生成された電子メールは次のようになります。
あなたはそれがあなたのデバイス上でよりよく表示されるようにフォーマット(テキスト間の空行をエコーすることなど)で遊ぶことができます、あるいはもっと良いあなたはWindowsより読みやすいフォーマットで必要な情報を出力するサードパーティプログラムを使うことができますスクリプト作成プロセスは同じです).
スクリプト内のよじれを解決したら、Windowsタスクスケジューラを使用してそれを自動化できます。スタートメニューからWindowsタスクスケジューラを開きます。.
タスクスケジューラを開いた状態で、[操作]> [基本タスクの作成]を選択します。.
このタスクに「毎日のメールスクリプト」のような名前を付けて、[次へ]をクリックします。次の画面で、メールスクリプトを実行する頻度(おそらく毎日)を選択します。次に、スクリプトを実行する時間を選択して、次にクリックします。.
これで、ウィザードの「アクション」部分に移動し、「プログラムの開始」を選択して、スクリプトをテストするために先に実行プロンプトに入力したのと同じテキストを入力します。.
次にヒットしてから、このウィンドウで[はい]をクリックします。
最後のメニューで[完了]をクリックすると、自動メールのスケジュール設定は完了です。.