サーバー上のさまざまなログデータと統計を毎日確認することは重要ですが、面倒になります。毎日すべてのハイライトが記載された1通のメールを受信するのは素晴らしいことではないので、サーバーにアクセスして問題をチェックする必要さえありませんか?このガイドでは、LinuxおよびWindowsで自動メールを構成する方法を説明します。
これについては、UbuntuとWindows 8.1について具体的に説明し、メールの送信元のメールサーバーとしてGmailを使用します。 LinuxまたはWindowsの別のバージョンを使用している場合、または他の電子メールサービスを使用したい場合は、ここでの手順を簡単に適応できるはずです。
Linuxでの自動メール
これを実現するために、ssmtpとmailutilsの2つの異なるパッケージを使用するので、次のコマンドを使用して両方をインストールします。
$ sudo apt-get install ssmtp mailutils
それらをインストールしたら、SSMTP構成ファイルにいくつかの変更を加える必要があります。
$ sudo vi /etc/ssmtp/ssmtp.conf
これらの変更を加えてファイルを編集します(必要に応じて、ファイル内のすべてのテキストを消去し、これらの設定をコピーして貼り付けるだけで安全です)。
#このアドレスはメールを受信しますので、受信したい場合はここに自分のメールを入力してください。
ろおt=うせrなめ@gまいl。こm
#ここでメールサーバーを指定します(Gmailを使用している場合はそのままにします)。
mailhub = smtp.gmail.com:587
#メールの送信元のドメイン名。
rewriteDomain = gmail.com
#これらの電子メールの送信元の電子メールアドレス。
ほstなめ=うせrなめ@gまいl。こm
#SSL / TLS設定。Gmailやその他のほとんどのメールサーバーに必要です。
UseTLS =はい
UseSTARTTLS =はい
#Gmailアカウントのユーザー名とパスワード。
AuthUser = username
AuthPass = password
#上記とは異なる差出人アドレスを指定できるようにします。
FromLineOverride = yes
ファイルの編集が完了したら、Gmailのパスワードはプレーンテキストで保存されているため、権限を変更する必要があります。
$ すど chもd 640 /えtc/っsmtp/っsmtp。こんf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
rootをファイルの所有者にする方が常に安全ですが、スクリプトでsudoコマンドを使用する必要があり、パスワードの入力を求められるため、このプロセス全体を自動化する目的が失われます。
共有サーバーを使用していて、パスワードがプレーンテキストで保存されてルートで読み取れることが心配な場合は、使い捨てのGmailアカウントを作成するか、そもそも認証を必要としないメールサーバーを使用してください。
すべてが正しく構成されていることを確認するために、テストメールを試してみましょう。
$ echo "テスト" | mail-s「メール設定のテスト」[email protected]
「テスト」はメールの本文にあり、件名は「テストメールの設定」になります。あなたがそれを受け取ったことを確認するためにあなたの電子メールをチェックしてください。
メール用のスクリプトを書く
コマンドラインからメールを送信できるようになったので、システムに関する基本的な情報を送信するスクリプトを作成しましょう。
#!/ビン/バッシュ
#ハードドライブの空き容量を確認する
echo "ハードドライブスペース:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
#ログインしているユーザーを一覧表示します
echo "現在ログインしているユーザー:" >> /home/geek/email.txt
誰>> / home / geek / email.txt
#現在実行中のプロセスを一覧表示
echo "実行中のプロセス:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
#メールを送信する
猫/home/geek/email.txt | mail-s「毎日のサーバー情報」[email protected]
#作成したファイルを削除します
rm /home/geek/email.txt
明らかに、スクリプトをさらに深く理解し、フォーマットを少し良くすることもできますが、これは私たちの電子メールの出力のようになります。
スクリプトが作成されてテストされたので、cronを使用して毎日同じ時刻にスクリプトを自動的に実行できます。この例では、毎朝午前2時に送信されるように電子メールを構成し、その日の後半にデータを確認できるようにします。
$ cろんたb ーえ
午前2:00のメールの場合は、次を追加します。
0 2 * * * /ほめ/げえk/scりpt。sh
記事全体を書きました crontabファイル この部分についてさらにサポートが必要な場合。
Windowsでの自動メール
コマンドラインでメールを送信することはPowerShellを介して可能ですが、この機能の実装は、特にGmailを使用している場合、サードパーティのアプリを使用するとはるかに簡単であることがわかりました。 メールを送る は、WindowsタスクスケジューラおよびGmailとの統合を簡単にするWindowsで利用可能な無料のプログラムです。上記のリンクをクリックして最新のコピーをダウンロードし、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 -xu username -xp password -u "テストメールの件名" -m "これはテストメールです。"
明らかに、コマンドを実行する前に、「username」と「password」をアカウントの資格情報に置き換えてください。
上記のコマンドが実際に行うことは次のとおりです。
メールを送る
プログラムを実行します。
-f
–アドレスから
-t
–対処する
-s
–SMTPサーバー
-コイン
–アカウントのユーザー名
-xp
- アカウントパスワード
ーう
- メールの件名
-m
–メール本文
受信トレイをチェックして、テストメールを受信したことを確認してください。そうすれば、サーバー情報を送信するスクリプトの作成に進むことができます。
メール用のスクリプトを書く
スクリプトを最大限に活用するために、PowerShell用にスクリプトを作成します。実行プロンプト(Ctrl + R)にpowershell_ise.exeと入力して、Windows PowerShellISEを開きます。
PowerShell ISEウィンドウの右側に、PowerShellが実行できるすべてのコマンドを一覧表示できます。これにより、報告が必要な種類の情報を生成するための良いスタートを切ることができます。スクリプトでは、サードパーティのプログラムを呼び出して情報を出力することもできます(つまり、SendEmailはサードパーティのアプリですが、PowerShellとcmdはそれを使用して、通常はできないタスクを実行できます)。
サンプルスクリプトでは、Cドライブの現在のディスク使用量を確認し、現在実行中のプロセスを表示し、ネットワーク上で現在共有されているすべてのファイルを表示します。
#ハードドライブの空き容量を確認する
echo "C:ドライブの使用法:"> C:\ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |選択-オブジェクトサイズ、FreeSpace >> C:\ SendEmail \ info.txt
#現在実行中のプロセスを一覧表示
echo "実行中のプロセス:" >> C:\ SendEmail \ info.txt
get-process >> C:\ SendEmail \ info.txt
#現在共有されているファイル/フォルダを一覧表示します
echo "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ファイル)で保存します。
スクリプトが終了したら、実行プロンプトからクイックテストを実行して、スクリプトが正しく機能していることを確認します。
使用するだけです
パワーシェル
とのコマンド
-ファイル
引数を指定し、スクリプトへのパスを指定します。
powershell -file "c:\ SendEmail \ daily-email.ps1"
受信トレイをチェックして、電子メールを受信したことを確認します。受信していない場合は、スクリプトで構文エラーを確認します。サンプルスクリプトから生成されたメールは次のようになります。
書式設定(テキスト間に空の行をエコーするなど)を試して、デバイス上で見栄えを良くすることができます。さらに、Windowsよりも読みやすい形式で必要な情報を出力するサードパーティのプログラムを使用することもできます(スクリプト作成プロセスは同じです)。
スクリプトのねじれを解決したら、Windowsタスクスケジューラを使用してスクリプトを自動化できます。 [スタート]メニューからWindowsタスクスケジューラを開きます。
タスクスケジューラを開いた状態で、[アクション]> [基本タスクの作成]を選択します。
このタスクに「毎日の電子メールスクリプト」のような名前を付けて、[次へ]をクリックします。次の画面で、メールスクリプトを実行する頻度を選択します(おそらく毎日)。次に、スクリプトを実行する時間を選択して、[次へ]をクリックします。
これで、ウィザードの「アクション」部分が表示され、「プログラムの開始」を選択し、スクリプトをテストするために前に実行プロンプトに入力したのと同じテキストを入力します。
次を押してから、このウィンドウで[はい]を押します。
最後のメニューで[完了]をクリックすると、自動メールのスケジュール設定が完了します。