โฮมเพจ » ทำอย่างไร » วิธีสร้างและส่งอีเมล์สถิติคอมพิวเตอร์โดยอัตโนมัติ

    วิธีสร้างและส่งอีเมล์สถิติคอมพิวเตอร์โดยอัตโนมัติ

    เป็นเรื่องสำคัญที่จะต้องตรวจสอบข้อมูลบันทึกและสถิติต่างๆบนเซิร์ฟเวอร์ของคุณทุกวัน แต่มันจะน่าเบื่อ จะดีหรือไม่ที่จะได้รับอีเมลเดียวพร้อมไฮไลท์ทั้งหมดในแต่ละวันดังนั้นคุณไม่จำเป็นต้องไปที่เซิร์ฟเวอร์เพื่อตรวจสอบปัญหา คู่มือนี้จะแสดงวิธีกำหนดค่าอีเมลอัตโนมัติบน 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

    แก้ไขไฟล์ด้วยการเปลี่ยนแปลงเหล่านี้ (ปลอดภัยที่จะลบข้อความทั้งหมดในไฟล์และคัดลอก / วางการตั้งค่าเหล่านี้หากคุณต้องการ):

    # ที่อยู่นี้จะได้รับอีเมลดังนั้นป้อนอีเมลของคุณเองที่นี่หากคุณต้องการรับ.

    [email protected]

    # ระบุเซิร์ฟเวอร์อีเมลที่นี่ (ปล่อยให้เหมือนกับว่าคุณใช้ Gmail).

    mailhub = smtp.gmail.com: 587

    # ชื่อโดเมนที่จดหมายจะมาจาก.

    rewriteDomain = gmail.com

    # ที่อยู่อีเมลที่ควรส่งมาจาก.

    [email protected]

    # การตั้งค่า 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 ในหน้าต่างนี้:

    คลิกเสร็จสิ้นบนเมนูสุดท้ายจากนั้นคุณก็เสร็จสิ้นการกำหนดเวลาอีเมลอัตโนมัติของคุณ.