Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Budowanie NAS

Zaczęty przez sebekoo, Luty 03, 2019, 02:02:52 PM

Poprzedni wątek - Następny wątek

sebekoo

#45
Cytat: TataPingu w Luty 21, 2019, 07:28:54 PM
Cytat
Zainstaluj:

sudo apt-get update
sudo apt-get install ethtool

Sprawdź po instalacji (LAN i WIFI - zakładam, że tak są uszeregowane):

ethtool eth0
ethtool eth1

Jeśli wszystko będzie OK, to do /etc/rc.local nanosimy, co następuje:

Mam tylko karte LAN

Niestety nie jest tak jak piszesz
sebek@ubuntu_server:~$ sudo apt-get update
Stary:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Stary:2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Pobieranie:3 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74,6 kB]
Ign:4 http://download.webmin.com/download/repository sarge InRelease
Stary:5 http://archive.ubuntu.com/ubuntu bionic-security InRelease
Stary:6 http://download.webmin.com/download/repository sarge Release
Pobrano 74,6 kB w 1s (80,9 kB/s)
Czytanie list pakietów... Gotowe
sebek@ubuntu_server:~$ sudo apt-get install ethtool
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Odczyt informacji o stanie... Gotowe
ethtool is already the newest version (1:4.15-0ubuntu1).
0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.
sebek@ubuntu_server:~$ ethtool eth0
Settings for eth0:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
sebek@ubuntu_server:~$ ethtool eth1
Settings for eth1:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
sebek@ubuntu_server:~$


CytatJeśli wszystko będzie OK, to do /etc/rc.local nanosimy, co następuje:
Nie mam takiego pliku

Jeszcze pytanie o 'Repozytoria'. Jak widać mam tylko kilka - wystarczy czy jakieś dodać??

TataPingu

A teraz czas na skrypt "wyłączający"

Pod np. /usr/local/bin/ tworzysz plik tekstowy wylaczenie.sh (oczywiście, wszystko z roota)

/usr/local/bin/wylaczenie.sh

do pliku kopiujesz poniższe:


#!/bin/bash
#
# ok. 2013 Bogdan (TataPingu z https://linuxiarze.pl)
# /usr/local/bin/wylaczenie.sh
# Wylaczenie.sh

###
# CONFIG
###

# Filename of the statusfile
STATUSFILE="/tmp/wylaczenie-status"

# which ip range should be checked?
# this example looks in "192.168.5.10 to 192.168.5.30"
# and "192.168.178.20 to 192.168.178.30"
#RANGE="192.168.1,178.10-30"
#MOJE - np u mnie wszystkie IP pomiedzy 192.168.2.1 i 192.168.2.9
RANGE="192.168.2.1-9"
#RANGE="192.168.2.1" # - pojedynczy

# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0

# shutdown after how many retries?
RETRIES=2

###
# END CONFIG
###

NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "^Host" | wc -l`

if [ $NUMCLIENTS -le $MINCLIENTS ]; then
    if [ ! -f "$STATUSFILE" ]; then
        echo "COUNT=$RETRIES" > $STATUSFILE
    fi
    . $STATUSFILE
    if [ $COUNT -le $MINCLIENTS ]; then
#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
##################/usr/local/bin/./rsync_backup_server
##################exit 0
#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
#
#----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA
        echo "Shutdown, kolego (my dear)..."
        shutdown -h now;
        #----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA
    else
        let COUNT=$COUNT-1
        echo "COUNT=$COUNT" > $STATUSFILE
    fi;
else
    if [ -f "$STATUSFILE" ]; then
        rm $STATUSFILE
    fi
fi


Nadajesz plikowi prawa (właściciel root, grupa root): właściciel rwx, grupa r-x, inne r-x (755)

sudo chmod 755 /usr/local/bin/wylaczenie.sh

Jedną część mamy za nami...
- oczywiście, skrypt powinien być jeszcze uruchomiony przy starcie.

Do tego celu musimy odpowiednio zmanipulować crontab.

Podobnie, jak inne, edytujesz:

/etc/crontab

i na samym końcu umieszczasz:


#-----SERVER-WYLACZENIE----------
#---sprawdzenie co 3 minuty, czy w sieci sa aktywne sprzety
*/3 * * * * root /usr/local/bin/wylaczenie.sh
#---sprawdzenie co 6 minut, czy w sieci sa aktywne sprzety
#####*/6 * * * * root /usr/local/bin/wylaczenie.sh
#-----SERVER-WYLACZENIE----------


Oczywiście, czas "sprawdzeń" dopasowujesz do swoich potrzeb.

UWAGA!
- od teraz, jeśli nie będzie żadnego aktywnego clienta z ustalonego w skrypcie zakresu IP, serwer WYŁęCZY SIę AUTOMATYCZNIE!
UWAGA!

Szczególnie trzeba o tym pamiętać podczas np przeprowadzania jakiegoś upgrade systemu, czy robieniu jakichś zmian...
- komputer wyłączy się bez przeprowadzenia operacji do końca.

Dlatego, przy takich zabiegach musi być włączony aktywny client.

TataPingu

Cytat: sebekoo w Luty 21, 2019, 09:37:41 PM
Mam tylko karte LAN

To musisz się zorientować, pod jakim "synonimem" (interfaces - eth?) jest karta wifi.

Nie mam pod ręką żadnego lapka z wifi, ale jeśli masz takową kartę w serwerze to powinno coś być pod
/etc/network.

To jednak nie problem, na razie przygotujesz wszystko do LANa, później można to skorygować.
Jedynie nie zapomnij zablokować wifi w rc.local (wstawić # w linii wifi)

sebekoo

Jeszcze raz.
W serwerze jest tylko karta LAN.
Serwer nie posiada karty WiFi

TataPingu

Cytat: sebekoo w Luty 21, 2019, 09:37:41 PM
Nie mam takiego pliku

To go stwórz i podobnie, jak sktyptowi nadaj mu:

sudo chmod 755 /etc/rc.local

Cytat: sebekoo w Luty 21, 2019, 09:37:41 PM
Jeszcze pytanie o 'Repozytoria'. Jak widać mam tylko kilka - wystarczy czy jakieś dodać??

W jakim celu?

Acha, a w BIOSIe włączałeś funkcje WakeOnLAN ?

TataPingu

Cytat: sebekoo w Luty 21, 2019, 10:00:59 PM
Jeszcze raz.
W serwerze jest tylko karta LAN.
Serwer nie posiada karty WiFi

No przecież po południu pisałeś:
"
    A tak na marginesie, PCty będą łączyć się z serwerem w LANie, czy poprzez wifi ?

LAN i WiFi.
1xPC LAN, 1xPC WiFi, 1xWiFi Laptop, telefony po WiFi, TV - WiFi"

więc wychodziłem z założenia, że masz również kartę sieciową wifi w serwerze.

Jeśli masz tylko LAN to lepiej!
- możesz w ogóle wywalić linię z wifi z /etc/rc.local

sebekoo

Cytat
Cytat: sebekoo w Luty 21, 2019, 10:00:59 PM
Jeszcze raz.
W serwerze jest tylko karta LAN.
Serwer nie posiada karty WiFi

No przecież po południu pisałeś:
"
    A tak na marginesie, PCty będą łączyć się z serwerem w LANie, czy poprzez wifi ?

LAN i WiFi.
1xPC LAN, 1xPC WiFi, 1xWiFi Laptop, telefony po WiFi, TV - WiFi"

więc wychodziłem z założenia, że masz również kartę sieciową wifi w serwerze.

Jeśli masz tylko LAN to lepiej!
- możesz w ogóle wywalić linię z wifi z /etc/rc.local

Zgadza się PC i laptop łącza się po wifi ale do rutera a ruter z serwerem przewodem
Nie czytałem całości ze zrozumieniem. Mój błąd.

Załącze jeszcze wynik ifconfig
sebek@ubuntu_server:/$ ifconfig
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.13  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 xxxx::xxx:xxxx:xxxx:xxxx prefixlen 64  scopeid 0x20<link>
        ether XX:XX:XX:XX:XX:XX txqueuelen 1000  (Ethernet)
        RX packets 6615  bytes 1685086 (1.6 MB)
        RX errors 0  dropped 5  overruns 0  frame 0
        TX packets 3504  bytes 975747 (975.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 2  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 158  bytes 12682 (12.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 158  bytes 12682 (12.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

sebekoo

Wszystko zrobiłem wedle zaleceń. stworzyłem skypty, pliki i nadałem prawa

WOL w BIOS włączyłem

Jednie nie wiem czy dobrą nazwę nadałem karcie "enp2s0" -  zamiast eth0

TataPingu

Poprawiłem wpis dotyczący rc.local (na poprzedniej stronie, tak, że skopiuj jeszcze raz ale poprawioną całość do rc.local...
- nie wiedziałem, że ubuntu w ogóle jej nie zrobił.

Jak już chyba na początku wspominałem, osobiście instalowałem jeszcze wersję albo 12.4, albo 14.4, wówczas było to jeszcze standardem

TataPingu

Cytat: sebekoo w Luty 21, 2019, 10:55:25 PM
Wszystko zrobiłem wedle zaleceń. stworzyłem skypty, pliki i nadałem prawa

WOL w BIOS włączyłem

Jednie nie wiem czy dobrą nazwę nadałem karcie "enp2s0" -  zamiast eth0

Teoretycznie powinno działać i z eth0, ale, że masz najnowszą wersję (u mnie są tylko aktualizowane, więc został również stary eth0), to może musisz już tak.
Sprawdź po prostu:

ethtool eth0

i

ethtool enp2s0

po wszystkim wystartuj serwer i powyłączaj wszystkie aktywne sprzęty z zakresu, jaki sobie ustaliłeś...
- po kilku minutach serwer powinien się sam wyłączyć...

Acha, rozumiem, że w skrypcie naniosłeś prawidłowy, t.j. Twój zakres w tym miejscu ?

#MOJE - np u mnie wszystkie IP pomiedzy 192.168.2.1 i 192.168.2.9
RANGE="192.168.2.1-9"

sebekoo

Oczywiście że nie.
Dlatego restartował sie co chwila
Poprawiłem juz to
Testuje na prawidłowym ip.

sebekoo

Brawo !!!!
Serwer wyłącza się gdy nie na urządzanie aktywnego z zakresu.

Nie mogę go tylko włączyć  - WOL-em ale to już muszę poszukać w ustawieniach płyty głównej

TataPingu

#57
Cytat: sebekoo w Luty 21, 2019, 11:41:53 PM
Nie mogę go tylko włączyć  - WOL-em ale to już muszę poszukać w ustawieniach płyty głównej

Abstrachując od włączenia tej funkcji w BIOSie, prawdopotobnie ma to związej z prawidłową aktywacją ethtool-em

W pierwszym rzędzie sprawdź pod jakim "synonimem" jest LAN w serwerze:

ip link

pojawi Ci się prawidłowy synonim.

Następnie, w terminalu:

man ethtool

Pojawią Ci się wszystkie możliwości

i zrób teraz "ręcznie" (również w terminalu):

sudo ethtool -s eth0(lub SYNONIM) wol g

Teoretycznie, w tym momencie WOL jest aktywny, tylko...
- po restarcie serwera trzeba go znów "zaktywizować".

Najprostszym sposobem właśnie, jest naniesienie polecenia do pliku /etc/rc.local
Jest to jeden z tzw. "autostartów" linuksa. Wszystko, co naniesione w pliku jest aktywowane podczas startu systemu.
Możliwe, że w aktualnej wersji ubuntu, zwzgl. na wprowadzenie pełnego systemd, podczas startu, rc.local nie jest brana pod uwagę, albo następuje to w 2-ej kolejności.
Musiałbyś więc, albo "zaktywizować" rc.local (przy starcie systemd - w necie na pewno znajdziesz poradniki), albo nanieść do:

/etc/systemd/system/network-online.target.wants/networking.service

jedną dodatkową linię:

ExecStartPost=/sbin/ethtool -s eth0 wol g

Najlepiej zrobić i to pierwsze i to drugie.

Dopisek
Ach, zapomniałem jeszcze o jednaj sprawie (dawno już tym się nie zajmowałem)
w pliku:
/etc/default/halt

dorzuć poniższą linię:

NETDOWN=no

Teraz, po restarcie, powinno być wszystko OK

I jeszcze jedno, WOL działa tylko w sieci wewnętrznej. Jeśli chcesz również używać tej funkcji z zewnętrz, to router musi mieć taką możliwość (wybudzanie określonego sprzętu)

sebekoo

#58
Nie wiem co się stało od wczoraj ale dziś serwer włączyłem, zacząłem pisać te komendy co podałeś wyżej a tu nagle serwer wyłączył sie.
Sprawdziłem jeszcze raz wszystko, czy prawidłowy zakres IP mam pisany, czy w crontab jest to co podałeś i wszystko było wpisane oprócz tego twojego ostatniego postu.
Spojrzałem na serwer od tylnej strony obudowy a tam mrugała dioda od karty sieciowej. Pomyślałem że sprawdzę WOL z android - serwer włączył się - to pomyślałem - działa. I znów zacząłem sprawdzać czemu się mógł wyłączyć. mineło max 5 minut i wyłączy sie znów serwer.
Znów go włączyłem WOL-em i pracuje dalej. Teraz jak pisze ten tekst to PC mam włączony a serwer się znów wyłączył mimo że IP komputera jest wpisany w zakresie.

Chyba wczoraj za szybko napisałem że działa


EDIT
Teraz dla pewności w telefonie włączyłem aktualizacje 1,5GB do pobrania. (Prędkość mojego internetu to 5Mbit) Zdążyło się pobrać ok 100 MB i serwer znów się wyłączył. a telefon i PC cały czas włączone są.

Poniżej wyniki komend ip link
sebek@ubuntu_server:~$ ip link, ethtool enp2s0, ethtool eth0
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xxbrd ff:ff:ff:ff:ff:ff
sebek@ubuntu_server:~$ ethtool enp2s0
Settings for enp2s0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
Cannot get wake-on-lan settings: Operation not permitted
        Current message level: 0x00000000 (0)

        Link detected: yes
sebek@ubuntu_server:~$ ethtool eth0
Settings for eth0:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
sebek@ubuntu_server:~$


enp2s0 - ten synonim mam wpisany w rc.local



WAŻNA INFORMACJA
w lokalizacji /tmp/wylacznie-status był wpis COUNT=1 po trzech minutach zmienił na COUNT=0, po kolejnych trzech minutach serwer wyłączył sie.

TataPingu

#59
Cytat: sebekoo w Luty 22, 2019, 10:19:07 PM
WAŻNA INFORMACJA
w lokalizacji /tmp/wylacznie-status był wpis COUNT=1 po trzech minutach zmienił na COUNT=0, po kolejnych trzech minutach serwer wyłączył sie.

To w takim razie coś jeszcze jest niepawidłowo z określeniem zakresów IP w tym miejscu:

#MOJE - np u mnie wszystkie IP pomiedzy 192.168.2.1 i 192.168.2.9
RANGE="192.168.2.1-9"

Zauważ, co piszę:

# which ip range should be checked?
# this example looks in "192.168.5.10 to 192.168.5.30"
# and "192.168.178.20 to 192.168.178.30"
#RANGE="192.168.1,178.10-30"
#MOJE - np u mnie wszystkie IP pomiedzy 192.168.2.1 i 192.168.2.9
RANGE="192.168.2.1-9"
#RANGE="192.168.2.1" # - pojedynczy

To są możliwości naniesienia zakresów IP. Mamy dwie możliwości, albo naniosłeś coś nieprawidłowo, albo router przydziela IP leżące poza określonym przez nas zakresem.

Podaj dokładnie, jakie zakresy chciałeś określić i jak je naniosłeś?

-------
Poniżej podpowiem Ci, jak to przetestować.

w skrypcie /usr/local/bin/wylaczenie.sh, wyłącz tylko tę linię (i zapisz plik - save):

   #----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA
        echo "Shutdown, kolego (my dear)..."
        #############shutdown -h now;   <---WYLACZYC
        #----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA

Oczywiście, tylko na czas testów (żeby Ci się przypadkiem serwer nie rozłączył)

W terminalu wtypuj:

nmap -sP 192.168.2.1-30 -oG - | grep "^Host" | wc -l

Oczywiście, 192.168.2.1-30 musisz odpowiednio dopasować do ustalonego przez Ciebie zakresu IP
W tym przypadku zakres wynosi od 192.168.2.1 do 192.168.2.30 i wszystkie sprzęty, którym router przydzielił IP z tego zakresu, jeśli są włączone będą policzone...
- wynikiem jest jakaś liczba np. 3

Jeśli sprzęty będą włączone, a wynikiem będzie 0 (zero) to coś jest nie tak z routerem i przydzielanymi IP

Zobacz najnowsze wiadomości na forum