Raspberry Pi'nizi Wake-on-LAN Sunucusu Olarak Çalıştırma
Bu yazı, PiMyLifeUp - Running your Raspberry Pi as a Wake-on-LAN Server kaynağından Türkçe'ye çevrilerek hazırlanmıştır.
Bu eğitimde, Raspberry Pi'nizi bağlı herhangi bir cihaza Wake-on-LAN (WoL) paketi göndermek için nasıl kullanacağınızı göstereceğiz.
![]()
Wake-On-LAN, ağ üzerinden belirli bir paket göndererek bir cihazı uyandırmanızı sağlayan bir işlevselliktir.
Raspberry Pi, Wake-on-LAN paketlerini almayı desteklemese de, bunları göndermeye fazlasıyla muktedirdir.
Bu işlevselliği kullanabileceğiniz çeşitli yollar vardır. Ağımızda, bir elektrik kesintisi olduktan sonra bir NAS'ı tekrar açmak için ayarlanmış bir Raspberry Pi'miz var. Her ikisi de bir kesintisiz güç kaynağına (UPS) takılı olduğundan, bu, daha fazla güç tüketen NAS'ın güvenli bir şekilde kapanmasını ve her şey güvenli olduğunda tekrar açılmasını sağlar.
Pi'nizden Wake-on-LAN paketleri göndermek için, etherwake adlı bir yazılım parçası kullanacağız.
Etherwake, Raspberry Pi'nizin bir Wake-on-LAN sunucusu görevi görmesini ve diğer cihazlara paket göndermesini sağlar.
Cihazlarınızı Wake-on-LAN'ı Kabul Edecek Şekilde Hazırlama
Başlamadan önce, Raspberry Pi'nizden bir Wake-on-LAN paketi gönderildiğinde uyanabilmeleri için diğer cihazlarınızı ayarlamak isteyeceksiniz.
Bu adımlar cihazdan cihaza önemli ölçüde farklılık gösterir, bu yüzden bu rehberde bunu ele almayacağız. Wake-on-LAN'ı kurmanın en iyi yolu cihazınızın BIOS'u üzerindendir. Bu, cihaz kapatılmış olsa bile açmanızı sağlar.
Hedef cihazınızda Wake-on-LAN'ı etkinleştirdikten sonra, mesajı gönderebilmeniz için MAC adresini de bilmeniz gerekir.
Çoğu yönlendirici, cihaz listesine göz atarsanız bu MAC adreslerini gösterecektir.
Raspberry Pi'nizi Bir Wake-on-LAN Sunucusu Olarak Ayarlama
Aşağıdaki adımlar, Raspberry Pi'nizi bir Wake-on-LAN Sunucusu olarak çalışacak şekilde ayarlama sürecinde size rehberlik edecek. Bunu, Etherwake adlı ücretsiz bir yazılım parçasını kurarak başaracağız.
Raspberry Pi'ye Etherwake Kurulumu
Raspberry Pi'nizi bir Wake-on-LAN sunucusu olarak çalıştırmak için, etherwake yazılımına güveneceğiz. Bu yazılım paket deposu üzerinden mevcut olduğundan, sonraki birkaç adım inanılmaz derecede basit olacak.
1. Raspberry Pi'mize Etherwake kurmadan önce, paket listesini ve paketlerin kendisini güncellememiz gerekiyor.
Aşağıdaki iki komutu kullanarak Raspberry Pi'nizin işletim sistemini güncelleyin.
sudo apt update
sudo apt upgrade -y
2. Güncelleme tamamlandıktan sonra, aşağıdaki komutu kullanarak Etherwake yazılımını kurabiliriz.
sudo apt install etherwake
Raspberry Pi'nizde Wake-on-LAN İçin Etherwake Kullanma
3. Raspberry Pi'nizde etherwake kurulu olduğunda, onu kullanabilir ve Wake-on-LAN paketleri gönderebilirsiniz.
Ancak, bunun çalışması için, uyandırmak istediğiniz cihazın MAC adresini bilmeniz gerekecek. Bir MAC adresi, ağ adaptörlerini tanımlamak için kullanılır, yani örneğin Wi-Fi'niz ve Ethernet'iniz farklı MAC adreslerine sahip olacaktır.
Bir MAC adresiniz hazır olduğunda bir sonraki adıma geçebilirsiniz.
4. Raspberry Pi'nizden bir Wake-on-LAN paketi göndermek için, sadece "etherwake" komutunu, ardından "-b" seçeneğini ve son olarak MAC adresini kullanmanız gerekiyor.
"-b" seçeneği, etherwake'e Wake-on-LAN paketini belirtilen adrese yayınlamasını (broadcast) söyler.
sudo etherwake MACADDRESS
5. Artık etherwake'in nasıl kullanılacağını bildiğinize göre, ağınızdaki çeşitli cihazları uyandırmak için Raspberry Pi'nize SSH ile bağlanabilirsiniz.
Sadece uyandırmak istediğiniz herhangi bir cihazın "Wake-on-LAN" işlevselliğinin etkin olduğundan emin olun. Tüm cihazlar bunu desteklemez.
Raspberry Pi Wake-on-LAN Sunucunuzu Kullanarak Bir Cihazı Uyanık Tutma
Raspberry Pi'nizin Wake-on-LAN sunucusunu bir cihazı uyanık tutmak için kullanmanız da mümkündür.
Bunu, belirtilen bir IP Adresini ping'leyen ve bağlantısı düştüğünde, Raspberry Pi'mize kurduğumuz etherwake yazılımını kullanarak bir Wake-on-LAN paketi gönderen kısa bir betik yazarak başarıyoruz.
Raspberry Pi'nizi Hazırlama
1. Betiğimizi Python'da yazacağımızdan, önce yorumlayıcının sistemde kurulu olduğundan emin olmalıyız.
Raspberry Pi'nizde aşağıdaki komutu kullanarak Python'u kurun.
sudo apt install python
Raspberry Pi'nizde Bir Wake-on-LAN Betiği Yazma
2. Kurulduktan sonra, aşağıdaki komutu kullanarak "wake_on_lan_server.py" adlı bir Python betiği yazalım.
Dosya adının önünde tilde (~) sembolünü kullanarak, bunu kullanıcınızın ana dizinine kaydedeceğiz.
nano ~/wake_on_lan_server.py
3. Şimdi, bu dosyanın içine, aşağıdaki kod satırlarını girin. Nasıl çalıştığını anlayabilmeniz için ilerledikçe her bölümü açıklayacağız.
import subprocess, time
Bu ilk satırla, betik içinde kullanacağımız iki paketi içe aktarıyoruz.
-
subprocess– Bu paket, Python dışında programlar çalıştırmamızı sağlar. Bu paketi kullanarak, Raspberry Pi'mizdeki Etherwake yazılımını cihazlarınıza Wake-On-LAN paketleri göndermek için kullanabiliriz. -
time– time paketi, cihazı doldurmasını önlemek için döngüler arasında betiği duraklatmamızı sağlar.def _main():
Şimdi "_main()" fonksiyonumuzu tanımlıyoruz. Betik çalıştırıldığında, bu fonksiyon çağrılacak ve ana döngümüzü içerecek.
while True:
Ardından, "while" ve ardından "True" kullanarak sonsuz bir döngü tanımlayalım.
is_alive = subprocess.call(['ping', '-c', '1', "<IPADDRESS>"], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) == 0
Ardından, her döngüde, "ping" komutunu çağırmak ve sonucu "is_alive" değişkeninde saklamak istiyoruz. "<IPADDRESS>" kısmını uyandırmak istediğiniz makinenin IP'siyle değiştirdiğinizden emin olun.
Denenecek ping sayısını "-c" seçeneğini kullanarak kontrol ediyoruz.
if not is_alive:
Şimdi "is_alive" değişkeninin doğru olup olmadığını kontrol ettiğimiz yeni bir koşullu blok oluşturuyoruz. Bu noktadan sonra, uyandırma komutunu göndermeden önce bir UPS'nin durumu gibi ek şeyleri kontrol ederek betiği daha da genişletebilirsiniz.
print("Sending Wake Command")
subprocess.Popen('/usr/sbin/etherwake -b ' + "<MACADDRESS>", shell=True, stdout=subprocess.PIPE)
Sistem bir ping'e yanıt vermiyorsa, komut satırına "Sending Wake Command" metnini yazdırarak başlıyoruz. Ardından Raspberry Pi'ye Etherwake kullanarak MAC adresinize bir Wake-on-LAN isteği göndermesini sağlıyoruz.
"<MACADDRESS>" kısmını uyandırmak istediğiniz cihazın MAC adresiyle değiştirdiğinizden emin olun.
time.sleep(10)
Python betiği tekrar döngüye girmeden önce, onu 10 saniye uyutacağız. Raspberry Pi'nizin bir hostu ne sıklıkla ping'lediğini hızlandırmak için bu sayıyı azaltın.
if __name__ == '__main__':
_main()
Betiğimizde ihtiyacımız olan son kod parçası, Python betiği çalıştırıldığında "_main()" fonksiyonunu çalıştıracak olan şeydir.
4. Wake-on-LAN betiğinizin son sürümü aşağıda gösterdiğimize benzer görünmelidir. Betiği çalıştırırken sorun yaşarsanız, girintilemenin (indentation) doğru olduğundan emin olun.
import subprocess, time
def _main():
while True:
is_alive = subprocess.call(['ping', '-c', '1', "<IPADDRESS>"], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) == 0
if not is_alive:
subprocess.Popen('/usr/sbin/etherwake -b ' + "<MACADDRESS>", shell=True, stdout=subprocess.PIPE)
time.sleep(10)
if __name__ == '__main__':
_main()
5. Betikten memnun olduğunuzda, CTRL + X, ardından Y, sonra ENTER tuşuna basarak kaydedip çıkın.
Betiği Test Etme
6. Basit betiğimiz artık yazıldığına göre, her şeyin doğru çalıştığından emin olmak için onu test etmeliyiz.
Betiği çalıştırmak, terminalde aşağıdaki komutu kullanmak kadar basittir.
sudo python3 ~/wake_on_lan_server.py
7. Şimdi, Raspberry Pi'nizin bir wake-on-LAN sinyali göndermesini istediğiniz cihazı kapatırsanız, sonunda terminalde "Sending Wake Command" metninin göründüğünü görmelisiniz.
Alıcı cihazınız doğru şekilde yapılandırıldıysa, umarım açılacaktır.
Raspberry Pi'niz İçin Bir Wake-on-LAN Servisi Oluşturma
8. Küçük Wake-on-LAN sunucu betiğiniz artık yazıldığına göre, muhtemelen Raspberry Pi'niz açıldığında başlamasını isteyeceksiniz.
Bunu yapmak için, bir servis dosyası oluşturmanız gerekecek. Bu durumda, "wake-on-lan-server" olarak adlandırılacak.
sudo nano /etc/systemd/system/wake-on-lan-server.service
9. Bu dosyanın içine, aşağıdaki satırları yazın.
Bunu yazarken "<USERNAME>" kısmını kullanıcınızın adıyla değiştirdiğinizden emin olun. Dosyanın geri kalanı aynı kalabilmelidir.
[Unit]
Description=UPS Tracker
[Service]
User=root
Group=root
ExecStart=/usr/bin/python3 /home/<USERNAME>/wake_on_lan_server.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
10. Tüm satırları girdikten sonra, CTRL + X, ardından Y, sonra ENTER tuşuna basarak kaydedip çıkabilirsiniz.
11. Servis oluşturulduktan sonra, artık Raspberry Pi'miz açıldığında Wake-on-LAN sunucu betiğimizin de başlaması için onu etkinleştirmek isteyeceğiz.
Bir servisi etkinleştirmek için yapmanız gereken tek şey aşağıdaki komutu çalıştırmaktır.
sudo systemctl enable wake-on-lan-server
12. Ardından, aşağıdaki komutu çalıştırarak servisi başlatmak isteyeceksiniz.
sudo systemctl start wake-on-lan-server
13. Bu noktada, wake-on-lan sunucunuz artık tamamen çalışıyor olmalıdır.
İzlediğiniz cihaz kapanırsa, 10 saniye içinde otomatik olarak bir Wake-on-LAN paketi göndermelidir.
Sonuç
Bu eğitimin bu noktasında, artık Raspberry Pi'nizi ağınızdaki diğer cihazlara Wake-on-LAN sinyalleri göndermek için nasıl kullanacağınızı anlamış olmalısınız.
Bunu başarmak için, Raspberry Pi'nizde Etherwake adlı bir yazılım parçasından yararlandık. Bu yazılımı kullanmayı basit bulduğunuzu umuyoruz.
Bu eğitimi çalıştırmakta herhangi bir sorunla karşılaşırsanız, lütfen aşağıya yorum bırakın.