Điều quan trọng là phải kiểm tra các dữ liệu nhật ký và số liệu thống kê khác nhau trên máy chủ của bạn mỗi ngày, nhưng việc này ngày càng trở nên tẻ nhạt. Thật tuyệt khi nhận được một email với tất cả các điểm nổi bật mỗi ngày, vì vậy bạn thậm chí không cần phải truy cập vào máy chủ để kiểm tra các vấn đề? Hướng dẫn này sẽ chỉ cho bạn cách định cấu hình email tự động trên Linux và Windows.
Chúng tôi sẽ đề cập cụ thể vấn đề này cho Ubuntu và Windows 8.1, với Gmail được sử dụng làm máy chủ email mà thư được gửi từ đó. Nếu bạn có phiên bản Linux hoặc Windows khác hoặc muốn sử dụng một số dịch vụ email khác, hướng dẫn ở đây sẽ dễ dàng điều chỉnh.
Email tự động trong Linux
Chúng tôi 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 này bằng lệnh sau:
$ sudo apt-get install ssmtp mailutils
Sau khi chúng được cài đặt, 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 với những thay đổi này (có thể an toàn chỉ cần 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):
# Địa chỉ này sẽ nhận email, vì vậy hãy nhập email của chính bạn vào đây nếu bạn muốn nhận chúng.
# Chỉ định máy chủ email tại đây (giữ nguyên như thể bạn đang sử dụng Gmail).
mailhub = smtp.gmail.com: 587
# Tên miền mà thư sẽ đến.
rewriteDomain = gmail.com
# Địa chỉ email chứa những email này.
# Cài đặt SSL / TLS, bắt buộc đối với Gmail và hầu hết các máy chủ thư khác.
UseTLS = Có
UseSTARTTLS = Có
# Tên người dùng và mật khẩu cho tài khoản Gmail của bạn.
AuthUser = tên người dùng
AuthPass = mật khẩu
# Cho phép khả năng chỉ định địa chỉ từ khác với địa chỉ ở trên.
FromLineOverride = có
Khi chỉnh sửa xong tệp, bạn sẽ muốn thay đổi các quyền vì mật khẩu Gmail của bạn được lưu trữ ở dạng bản rõ.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Việc đặt root làm chủ sở hữu của tệp luôn an toàn hơn, nhưng sau đó chúng tôi sẽ phải sử dụng lệnh sudo trong tập lệnh của mình và lệnh này sẽ nhắc chúng tôi nhập mật khẩu, do đó đánh bại mục đích tự động hóa toàn bộ quy trình này.
Nếu bạn đang sử dụng máy chủ dùng chung và lo lắng về việc mật khẩu của mình được lưu trữ ở dạng văn bản rõ ràng và có thể đọc được bởi root, hãy tạo tài khoản Gmail riêng 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 ngay từ đầu.
Để đảm bảo mọi thứ đều được định cấu hình chính xác, hãy thử email kiểm tra:
$ echo "Thử nghiệm" | mail -s "Đang kiểm tra thiết lập thư" [email protected]
"Thử nghiệm" sẽ nằm trong phần nội dung của email và chủ đề sẽ là "Thử nghiệm thiết lập thư". Kiểm tra email của bạn để đảm bảo rằng bạn đã nhận được nó.
Viết kịch bản cho email
Bây giờ chúng ta 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 ta một số thông tin cơ bản về hệ thống của chúng ta.
#! / Bin / Bash
# Kiểm tra dung lượng ổ cứng
echo "Dung lượng ổ cứng:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Liệt kê những người dùng đã đăng nhập
echo "Người dùng hiện đã đăng nhập:" >> /home/geek/email.txt
ai >> /home/geek/email.txt
# Liệt kê các quy trình hiện đang chạy
echo "Đang chạy quy trình:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Gửi email
cat /home/geek/email.txt | mail -s "Thông tin máy chủ hàng ngày" [email protected]
# Xóa tệp chúng tôi đã tạo
rm /home/geek/email.txt
Rõ ràng là bạn có thể hiểu sâu hơn rất nhiều với tập lệnh của mình và thậm chí làm cho định dạng đẹp hơn một chút, nhưng đây là kết quả đầu ra trong email của chúng tôi:
Bây giờ tập lệnh đã được viết và thử nghiệm, chúng ta có thể sử dụng cron để tự động thực thi nó vào cùng một thời điểm mỗi ngày. Trong ví dụ này, chúng tôi sẽ định cấu hình email sẽ được gửi vào lúc 2:00 sáng mỗi sáng, vì vậy chúng tôi có thể xem qua dữ liệu vào cuối ngày hôm đó.
$ crontab -e
Đối với email 2:00 sáng, hãy thêm:
0 2 * * * /home/geek/script.sh
Chúng tôi đã viết toàn bộ một bài báo về tệp crontab nếu bạn cần thêm trợ giúp với phần này.
Email tự động trong Windows
Có thể gửi email bằng dòng lệnh 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. Gửi email là một chương trình miễn phí có sẵn cho Windows giúp việc tích hợp với Trình lập lịch tác vụ của Windows và Gmail trở nên 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 rằng 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 đị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 thử SendEmail để biết nhanh cách hoạt động của nó. Mở dấu nhắc lệnh bằng cách nhập cmd vào menu Bắt đầu hoặc Chạy (Ctrl + R).
Khi dấu nhắc lệnh mở, sử dụng lệnh thay đổi thư mục để điều hướng đến nơi bạn đã lưu trữ các tệp SendEmail.
cd C:\SendEmail
Bây giờ chúng ta 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 "Chủ đề email thử nghiệm" -m "Đây là email thử nghiệm."
Rõ ràng, hãy 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.
Đây là những gì lệnh trên thực sự làm:
gửi email
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
- nội dung email
Kiểm tra hộp thư đến của bạn để đảm bảo rằng bạn đã nhận được email thử nghiệm và sau đó chúng tôi có thể chuyển sang viết tập lệnh sẽ gửi thông tin máy chủ cho chúng tôi.
Viết kịch bản cho email
Để khai thác tối đa tập lệnh của chúng tôi, chúng tôi sẽ viết tập lệnh đó cho PowerShell. Mở Windows PowerShell ISE bằng cách nhập powershell_ise.exe vào dấu nhắc Chạy (Ctrl + R).
Ở phía 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 thi. Điều này sẽ giúp bạn có một khởi đầu tốt để tạo ra các loại thông tin mà bạn cần báo cáo. Trong tập lệnh của mì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 (tức là 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 làm được).
Đối với tập lệnh ví dụ của chúng tôi, chúng tôi sẽ kiểm tra việc sử dụng đĩa hiện tại của ổ C, hiển thị các quy trình hiện đang chạy và hiển thị tất cả các tệp hiện đang được chia sẻ qua mạng.
# Kiểm tra dung lượng ổ cứng
echo "C: Drive Usage:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Kích thước đối tượng được chọn, FreeSpace >> C: \ SendEmail \ info.txt
# Liệt kê các quy trình hiện đang chạy
echo "Đang chạy quy trình:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Liệt kê các tệp / thư mục hiện đang được chia sẻ
echo "SMB chia sẻ:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Gửi email
gõ C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u "Thông tin máy chủ hàng ngày"
# Xóa tệp chúng tôi đã tạo
rm C: \ SendEmail \ info.txt
Trong tập lệnh này, nhiều thông tin khác nhau được xuất ra C: \ SendEmail \ info.txt, sau đó văn bản trong tài liệu đó được gửi qua email cho chúng tôi trước khi bị xóa. Lưu tập lệnh của bạn với phần mở rộng tệp ps1 (tệp PowerShell).
Khi tập lệnh của bạn đã hoàn thành, hãy chạy kiểm tra nhanh từ lời nhắc Chạy để đảm bảo tập lệnh hoạt động bình thường.
Chỉ cần sử dụng
quyền hạn
ra 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: \ SendEmail \ daily-email.ps1"
Kiểm tra hộp thư đến của bạn để đảm bảo rằng bạn đã nhận được email - nếu không, hãy xem lại tập lệnh của bạn để biết lỗi cú pháp. Đây là email được tạo từ tập lệnh mẫu của chúng tôi trông như thế nào:
Bạn có thể thử nghiệm với định dạng (chẳng hạn như lặp lại các 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 là 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 ở định dạng dễ đọc hơn Windows ( quá trình viết kịch bản sẽ vẫn như cũ).
Khi bạn đã tìm ra các đường gấp khúc trong tập lệnh của mình, bạn có thể sử dụng Trình lập lịch tác vụ của Windows để tự động hóa nó. Mở Trình lập lịch tác vụ của Windows qua menu Bắt đầu.
Khi Công cụ lập lịch tác vụ đang mở, hãy chọn Hành động> Tạo tác vụ cơ bản.
Đặt tên cho nhiệm vụ này như “Tập lệnh email hàng ngày” và nhấp vào tiếp theo. Trên màn hình tiếp theo, hãy chọn tần suất bạn muốn tập lệnh email của mình chạy, có thể là hàng ngày. Sau đó, chọn thời gian bạn muốn tập lệnh chạy và nhấn tiếp theo.
Bây giờ bạn sẽ ở phần “Hành động” của trình hướng dẫn, chọn “Bắt đầu chương trình” và nhập văn bản giống như chúng ta đã nhập vào dấu nhắc Chạy trước đó để kiểm tra tập lệnh của mình.
Nhấn tiếp theo và sau đó nhấn Có trên cửa sổ này:
Nhấp vào Hoàn tất trên menu cuối cùng và bạn đã hoàn tất việc lập lịch gửi email tự động của mình.