मैंने तय किया कि मैं अपने मीडिया सर्वर को स्वचालित रूप से जागृत करने के लिए एक समाधान चाहता हूं जब तक कि यह dd-wrt पर निर्भर नहीं था।
मेरे पास रास्पबेरी पाई है इसलिए मैंने इसका इस्तेमाल किया क्योंकि यह कम शक्ति है और मैं इसे हर समय ध्यान में नहीं रखता, बेशक इसे किसी भी लिनक्स मशीन से चलाया जा सकता है।
अंतिम समाधान जो मैंने खुद के लिए पाया था, थोड़ा बैश स्क्रिप्ट लिख रहा था। रास्पबेरी-पी निर्भरताएं ईथरवेक और टीसीपीडंप हैं। दोनों रासबियन पर डिफ़ॉल्ट रूप से स्थापित नहीं हैं। साथ ही सर्वर पर वेक ऑन लैन को अन्य पोस्ट में बताए अनुसार सक्षम करने की आवश्यकता है।
sudo apt-get install etherwake
sudo apt-get install tcpdump
वेक स्क्रिप्ट इस प्रकार है:
nano ~/wol.sh
फिर:
#!/bin/bash
pingInterval=60 #time interval, in seconds, between checks that the server is still awake.
target=192.168.x.x #WOL target ip address
targetMAC=00:11:22:33:44:55 #WOL target MAC
wake () {
tcpdump -i eth0 -c 1 -p host $target
etherwake $targetMAC
#echo WOL sent to $target at $targetMAC
return
}
while sleep $pingInterval; do
varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?`
if [ $varPing -eq 0 ]; then
#echo ping success
else
#echo ping fail
wake
fi
done
प्राथमिक विचार यह है कि यह मेरे रास्पबेरी-पीआई से चलाया जाता है जो सर्वर को जगाएगा यदि यह सर्वर के लिए एकल आरपी अनुरोध को नोटिस करता है। यदि सर्वर जागा है, तो यह एक अरप अनुरोध के लिए नहीं सुन रहा है, लेकिन हर बार कुछ पिंग्स भेजें और यह सुनिश्चित करने के लिए कि यह अभी भी जाग रहा है।
मैंने फ़ाइल का नाम wol.sh रखा और इसे निष्पादन योग्य बनाया। फिर इसे @reboot को root के रूप में लॉन्च करने के लिए sudo crontab में रखें। यह tcpdump के लिए है जिसे eth0 और etherwake को सुनने के लिए एलिवेटेड एक्सेस की आवश्यकता है।
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
इसे नीचे तक जोड़ें
@reboot sh /home/pi/wol.sh > /dev/null