Chúng tôi sẽ giới thiệu cụ thể điều này cho Ubuntu và Windows 8.1, với Gmail đang được sử dụng làm máy chủ email mà thư được gửi từ đó. Nếu bạn có một phiên bản Linux hoặc Windows khác, hoặc thích sử dụng một số dịch vụ email khác, các hướng dẫn ở đây phải dễ dàng thích ứng.
Email tự động trong Linux
Chúng ta sẽ sử dụng hai gói khác nhau để thực hiện điều này, ssmtp và mailutils, vì vậy hãy cài đặt cả hai gói với lệnh sau đây:
$ sudo apt-get install ssmtp mailutils
Khi đã cài đặt xong, chúng tôi cần thực hiện một số thay đổi đối với tệp cấu hình SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Chỉnh sửa tệp bằng những thay đổi này (an toàn để chỉ xóa tất cả văn bản trong tệp và sao chép / dán các cài đặt này, nếu bạn muốn):
# This address will receive the emails, so enter your own email here if you want to receive them.
# Specify the email server here (leave as is if you’re using Gmail).
mailhub=smtp.gmail.com:587
# The domain name that the mail will come from.
rewriteDomain=gmail.com
# The email address that these emails should be from.
# SSL/TLS settings, required for Gmail and most other mail servers.
UseTLS=Yes
UseSTARTTLS=Yes
# The username and password to your Gmail account.
AuthUser=username
AuthPass=password
# Allow the ability to specify a from address different than the one above.
FromLineOverride=yes
Khi bạn chỉnh sửa xong tệp, bạn sẽ muốn thay đổi quyền vì mật khẩu Gmail của bạn được lưu trữ trong văn bản thuần túy.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Luôn luôn an toàn hơn để làm cho chủ sở hữu của tệp, nhưng sau đó chúng tôi sẽ phải sử dụng lệnh sudo trong tập lệnh của chúng tôi và nó sẽ nhắc chúng tôi mật khẩu, từ đó đánh bại mục đích tự động hóa toàn bộ quá trình này.
Nếu bạn đang sử dụng máy chủ được chia sẻ và lo lắng về mật khẩu của mình đang được lưu trữ ở dạng văn bản gốc và có thể đọc được bằng thư mục gốc, hãy tạo tài khoản Gmail throwaway hoặc sử dụng máy chủ email không yêu cầu bất kỳ loại xác thực nào.
Để đảm bảo mọi thứ được định cấu hình chính xác, hãy thử một email kiểm tra:
$ echo 'Testing' | mail -s 'Testing mail setup' [email protected]
"Kiểm tra" sẽ nằm trong phần nội dung của email và chủ đề sẽ là "Kiểm tra thiết lập thư". Kiểm tra email của bạn để đảm bảo bạn đã nhận được email đó.
Viết kịch bản cho email
Bây giờ chúng tôi có thể gửi email từ dòng lệnh, hãy viết một tập lệnh sẽ gửi cho chúng tôi một số thông tin cơ bản về hệ thống của chúng tôi.
#!/bin/bash
# Check hard drive space
echo 'Hard drive space:' > /home/geek/email.txt
df -h >> /home/geek/email.txt
# List the users that are logged in
echo 'Users currently logged in:' >> /home/geek/email.txt
who >> /home/geek/email.txt
# List currently running processes
echo 'Running processes:' >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Send the email
cat /home/geek/email.txt | mail -s 'Daily server information' [email protected]
# Delete the file we created
rm /home/geek/email.txt
Rõ ràng bạn có thể có được nhiều hơn chiều sâu với kịch bản của bạn và thậm chí làm cho các định dạng đẹp hơn một chút, nhưng đây là những gì đầu ra trông giống như trong email của chúng tôi:
$ crontab -e
Đối với email 2:00 AM, hãy thêm:
0 2 * * * /home/geek/script.sh
Chúng tôi đã viết toàn bộ một bài viết về các tệp crontab nếu bạn cần thêm trợ giúp về phần này.
Email tự động trong Windows
Gửi email tại dòng lệnh là có thể thông qua PowerShell, nhưng chúng tôi nhận thấy rằng việc triển khai chức năng này dễ dàng hơn rất nhiều với các ứng dụng của bên thứ ba, đặc biệt là khi sử dụng Gmail. SendEmail là một chương trình miễn phí có sẵn cho Windows mà làm cho tích hợp với Windows Task Scheduler và Gmail một cách dễ dàng. Nhấp vào liên kết ở trên để tải xuống bản sao mới nhất và đảm bảo bạn lấy phiên bản được hỗ trợ TLS.
Sau khi bạn đã tải xuống SendEmail, hãy giải nén tệp zip và đặt nội dung ở đâu đó mà bạn có thể lưu trữ chúng miễn là bạn dự định gửi email tự động. Trong ví dụ này, chúng tôi sẽ lưu trữ chương trình trong C: SendEmail
Hãy kiểm tra SendEmail để có cảm nhận nhanh về cách hoạt động của nó. Mở dấu nhắc lệnh bằng cách gõ cmd vào menu Bắt đầu hoặc Chạy (Ctrl + R).
cd C:SendEmail
Bây giờ chúng tôi có thể thử gửi một email thử nghiệm bằng lệnh sau:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Test email subject' -m 'This is a test email.'
Rõ ràng, thay thế "tên người dùng" và "mật khẩu" bằng thông tin đăng nhập tài khoản của bạn trước khi thực hiện lệnh.
Dưới đây là những gì lệnh trên thực tế:
sendEmail
thực hiện chương trình.
-f
- từ địa chỉ
-t
- Đến địa chỉ
-s
- Máy chủ SMTP
-xu
- tài khoản người dùng
-xp
- mật khẩu tài khoản
-u
- chủ đề email
-m
- văn bản nội dung email
Kiểm tra hộp thư đến của bạn để đảm bảo bạn đã nhận được email kiểm tra và sau đó chúng tôi có thể chuyển sang viết một tập lệnh sẽ gửi cho chúng tôi thông tin máy chủ.
Viết kịch bản cho email
Để khai thác tối đa kịch bản của chúng tôi, chúng tôi sẽ viết kịch bản cho PowerShell. Mở Windows PowerShell ISE bằng cách gõ powershell_ise.exe vào dấu nhắc Run (Ctrl + R).
Ở bên phải của cửa sổ PowerShell ISE, bạn có thể liệt kê mọi lệnh mà PowerShell có khả năng thực hiện. Điều này sẽ cung cấp cho bạn một khởi đầu tốt về việc tạo ra các loại thông tin mà bạn cần báo cáo. Trong tập lệnh, bạn cũng có thể gọi các chương trình của bên thứ ba để xuất thông tin (ví dụ: SendEmail là ứng dụng của bên thứ ba nhưng PowerShell và cmd có thể sử dụng nó để hoàn thành các tác vụ mà họ thường không thể thực hiện được).
# Check hard drive space
echo 'C: Drive Usage:' > C:SendEmailinfo.txt
Get-WmiObject win32_LogicalDisk -Filter 'DeviceID='C:'' | Select-Object Size,FreeSpace >> C:SendEmailinfo.txt
# List currently running processes
echo 'Running processes:' >> C:SendEmailinfo.txt
get-process >> C:SendEmailinfo.txt
# List the files/folders currently being shared
echo 'SMB shares:' >> C:SendEmailinfo.txt
get-smbshare >> C:SendEmailinfo.txt
# Send the email
type C:SendEmailinfo.txt | C:SendEmailsendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Daily server info'
# Delete the file we made
rm C:SendEmailinfo.txt
Trong tập lệnh này, thông tin khác nhau được xuất ra C: SendEmail info.txt, và sau đó văn bản trong tài liệu đó được gửi qua email cho chúng tôi trước khi nó bị xóa. Lưu tập lệnh của bạn bằng phần mở rộng tệp ps1 (tệp PowerShell).
Khi tập lệnh của bạn hoàn tất, hãy chạy thử nghiệm nhanh từ lời nhắc Chạy để đảm bảo nó hoạt động đúng cách.
Chỉ cần sử dụng
powershell
lệnh với một
-file
đối số và chỉ định đường dẫn đến tập lệnh của bạn.
powershell -file 'c:SendEmaildaily-email.ps1'
Bạn có thể chơi xung quanh với định dạng (chẳng hạn như lặp lại dòng trống giữa văn bản) để làm cho nó hiển thị đẹp hơn trên thiết bị của bạn, hoặc tốt hơn bạn có thể sử dụng chương trình của bên thứ ba sẽ xuất ra thông tin cần thiết theo định dạng dễ đọc hơn Windows ( quá trình viết kịch bản sẽ vẫn như cũ).
Sau khi bạn đã tìm ra các kinks trong tập lệnh, bạn có thể sử dụng Windows Task Scheduler để tự động hóa nó. Mở Windows Task Scheduler thông qua menu Start.
Bây giờ bạn sẽ ở trên phần "Hành động" của trình hướng dẫn, chọn "Bắt đầu một Chương trình" và nhập cùng văn bản mà chúng tôi đã nhập vào lời nhắc Chạy trước đó để kiểm tra tập lệnh của chúng tôi.