Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Linux => Μήνυμα ξεκίνησε από: Δημήτρης Δαλαγιώργος στις 22 Οκτ 2009, 07:53:55 ΜΜ

Τίτλος: 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 υπάρχουν διάφορες λύσεις, αλλά έχω καταμπερδευτεί για το ποια να χρησιμοποιήσω.

Αν κάποιος έχει λύσει το πρόβλημα, ή όταν το λύσω εγώ, ας γράψει εδώ τη λύση που εφάρμοσε...
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 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

Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 23 Οκτ 2009, 11:58:55 ΠΜ
Παράθεση από: Δημήτρης Δαλαγιώργος στις 22 Οκτ 2009, 07:53:55 ΜΜ
Με την εντολή

Κώδικας [Επιλογή]
sudo ethtool -s eth0 wol g

ενεργοποιείται το wol με τη λήψη του magic packet. Το έκανα, λοιπόν, σε όλα τα μηχανάκια του εργαστηρίου. Τα έσβησα, δοκίμασα να τα ανοίξω με το wakeonlan αλλά τίποτα!!!

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

Άρα, αν εκτέλεσες τη συγκεκριμένη εντολή, έκλεισες τον Η/Υ, και δεν ξαναξύπναγε, τότε αυτή η εντολή δεν σου κάνει και πρέπει να ψάξεις για κάποια άλλη λύση.
Στη χειρότερη περίπτωση μπορεί να είναι και θέμα driver, δηλαδή να αναφέρει ότι ενεργοποιεί το WOL αλλά να μην το κάνει στην πραγματικότητα, οπότε θα θέλει bug report στο σχετικό module (ποια κάρτα δικτύου είναι; lspci -nn).
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 25 Οκτ 2009, 10:23:39 ΠΜ
Η εντολή δουλεύει. Όχι πάντα, αλλά δουλεύει. Φοβάμαι ότι δεν εξαρτάται μόνο απ' την συγκεκριμένη εντολή, αλλά και απ' τον τρόπο που κλείνει ο υπολογιστής.
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 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 θα το εκτελέσει αυτόματα την επόμενη φορά που θα γίνει σύνδεση δικτύου.
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 27 Οκτ 2009, 09:32:44 ΠΜ
Δε δούλεψε...  :'(

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

Κώδικας [Επιλογή]
sudo ethtool -s eth0 wol g

manually, τότε κρατάνε τη ρύθμιση και, αφού τους σβήσω, μπορώ να τους ξανανάψω με το wakeonlan. Αν δεν δώσω την εντολή, το σκριπτάκι από μόνο του δε δουλεύει.
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 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 ή όχι;
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 30 Οκτ 2009, 10:45:20 ΠΜ
Δεν υπάρχει αρχείο wol στο /tmp οπότε το σκριπτάκι δεν τρέχει.
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 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 (https://bugs.launchpad.net/sch-scripts) για να το συμπεριλάβουμε σ' αυτά.
Αν δεν παίξει, να δούμε λίγο τις ρυθμίσεις του NetworkManager σου...
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 30 Οκτ 2009, 11:33:16 ΠΜ
Ok, δούλεψε!

Δεν κατάλαβα όμως, τι άλλαξες σε σχέση με το προηγούμενο script;
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 30 Οκτ 2009, 11:47:20 ΠΜ
Τίποτα. Κάπου θα είχες κάνει κάποιο λαθάκι, είτε στη θέση του αρχείου είτε στην chmod...
Γι' αυτό η αυτοματοποίηση είναι "καλό πράμα" (TM)! :D
Τίτλος: Απ: Wake on LAN
Αποστολή από: odysseas στις 26 Φεβ 2010, 11:31:50 ΜΜ
Παράθεση από: alkisg στις 25 Οκτ 2009, 12:25:47 ΜΜ
ΟΚ. Επομένως απλά βάλε το παρακάτω σαν 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, ο τρόπος κλεισίματος φαίνεται να επηρρεάζει πολύ λιγότερο (εξαιρουμένης της περίπτωσης όπου πέφτει το ρεύμα).
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 27 Φεβ 2010, 12:10:19 ΠΜ
Αν κάποιος χρησιμοποιεί τον Network Manager, δηλαδή η προεπιλεγμένη πια περίπτωση στο Ubuntu, δεν έχει (σχεδόν) καθόλου /etc/network/interfaces. Άρα δεν υπάρχει καν η δυνατότητα της λύσης (β).
Επίσης, η λύση (α) βολεύει στο πακετάρισμα: εφόσον υπάρχει ειδικός φάκελος, κάθε πρόγραμμα μπορεί να προσθέτει εκεί τα δικά του scripts χωρίς να μπλέκεται με τα υπόλοιπα.

Θεωρητικά πάντως την ίδια δουλειά κάνουν, δηλαδή αυτό που λένε ότι ο τρόπος κλεισίματος επηρεάζει λιγότερο, δεν μου φαίνεται σωστό.
Τίτλος: Απ: Wake on LAN
Αποστολή από: odysseas στις 27 Φεβ 2010, 03:57:08 ΜΜ
Παράθεση από: alkisg στις 27 Φεβ 2010, 12:10:19 ΠΜ
Θεωρητικά πάντως την ίδια δουλειά κάνουν, δηλαδή αυτό που λένε ότι ο τρόπος κλεισίματος επηρεάζει λιγότερο, δεν μου φαίνεται σωστό.

Δεν εννοούσα πάντως να πειράξει κανείς και το /etc/network/interfaces και το /etc/network/if-up.d/. Εννοούσα τη συνδυασμένη χρήση και if-up και if-down script, αντί μόνο του ενός από τα δύο.
Τίτλος: Απ: Wake on LAN
Αποστολή από: alkisg στις 28 Φεβ 2010, 07:08:43 ΜΜ
Δεν μπορώ να φανταστώ γιατί αυτό να βοηθάει...
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 17 Σεπ 2010, 11:32:18 ΠΜ
Μόλις τελείωσα την εγκατάσταση του Ubuntu 10.04 Lucid Lynx σε 9 workstations. Αν κι εγκατέστησα το script όπως και πέρσι, αφού σβήσουν, οι υπολογιστές ΔΕΝ ανάβουν ξανά με wakeonlan. Έχει αλλάξει κάτι από την έκδοση 9.10 στην 10.04 που δεν αφήνει στο script να δουλέψει;
Άκυρο: Δεν είχα εγκαταστήσει το ethtool!
Τίτλος: Απ: Wake on LAN
Αποστολή από: Δημήτρης Δαλαγιώργος στις 24 Σεπ 2010, 08:41:08 ΜΜ
Φεύγοντας το μεσημέρι κλείνω όλους τους σταθμούς εργασίας απ' τον server μέσω cssh με την εντολή

Κώδικας [Επιλογή]
sudo shutdown -P now

Ένας σταθμός εργασίας, ο ίδιος πάντοτε, μερικές φορές, αντί να σβήσει κάνει επανεκκίνηση! Το έκανε με 9.04, με 9.10 το κάνει και με το 10.04. Τι μπορεί να φταίει;