วิธีสร้างและส่งอีเมล์สถิติคอมพิวเตอร์โดยอัตโนมัติ
เป็นเรื่องสำคัญที่จะต้องตรวจสอบข้อมูลบันทึกและสถิติต่างๆบนเซิร์ฟเวอร์ของคุณทุกวัน แต่มันจะน่าเบื่อ จะดีหรือไม่ที่จะได้รับอีเมลเดียวพร้อมไฮไลท์ทั้งหมดในแต่ละวันดังนั้นคุณไม่จำเป็นต้องไปที่เซิร์ฟเวอร์เพื่อตรวจสอบปัญหา คู่มือนี้จะแสดงวิธีกำหนดค่าอีเมลอัตโนมัติบน Linux และ Windows.
เราจะครอบคลุมเรื่องนี้โดยเฉพาะสำหรับ Ubuntu และ Windows 8.1 โดยมีการใช้ Gmail เป็นเซิร์ฟเวอร์อีเมลที่ส่งจดหมายจาก หากคุณมี Linux หรือ Windows เวอร์ชั่นอื่นหรือต้องการใช้บริการอีเมลอื่น ๆ คำแนะนำในที่นี้ควรปรับได้ง่าย.
อีเมลอัตโนมัติใน Linux
เราจะใช้แพ็คเกจที่แตกต่างกันสองชุดเพื่อให้ได้สิ่งนี้ ssmtp และ mailutils ดังนั้นให้ติดตั้งทั้งคู่ด้วยคำสั่งต่อไปนี้:
$ sudo apt-get install ssmtp mailutils
เมื่อติดตั้งแล้วเราต้องทำการเปลี่ยนแปลงบางอย่างกับไฟล์กำหนดค่า SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
แก้ไขไฟล์ด้วยการเปลี่ยนแปลงเหล่านี้ (ปลอดภัยที่จะลบข้อความทั้งหมดในไฟล์และคัดลอก / วางการตั้งค่าเหล่านี้หากคุณต้องการ):
# ที่อยู่นี้จะได้รับอีเมลดังนั้นป้อนอีเมลของคุณเองที่นี่หากคุณต้องการรับ.
# ระบุเซิร์ฟเวอร์อีเมลที่นี่ (ปล่อยให้เหมือนกับว่าคุณใช้ Gmail).
mailhub = smtp.gmail.com: 587
# ชื่อโดเมนที่จดหมายจะมาจาก.
rewriteDomain = gmail.com
# ที่อยู่อีเมลที่ควรส่งมาจาก.
# การตั้งค่า SSL / TLS จำเป็นสำหรับ Gmail และเซิร์ฟเวอร์อีเมลอื่น ๆ ส่วนใหญ่.
UseTLS = ใช่
UseSTARTTLS = ใช่
# ชื่อผู้ใช้และรหัสผ่านไปยังบัญชี Gmail ของคุณ.
AUTHUSER = ชื่อผู้ใช้
AuthPass = รหัสผ่าน
# อนุญาตความสามารถในการระบุที่อยู่ที่แตกต่างจากที่อยู่ด้านบน.
FromLineOverride = yes
เมื่อคุณแก้ไขไฟล์เสร็จแล้วคุณจะต้องเปลี่ยนการอนุญาตเนื่องจากรหัสผ่าน Gmail ของคุณถูกเก็บไว้ในรูปแบบธรรมดา.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
มีความปลอดภัยมากขึ้นในการรูทเป็นเจ้าของไฟล์ แต่จากนั้นเราจะต้องใช้คำสั่ง sudo ในสคริปต์ของเราและมันจะแจ้งให้เราใส่รหัสผ่านดังนั้นการเอาชนะวัตถุประสงค์ของการทำให้กระบวนการทั้งหมดนี้เป็นไปโดยอัตโนมัติ.
หากคุณกำลังใช้เซิร์ฟเวอร์ที่ใช้ร่วมกันและกังวลว่ารหัสผ่านของคุณจะถูกเก็บไว้ในรูปแบบธรรมดาและสามารถอ่านได้โดย root ให้สร้างบัญชี Gmail ที่ถูกทิ้งหรือใช้เซิร์ฟเวอร์อีเมลที่ไม่ต้องการการรับรองความถูกต้องตั้งแต่แรก.
เพื่อให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องลองอีเมลทดสอบ:
$ echo "การทดสอบ" | mail -s "การตั้งค่าการทดสอบจดหมาย" [email protected]
“ การทดสอบ” จะอยู่ในส่วนของอีเมลและหัวเรื่องจะเป็น“ การตั้งค่าเมลทดสอบ” ตรวจสอบอีเมลของคุณเพื่อให้แน่ใจว่าคุณได้รับ.
การเขียนสคริปต์สำหรับอีเมล
ตอนนี้เราสามารถส่งอีเมลจากบรรทัดคำสั่งมาเขียนสคริปต์ที่จะส่งข้อมูลพื้นฐานเกี่ยวกับระบบของเรา.
#! / bin / ทุบตี
# ตรวจสอบพื้นที่ฮาร์ดไดรฟ์
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
# ส่งอีเมล
cat /home/geek/email.txt | อีเมล -s "ข้อมูลเซิร์ฟเวอร์รายวัน" [email protected]
# ลบไฟล์ที่เราสร้าง
rm /home/geek/email.txt
เห็นได้ชัดว่าคุณสามารถรับข้อมูลเชิงลึกได้มากขึ้นด้วยสคริปต์ของคุณและทำให้การจัดรูปแบบดีขึ้นนิดหน่อย แต่นี่คือลักษณะที่ปรากฏในอีเมลของเรา:
ตอนนี้สคริปต์เขียนและทดสอบแล้วเราสามารถใช้ cron เพื่อรันมันโดยอัตโนมัติในเวลาเดียวกันทุกวัน ในตัวอย่างนี้เราจะกำหนดค่าอีเมลที่จะส่งเวลา 2:00 น. ทุกเช้าเพื่อให้เราสามารถผ่านข้อมูลในวันนั้น.
$ crontab -e
สำหรับอีเมล 2:00 น. ให้เพิ่ม:
0 2 * * * /home/geek/script.sh
เราได้เขียนบทความทั้งหมดเกี่ยวกับไฟล์ crontab หากคุณต้องการความช่วยเหลือเพิ่มเติมในส่วนนี้.
อีเมลอัตโนมัติใน Windows
การส่งอีเมลที่บรรทัดคำสั่งนั้นเป็นไปได้ผ่าน PowerShell แต่เราพบว่าการใช้งานฟังก์ชั่นนี้ง่ายขึ้นมากเมื่อใช้แอพของบุคคลที่สามโดยเฉพาะเมื่อใช้ Gmail SendEmail เป็นโปรแกรมฟรีสำหรับ Windows ที่ทำให้การทำงานร่วมกับ Windows Task Scheduler และ Gmail เป็นเรื่องง่าย คลิกลิงก์ด้านบนเพื่อดาวน์โหลดสำเนาล่าสุดและตรวจสอบให้แน่ใจว่าคุณได้รับรุ่นที่รองรับ TLS.
เมื่อคุณดาวน์โหลด SendEmail แล้วให้แตกไฟล์ zip และใส่เนื้อหาไว้ในที่ที่คุณสามารถเก็บไว้ได้ตราบใดที่คุณวางแผนที่จะส่งอีเมลอัตโนมัติ ในตัวอย่างนี้เราจะเก็บโปรแกรมไว้ใน C: \ SendEmail
ลองทดสอบ SendEmail เพื่อให้เข้าใจถึงวิธีการทำงาน เปิดพรอมต์คำสั่งโดยพิมพ์ cmd ลงในเมนู Start หรือ Run (Ctrl + R).
เมื่อเปิดพรอมต์คำสั่งให้ใช้คำสั่งเปลี่ยนไดเรกทอรีเพื่อนำทางไปยังตำแหน่งที่คุณเก็บไฟล์ SendEmail.
cd C: \ SendEmail
ตอนนี้เราสามารถลองส่งอีเมล์ทดสอบโดยใช้คำสั่งต่อไปนี้:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com 5387 -xu ชื่อผู้ใช้ -xp รหัสผ่าน -u "ทดสอบหัวเรื่องอีเมล" -m "นี่คืออีเมลทดสอบ"
แน่นอนแทนที่ "ชื่อผู้ใช้" และ "รหัสผ่าน" ด้วยข้อมูลบัญชีของคุณก่อนที่จะดำเนินการคำสั่ง.
นี่คือสิ่งที่คำสั่งด้านบนทำจริง:
ส่งอีเมล
รันโปรแกรม.
-ฉ
- จากที่อยู่
-เสื้อ
- ไปยังที่อยู่
-s
- เซิร์ฟเวอร์ SMTP
-xu
- ชื่อผู้ใช้บัญชี
-XP
- รหัสผ่านบัญชี
-ยู
- หัวเรื่องของอีเมล
-ม.
- ข้อความเนื้อหาอีเมล์
ตรวจสอบกล่องจดหมายของคุณเพื่อให้แน่ใจว่าคุณได้รับอีเมลทดสอบจากนั้นเราสามารถดำเนินการเขียนสคริปต์ที่จะส่งข้อมูลเซิร์ฟเวอร์ให้เรา.
การเขียนสคริปต์สำหรับอีเมล
เพื่อให้ได้ประโยชน์สูงสุดจากสคริปต์ของเราเราจะเขียนมันสำหรับ PowerShell เปิด Windows PowerShell ISE โดยพิมพ์ powershell_ise.exe ในพรอมต์เรียกใช้ (Ctrl + R).
ที่ด้านขวาของหน้าต่าง PowerShell ISE คุณสามารถแสดงรายการทุกคำสั่งที่ PowerShell สามารถดำเนินการได้ สิ่งนี้จะช่วยให้คุณเริ่มต้นสร้างประเภทข้อมูลที่คุณต้องการได้ดี ในสคริปต์ของคุณคุณสามารถโทรหาโปรแกรมของบุคคลที่สามเพื่อส่งออกข้อมูลได้เช่นกัน (เช่น SendEmail เป็นแอปของบุคคลที่สาม แต่ PowerShell และ cmd สามารถใช้งานเพื่อทำงานที่ไม่สามารถทำได้).
สำหรับตัวอย่างสคริปต์ของเราเราจะตรวจสอบการใช้งานดิสก์ปัจจุบันของไดรฟ์ C แสดงกระบวนการที่กำลังทำงานอยู่และแสดงไฟล์ทั้งหมดที่มีการแชร์ในเครือข่าย.
# ตรวจสอบพื้นที่ฮาร์ดไดรฟ์
echo "C: การใช้งานไดรฟ์:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk - ตัวกรอง "DeviceID = 'C:'" | เลือกขนาดวัตถุ, FreeSpace >> C: \ SendEmail \ info.txt
# รายการกระบวนการที่กำลังทำงานอยู่
echo "กำลังประมวลผล:" >> C: \ SendEmail \ info.txt
รับการประมวลผล >> 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 5387 -xu ชื่อผู้ใช้ -xu รหัสผ่าน -u "ข้อมูลเซิร์ฟเวอร์รายวัน"
# ลบไฟล์ที่เราทำ
rm C: \ SendEmail \ info.txt
ในสคริปต์นี้ข้อมูลต่างๆจะถูกส่งออกไปยัง C: \ SendEmail \ info.txt จากนั้นข้อความในเอกสารนั้นจะถูกส่งอีเมลถึงเราก่อนที่จะถูกลบ บันทึกสคริปต์ของคุณด้วยนามสกุลไฟล์ ps1 (ไฟล์ PowerShell).
เมื่อสคริปต์ของคุณเสร็จสิ้นให้เรียกใช้การทดสอบอย่างรวดเร็วจากพรอมต์เรียกใช้เพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้อง.
เพียงแค่ใช้ PowerShell
คำสั่งด้วย -ไฟล์
อาร์กิวเมนต์และระบุเส้นทางไปยังสคริปต์ของคุณ.
powershell - ไฟล์ "c: \ SendEmail \ daily-email.ps1"
ตรวจสอบกล่องจดหมายของคุณเพื่อให้แน่ใจว่าคุณได้รับอีเมล - หากไม่ตรวจสอบข้อผิดพลาดทางไวยากรณ์ของสคริปต์ นี่คือตัวอย่างอีเมลที่สร้างจากสคริปต์ตัวอย่างของเรา:
คุณสามารถเล่นกับการจัดรูปแบบ (เช่น echoing บรรทัดว่างระหว่างข้อความ) เพื่อให้แสดงผลได้ดีกว่าบนอุปกรณ์ของคุณหรือดีกว่า แต่คุณสามารถใช้โปรแกรมของบุคคลที่สามซึ่งจะแสดงข้อมูลที่จำเป็นในรูปแบบที่อ่านได้มากกว่า Windows กระบวนการสคริปต์จะยังคงเหมือนเดิม).
เมื่อคุณแก้ไขข้อบกพร่องในสคริปต์แล้วคุณสามารถใช้ Windows Task Scheduler เพื่อทำให้เป็นอัตโนมัติ เปิด Windows Task Scheduler ผ่านเมนูเริ่ม.
ขณะที่ Task Scheduler เปิดให้เลือก Action> Create Basic Task.
ตั้งชื่อภารกิจนี้เช่น "สคริปต์อีเมลรายวัน" แล้วคลิกถัดไป ในหน้าจอถัดไปให้เลือกความถี่ที่คุณต้องการให้สคริปต์อีเมลของคุณทำงานซึ่งอาจเป็นรายวัน จากนั้นเลือกเวลาที่คุณต้องการให้สคริปต์ทำงานและกดถัดไป.
ตอนนี้คุณควรจะอยู่ในส่วน "การกระทำ" ของตัวช่วยสร้างเลือก "เริ่มโปรแกรม" และป้อนข้อความเดียวกับที่เราป้อนในพรอมต์เรียกใช้ก่อนหน้านี้เพื่อทดสอบสคริปต์ของเรา.
กดปุ่ม Next แล้วกด Yes ในหน้าต่างนี้:
คลิกเสร็จสิ้นบนเมนูสุดท้ายจากนั้นคุณก็เสร็จสิ้นการกำหนดเวลาอีเมลอัตโนมัติของคุณ.