Αποστολέας Θέμα: Wake on LAN  (Αναγνώστηκε 4652 φορές)

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Wake on LAN
« στις: 22 Οκτ 2009, 07:53:55 μμ »
Ανοίγω εδώ καινούριο thread γιατί το πρόβλημα είναι πιο πολύπλοκο απ' ότι αρχικά φανταζόμουν.

Η ιστορία έχει ως εξής: Παρότι το Ubuntu έχει εργαλείο για να στέλνει το λεγόμενο Magic Packet που "ξυπνάει" τους υπολογιστές μέσω δικτύου, και ενώ το wake on lan μου δούλευε όταν οι υπολογιστές φορούσαν Windows, με το που τους άλλαξα σε Ubuntu, έχασα αυτή τη δυνατότητα. Εννοείται, ότι δεν πείραξα τίποτα στο BIOS, οι ρυθμίσεις παρέμειναν ως είχαν, με το 'Wake on PME' ενεργοποιημένο.

Ψάχνοντας βρήκα ότι, εκτός απ' τη ρύθμιση του BIOS, μπορεί να ρυθμιστεί μέσω software και η κάρτα δικτύου ξεχωριστά. Για να δουλέψει, δηλαδή, το wake on LAN, πρέπει να είναι ενεργοποιημένο και στο BIOS και στην κάρτα δικτύου.

Με την εντολή

Κώδικας: [Επιλογή]
sudo ethtool eth0
βλέπουμε αν η κάρτα υποστηρίζει wake on LAN (wol) και αν είναι ενεργοποιημένο. Σε μένα έδειξε ότι η κάρτα υποστήριζε wol (αναμενόμενο) αλλά ήταν απενεργοποιημένο.

Με την εντολή

Κώδικας: [Επιλογή]
sudo ethtool -s eth0 wol g
ενεργοποιείται το wol με τη λήψη του magic packet. Το έκανα, λοιπόν, σε όλα τα μηχανάκια του εργαστηρίου. Τα έσβησα, δοκίμασα να τα ανοίξω με το wakeonlan αλλά τίποτα!!!

Αποδεικνύεται ότι, όταν σβήνει ο υπολογιστής, σβήνει και η κάρτα δικτύου, παρά την ρύθμιση που κάνουμε με την παραπάνω εντολή. Στα fora υπάρχουν διάφορες λύσεις, αλλά έχω καταμπερδευτεί για το ποια να χρησιμοποιήσω.

Αν κάποιος έχει λύσει το πρόβλημα, ή όταν το λύσω εγώ, ας γράψει εδώ τη λύση που εφάρμοσε...
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: Wake on LAN
« Απάντηση #1 στις: 23 Οκτ 2009, 11:31:00 πμ »
Μια λύση λέει  να τροποποιήσω το /etc/rc.local προσθέτοντας την παρακάτω γραμμή

Κώδικας: [Επιλογή]
ethtool -s eth0 wol g
Δε δουλεύει πάντα.

Μία λύση λέει να φτιάξω ένα script με το όνομα activateWOL που περιέχει τα παρακάτω:

Κώδικας: [Επιλογή]
#!/bin/bash
ethtool -s eth0 wol g

να το κάνω εκτελέσιμο και να το βάλω στο /usr/bin/ και μετά να πάω να πειράξω το /etc/network/interfaces και να προσθέσω μια γραμμή στο τέλος:

Κώδικας: [Επιλογή]
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

auto eth0
iface eth0 inet static
address 10.0.0.4
netmask 255.255.255.0
gateway 10.0.0.2
[b]post-down /usr/bin/activateWOL[/b]

Ούτε αυτό δουλεύει γιατί το /etc/network/interfaces των clients στο εργαστήριο είναι ως εξής:

Κώδικας: [Επιλογή]
auto lo
iface lo inet loopback

και δε θέλω να τους δώσω static διευθύνσεις, ούτε είμαι σίγουρος πώς ακριβώς να πειράξω το /etc/network/interfaces

Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #2 στις: 23 Οκτ 2009, 11:58:55 πμ »
Με την εντολή

Κώδικας: [Επιλογή]
sudo ethtool -s eth0 wol g
ενεργοποιείται το wol με τη λήψη του magic packet. Το έκανα, λοιπόν, σε όλα τα μηχανάκια του εργαστηρίου. Τα έσβησα, δοκίμασα να τα ανοίξω με το wakeonlan αλλά τίποτα!!!

Δημήτρη πριν προχωρήσεις στο *πού* θα βάλεις αυτήν την εντολή (υπάρχουν 100 μεριές που "κάνουν"),
θα πρέπει *πρώτα* να σου δουλέψει! Αν δεν δουλεύει, όπου και να τη βάλεις δεν θα δεις διαφορά...

Άρα, αν εκτέλεσες τη συγκεκριμένη εντολή, έκλεισες τον Η/Υ, και δεν ξαναξύπναγε, τότε αυτή η εντολή δεν σου κάνει και πρέπει να ψάξεις για κάποια άλλη λύση.
Στη χειρότερη περίπτωση μπορεί να είναι και θέμα driver, δηλαδή να αναφέρει ότι ενεργοποιεί το WOL αλλά να μην το κάνει στην πραγματικότητα, οπότε θα θέλει bug report στο σχετικό module (ποια κάρτα δικτύου είναι; lspci -nn).

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: Wake on LAN
« Απάντηση #3 στις: 25 Οκτ 2009, 10:23:39 πμ »
Η εντολή δουλεύει. Όχι πάντα, αλλά δουλεύει. Φοβάμαι ότι δεν εξαρτάται μόνο απ' την συγκεκριμένη εντολή, αλλά και απ' τον τρόπο που κλείνει ο υπολογιστής.
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #4 στις: 25 Οκτ 2009, 12:25:47 μμ »
ΟΚ. Επομένως απλά βάλε το παρακάτω σαν if-up down script, δηλαδή δημιούργησε ένα αρχείο /etc/network/if-up.d/wol και βάλ' το μέσα:

Κώδικας: [Επιλογή]
#!/bin/sh
#Enables wol for $IFACE.

set -e

#If $IFACE isn't defined, just exit
if [ -z "$IFACE" ]; then
exit 0
fi

# Don't do anything for the lo interface
if [ "$IFACE" = "lo" ]; then
exit 0
fi

ethtool -s "$IFACE" wol g

Επίσης στη συνέχεια κάν' το εκτελέσιμο: sudo chmod +x /etc/network/if-up.d/wol

Ο NetworkManager θα το εκτελέσει αυτόματα την επόμενη φορά που θα γίνει σύνδεση δικτύου.

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: Wake on LAN
« Απάντηση #5 στις: 27 Οκτ 2009, 09:32:44 πμ »
Δε δούλεψε...  :'(

Τι γίνεται: Αν, ενώ έχουν ξεκινήσει οι υπολογιστές, δώσω την εντολή

Κώδικας: [Επιλογή]
sudo ethtool -s eth0 wol g
manually, τότε κρατάνε τη ρύθμιση και, αφού τους σβήσω, μπορώ να τους ξανανάψω με το wakeonlan. Αν δεν δώσω την εντολή, το σκριπτάκι από μόνο του δε δουλεύει.
« Τελευταία τροποποίηση: 27 Οκτ 2009, 10:28:44 πμ από Δημήτρης Δαλαγιώργος »
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #6 στις: 29 Οκτ 2009, 11:14:57 πμ »
$#(*&@#

Είπα να δοκιμάσω το σκριπτάκι στο σχολείο, για να σιγουρευτούμε ότι είναι σωστό.

Δυστυχώς όμως στο σχολείο έχω το ανάποδο πρόβλημα: όταν τους κλείνει ο συνάδελφος από τα Windows τότε ΔΕΝ ανοίγουν, ενώ όταν τους κλείνω εγώ από το Ubuntu ανοίγουν κανονικά και χωρίς το σκριπτάκι...  :D

Καταρχάς, βάλε σαν τελευταία γραμμή στο σκριπτάκι if-up.d/wol την
Κώδικας: [Επιλογή]
echo "`/bin/date`: Setting wol for $IFACE" >> /tmp/wol
για να βεβαιωθείς ότι όντως καλείται και εκτελείται (δες το αρχείο /tmp/wol μετά από επανεκκίνηση).

Στη συνέχεια, αν ξεκινήσεις τον Η/Υ χωρίς το σκριπτάκι,
και τρέξεις sudo ethtool eth0,
υποτίθεται ότι σου βγάζει Wake-on: d, έτσι;

Αν μετά το ξεκινήσεις *με* το σκριπτάκι,
και τρέξεις sudo ethtool eth0,
σου βγάζει Wake-on: g ή όχι;

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: Wake on LAN
« Απάντηση #7 στις: 30 Οκτ 2009, 10:45:20 πμ »
Δεν υπάρχει αρχείο wol στο /tmp οπότε το σκριπτάκι δεν τρέχει.
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #8 στις: 30 Οκτ 2009, 11:18:16 πμ »
Ας το κάνουμε καλύτερα πιο αυτοματοποιημένα, για αποφυγή λαθών. Κάνε επικόλληση όλο το παρακάτω μακρυνάρι σε ένα τερματικό και δώσε password όταν στο ζητήσει:
Κώδικας: [Επιλογή]
sudo wget 'https://alkisg.mysch.gr/steki/index.php?action=dlattach;topic=2287.0;attach=1148' -O /etc/network/if-up.d/wol && sudo chmod +x /etc/network/if-up.d/wol

Μετά reboot και (θεωρητικά) είσαι έτοιμος.
Αν παίξει, κάνε κι ένα feature request στα sch-scripts για να το συμπεριλάβουμε σ' αυτά.
Αν δεν παίξει, να δούμε λίγο τις ρυθμίσεις του NetworkManager σου...

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: Wake on LAN
« Απάντηση #9 στις: 30 Οκτ 2009, 11:33:16 πμ »
Ok, δούλεψε!

Δεν κατάλαβα όμως, τι άλλαξες σε σχέση με το προηγούμενο script;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #10 στις: 30 Οκτ 2009, 11:47:20 πμ »
Τίποτα. Κάπου θα είχες κάνει κάποιο λαθάκι, είτε στη θέση του αρχείου είτε στην chmod...
Γι' αυτό η αυτοματοποίηση είναι "καλό πράμα" (TM)! :D

odysseas

  • Ομάδα διαγωνισμάτων 2011
  • *
  • Μηνύματα: 842
Απ: Wake on LAN
« Απάντηση #11 στις: 26 Φεβ 2010, 11:31:50 μμ »
ΟΚ. Επομένως απλά βάλε το παρακάτω σαν if-up down script, δηλαδή δημιούργησε ένα αρχείο /etc/network/if-up.d/wol και βάλ' το μέσα:

Από καθαρή περιέργεια κι επειδή τη λύση του Άλκη δεν την είδα πουθενά αλλού: υπάρχει διαφορά μεταξύ του (α) να βάλεις ένα script στο /etc/network/if-up.d/ και (β) να προσθέσεις μια "post-up" γραμμή που να εκτελεί το script στο /etc/network/interfaces;

Το (β) --περίπου-- αναφέρει κι ο Δημήτρης και φαίνεται να έχει διαδοθεί ως πρόταση. Η (α) μου φαίνεται πιο καθαρή λύση, γι' αυτό και αναρωτιέμαι αν υπάρχουν διαφορές που να κάνουν τη μια προτιμότερη από την άλλη.

Και μιας και αναβιώνω αυτό το σχετικά παλιό thread, να σημειώσω και κάτι άλλο που διάβασα: πολλοί είναι αυτοί που αναφέρουν (όπως και ο Δημήτρης) ότι παίζει ρόλο το πως θα κλείσει ο υπολογιστής. Όμως ορισμένοι ισχυρίζονται ότι εκτελώντας το scriptάκι και (?) σαν if-down script, ο τρόπος κλεισίματος φαίνεται να επηρρεάζει πολύ λιγότερο (εξαιρουμένης της περίπτωσης όπου πέφτει το ρεύμα).

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #12 στις: 27 Φεβ 2010, 12:10:19 πμ »
Αν κάποιος χρησιμοποιεί τον Network Manager, δηλαδή η προεπιλεγμένη πια περίπτωση στο Ubuntu, δεν έχει (σχεδόν) καθόλου /etc/network/interfaces. Άρα δεν υπάρχει καν η δυνατότητα της λύσης (β).
Επίσης, η λύση (α) βολεύει στο πακετάρισμα: εφόσον υπάρχει ειδικός φάκελος, κάθε πρόγραμμα μπορεί να προσθέτει εκεί τα δικά του scripts χωρίς να μπλέκεται με τα υπόλοιπα.

Θεωρητικά πάντως την ίδια δουλειά κάνουν, δηλαδή αυτό που λένε ότι ο τρόπος κλεισίματος επηρεάζει λιγότερο, δεν μου φαίνεται σωστό.

odysseas

  • Ομάδα διαγωνισμάτων 2011
  • *
  • Μηνύματα: 842
Απ: Wake on LAN
« Απάντηση #13 στις: 27 Φεβ 2010, 03:57:08 μμ »
Θεωρητικά πάντως την ίδια δουλειά κάνουν, δηλαδή αυτό που λένε ότι ο τρόπος κλεισίματος επηρεάζει λιγότερο, δεν μου φαίνεται σωστό.

Δεν εννοούσα πάντως να πειράξει κανείς και το /etc/network/interfaces και το /etc/network/if-up.d/. Εννοούσα τη συνδυασμένη χρήση και if-up και if-down script, αντί μόνο του ενός από τα δύο.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5433
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Wake on LAN
« Απάντηση #14 στις: 28 Φεβ 2010, 07:08:43 μμ »
Δεν μπορώ να φανταστώ γιατί αυτό να βοηθάει...