11Jul
Her gün sunucunuzdaki çeşitli günlük verilerini ve istatistikleri kontrol etmek önemlidir, ancak sıkıcı olmakla birlikte büyür. Her günün tüm önemli noktalarıyla tek bir e-posta almak güzel olmaz, bu nedenle sorunlarını kontrol etmek için sunucuya girmek zorunda kalmazsınız. Bu kılavuz size Linux ve Windows'da otomatik e-postaları nasıl yapılandıracağınızı gösterecektir.
Özellikle Ubuntu ve Windows 8.1 için bu konuyu ele alacağız, posta gönderen e-posta sunucusu olarak Gmail kullanılıyor. Linux veya Windows'un başka bir sürümüne sahipseniz veya başka bir e-posta hizmetini kullanmayı tercih ediyorsanız, buradaki talimatlar kolayca adapte edilmelidir.
Linux'ta Otomatik E-postalar
Bunun için ssmtp ve mailutils'i gerçekleştirmek için iki farklı paket kullanacağız, bu yüzden ikisini de aşağıdaki komutu kullanarak kurun:
$ sudo apt-get install ssmtp mailutils
Bu kurulduktan sonraSSMTP yapılandırma dosyasında bazı değişiklikler yapmak için:
$ sudo vi /etc/ssmtp/ ssmtp.conf
Dosyayı bu değişikliklerle düzenleyin( isterseniz dosyadaki tüm metinleri silmek ve kopyalamak / yapıştırmak güvenlidir):
# Bu adres e-postalar alır, dolayısıyla e-postalarınızı almak istiyorsanız buradan kendi e-posta adresinizi girin.
root = kullanıcı adı@gmail.com
# E-posta sunucusunu buradan belirtin( Gmail kullanıyorsanız olduğu gibi bırakın).
mailhub = smtp.gmail.com: 587
# Posta adresinin gelecek etki alanı adı.
rewriteDomain = gmail.com
# Bu e-postaların gönderileceği e-posta adresi.
# SSL ve TLS ayarları, Gmail ve diğer birçok posta sunucusu için gereklidir.
UseTLS = Evet
UseSTARTTLS = Evet
# Gmail hesabınıza kullanıcı adı ve parola.
AuthUser = kullanıcı adı
AuthPass = parola
# Yukarıdaki adresten farklı bir gelen adresi belirleme olanağı verin.
FromLineOverride = yes
Dosyayı düzenlemeyi bitirdiğinizde, Gmail şifrenizin düz metin halinde depolandığı için izinleri değiştirmek isteyeceksiniz.
$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ ssmtp.conf
Her zaman dosyanın sahibine root sağlamak daha güvenli, ancak komut dosyamızda sudo komutunu kullanmak zorunda kalacağızbize bir şifre isteyin, böylece tüm bu süreci otomatikleştirmenin amacını yitirirsiniz.
Paylaşılan bir sunucu kullanıyorsanız ve parolanızın düz metin olarak depolanması ve kök tarafından okunması konusunda endişe duyuyorsanız, atılmış bir Gmail hesabı oluşturun veya başta herhangi bir kimlik doğrulama gerektirmeyen bir e-posta sunucusu kullanın.
Herşeyin doğru yapılandırıldığından emin olmak için bir test e-postası deneyelim:
$ echo "Testing" |posta -s "Posta kurulumunun test edilmesi" [email protected]
"Test" e-postanın gövdesindedir ve konu "Posta kurulumunun test edilmesi" olacaktır. E-postanızı aldığınızdan emin olmak için kontrol edin.
E-postalar için bir Komut Dosyası Yazma
Artık komut satırından e-posta gönderebildiğimiz için, sistemimiz hakkında bize bazı temel bilgi gönderecek bir betik yazalım.
#!/bin/ bash
# Sabit disk alanını denetle
yankı "Sabit disk alanı:" & gt;/home/geek/ email.txt
df -h> gt; & gt;/home/geek/ email.txt
# Giriş yapan kullanıcıları listele
echo "Kullanıcılar şu anda giriş yaptı:" & gt; & gt;/home/geek/ email.txt
kim & gt; & gt;/home/geek/ email.txt
# Halen çalışan süreçleri listeleyin
"Çalışan işlemler" echo: & gt; & gt;/home/geek/ email.txt
ps -e> gt; & gt;/home/geek/ email.txt
# e-posta gönder
kedi /home/geek/ email.txt |posta -s "Günlük sunucu bilgileri" [email protected]
# Oluşturduğumuz dosyayı silin
rm /home/geek/ email.txt
Açıkçası komut dosyanızla daha derinlemesine bilgi alabilir ve biçimlendirmeyi biraz daha güzel yapabilirsinizçıktı bu bizim e-postamızda şu şekildedir:
Şimdi betik yazılmış ve test edilmiştir, cron'u her gün aynı saatte otomatik olarak çalıştırmak için kullanabiliriz. Bu örnekte, her sabah saat 02: 00'de gönderilecek e-postayı yapılandıracağız, o günkü verileri daha geç gidebiliriz.
$ crontab -e
2:00 AM e-postalar için şunu ekleyin:
0 2 * * * /home/geek/ script.sh
Bu bölüm hakkında daha fazla yardıma ihtiyacınız olursa, crontab dosyaları hakkında bir makale yazmıştık.
Windows'da Otomatik E-postalar
E-postaları komut satırında PowerShell aracılığıyla göndermek mümkündür, ancak özellikle Gmail kullanırken bu işlevselliği uygulamak üçüncü parti uygulamalarla çok daha kolay bir yöntemdir. SendEmail, Windows Görev Zamanlayıcı ve Gmail ile entegrasyonu kolaylaştıran Windows için ücretsiz bir programdır. En son kopyayı indirmek için yukarıdaki bağlantıyı tıklayın ve TLS tarafından desteklenen sürümünü kaptığınızdan emin olun.
SendEmail'i indirdikten sonra, otomatik e-postalar göndermeyi planladığınız sürece zip dosyasını çıkarın ve içeriği bir yere saklayabileceğiniz bir yere koyun. Bu örnekte, programı sadece C: \ SendEmail
'da saklayacağız. Nasıl çalıştığına hızlı bir fikir vermek için SendEmail'i test edelim. Başlat veya Çalıştır( Ctrl + R) menüsüne cmd yazarak komut istemini açın.
Komut istemi açıkken SendEmail dosyalarını depoladığınız yere gitmek için dizin değiştir komutunu kullanın.
cd C: \ SendEmail
Şimdi, aşağıdaki komutu kullanarak bir test e-postası göndermeyi deneyebiliriz:
sendEmail -f kullanıcıadı@gmail.com -t kullanıcıadı@gmail.com -s smtp.gmail.com:587 -xu kullanıcı adı -xppassword -u "E-posta konusunu test edin" -m "Bu bir test e-postasıdır."
Açıkçası, komutu çalıştırmadan önce "kullanıcı adı" ve "şifre" yi hesap kimlik bilgilerinizle değiştirin.
Yukarıdaki komutların gerçekte yaptığı şey:
sendEmail programı çalıştırır.
-f - adresi
-t - adres
-s - SMTP sunucusu
-xu - hesap kullanıcı adı
-xp - hesap şifresi
-u - e-posta konusu
-m - e-posta gövde metni
Gelen kutunuzu kontrol edin, emin oluntest e-postasını aldınız ve ardından sunucu bilgisini gönderen bir betik yazmaya geçebiliriz.
E-postalar için bir Komut Dosyası Yazma
Betiğimizden en iyi şekilde yararlanabilmek için PowerShell için yazacağız. Windows PowerShell ISE'yi bir Çalıştır istemine powershell_ise.exe yazarak açın( Ctrl + R).
PowerShell ISE penceresinin sağ tarafında, PowerShell'in yürütebildiği her komutu listeleyebilirsiniz. Bu, bildirmeniz gereken bilgi türlerini üretmek konusunda iyi bir başlangıç yapmanız gerekir. Senaryonuzda ayrıca bilgi çıktısı için üçüncü taraf programları da arayabilirsiniz( örneğin SendEmail üçüncü taraf bir uygulamadır, ancak PowerShell ve cmd bunu normalde yapamayacakları görevleri yerine getirmek için kullanabilir).
Örnek komut dosyamız için, C sürücüsünün geçerli disk kullanımını kontrol eder, şu anda çalışan süreçleri gösterir ve şu anda ağ üzerinden paylaşılmakta olan tüm dosyaları gösteririz.
# Sabit disk alanını kontrol edin
"C: Drive Usage:" & gt;C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Select-Object Size, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt
# Şu anda çalışan süreçleri listeleyin
"Çalışan işlemler" echo "gt; & gt;C: \ SendEmail \ info.txt
alma işlemi & gt; & gt;C: \ SendEmail \ info.txt
# Şu anda paylaşılmakta olan dosyaları / klasörleri listeleyin
"SMB paylaşımları:" & gt; & gt;C: \ SendEmail \ info.txt
get-smbshare & gt; & gt;C: \ SendEmail \ info.txt
# E-postayı
türünde C: \ SendEmail \ info.txt gönderin! C: \ SendEmail \ sendEmail -f kullanıcıadı@gmail.com -t kullanıcıadı@gmail.com -s smtp.gmail.com:587 -xu kullanıcı adı -xp şifresi -u "Günlük sunucu bilgisi"
# Yaptığımız dosyayı sil
rm C: \ SendEmail \ info.txt
Bu betikte çeşitli bilgiler C: \ SendEmail \ info.txt'e gönderilir ve daha sonra bu belgedeki metin silinmeden önce bize e-postayla gönderilir. Senaryonuzu bir ps1 dosya uzantısıyla kaydedin( PowerShell dosyası).
Senaryonuz bittikten sonra, düzgün çalışıp çalışmadığından emin olmak için bir Çalıştır isteminden hızlı bir test yapın.
Sadece powershell komutunu bir -file argümanı ile kullanın ve komut dosyanızın yolunu belirtin.
powershell -file "c: \ SendEmail \ daily-email.ps1"
E-postayı aldığınızdan emin olmak için gelen kutunuzu kontrol edin - yoksa sözdizimi hataları için senaryonuza bakın.Örnek komut dosyamızdan oluşturulan e-postanın şu şekildedir:
Cihazınızda daha güzel görüntülenmesini sağlamak için biçimlendirme ile( örneğin, metin arasında boş satırlar yankılanmak gibi) oynamak ya da daha iyisi bir üçüncü parti program kullanabilirsiniz;Gerekli bilgileri Windows'tan daha okunaklı bir biçimde bastırın( komut dosyası işlemi yine de aynı olacaktır).
Senaryonuzdaki sıkışıklıkları çözdükten sonra onu otomatikleştirmek için Windows Görev Zamanlayıcısı'nı kullanabilirsiniz. Windows Görev Zamanlayıcısı'nı Başlat menüsünden açın.
Görev Zamanlayıcı açıkken, Eylem & gt;Temel Görev Oluşturun.
Bu görevi "Günlük e-posta komut dosyası" gibi bir şey olarak adlandırın ve ileri'yi tıklayın. Bir sonraki ekranda, muhtemelen günlük olarak e-posta komut dosyanızın çalıştırılacağı sıklığı seçin. Ardından, komut dosyasının çalışmasını istediğiniz zamanı seçin ve sonra tıklayın.
Şimdi, sihirbazın "Eylem" bölümünde olmalı, "Bir Program Başlat" ı seçmeli ve komut dosyamızı test etmek için Çalıştır istemine daha önce girdiğimizle aynı metni girmelisiniz.
Bir sonraki adıma geçin ve sonra bu pencerede Evet'e basın:
Son menüdeki Bitir'e tıklayın; otomatik e-postalarınızı zamanlama işlemini tamamlayın.