LINUX.ORG.RU
ФорумAdmin

Настройка постоянного Wake on LAN

 , , , ,


0

3

Всем привет!

Делаю домашний сервер на основе старого Asus f3sr и Debian. Нужно его на ночь отключать, это можно сделать с помощью crontab. Но как включать утром? Я придумал вариант на основе Wake on LAN + ESP8266. И Wake on LAN работает, но только один раз при ручном включении sudo ethtool -s enp2s0 wol g. А для автоматического я уже не знаю.

Попробовал systemd unit:

[Unit] 
Description=Enable Wake-on-LAN
After=NetworkManager
Wants=NetworkManager

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s enp2s0 wol g

[Install]
WantedBy=multi-user.target

Работает только при ручном рестарте. Также включил «магию» в nmcli, тоже не дало результата. В crontab делал такое:

@reboot sleep 6 && /sbin/ethtool -s enp2s0 wol g

Тоже не помогло.

В crontab можно же несколько команд добавить. sudo ethtool -s enp2s0 wol g&&systemctl poweroff например. Если используются кеды, там в настройках автозапуска можно указать скрипт, который будет запускаться при выходе из системы - я ethtool оттуда запускаю.

BityjPixel
()
Ответ на: комментарий от sehellion

Дергай ему (асусу) кнопку питания

хм, а как? сервопривод?)

Можно и так, а можно паяльником к кнопке питания опе тому кому это нужно.

Предлагаю и такой вариант рассмотреть.

anc ★★★★★
()

Вот от сюда через rtcwake в сон уводи и поднимай автоматически назад. (Если умеет)

------------------------------------------
-------Simple auto WakeUP from sleep------
------копиригхт Цы LINUX-ORG-RU-----------
------------license WTFPL-----------------
------------------------------------------
--- заранее в /etc/rc.local шобы работало
--- chmod ugo+r  /dev/rtc0
--- chown $USER  /sys/power/state
------------------------------------------

local ctime = 
{
    year = tonumber(os.date("%Y")),
    mont = tonumber(os.date("%m")),
    days = tonumber(os.date("%d")),
    hour = tonumber(os.date("%H")),
    mins = tonumber(os.date("%M")),
    seco = tonumber(os.date("%S")),
}

chunks = {}
for substring in arg[1]:gmatch("([^:]+)") do
   table.insert(chunks, substring)
end

local wtime = 
{
    hour = tonumber(chunks[1]),
    mins = tonumber(chunks[2]),
}

if wtime.hour == nil or wtime.mins == nil then
    print("./rtcwake час:минута")
    return
end

local time = 0
local incd = 0

if ctime.hour > wtime.hour then
    incd = 1
end

time = os.time
{
    year  = ctime.year,
    month = ctime.mont,
    day   = ctime.days+incd,
    hour  = wtime.hour,
    min   = wtime.mins,
    sec   = ctime.secs
}

print("Включение в "..ctime.year.."/"..ctime.mont.."/"..ctime.days+incd.." "..wtime.hour..":"..wtime.mins)

os.execute("killall rtcwake")
os.execute("/usr/sbin/rtcwake -m mem -s "..time-os.time())
os.execute("sleep 2")
os.execute("xset dpms force on")
os.execute("nmcli networking off")
os.execute("nmcli networking on")

print("тютютю")

Использование

appname 8:30 # уйти в сон до 8:30 утра

По крону можно уводить в сон, а просыпаться будет сам. Ну или по аналогии своё написать.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от BityjPixel

В crontab можно же несколько команд добавить. sudo ethtool -s enp2s0 wol g&&systemctl poweroff например.

Небезопасно, т.к можно с кнопки выключить или перебой с питанием(там батареи нет)

AsfhtgkDavid
() автор топика
Ответ на: комментарий от NyXzOr

по systemd timer не работает, что ль?

Подробнее пж

посылать WOL с чего-нибудь другого - роутера, например?

А смысл? Если проблема не в МК, а в том что ноут это отключает после рестарта. + хз есть ли такое в Хиоми

AsfhtgkDavid
() автор топика
Ответ на: комментарий от sehellion

Говорят в былые времена в биосе можно было настроить включение компа по будильнику. Проверял?

Вот кстати да! 2ТС имхо это самый простой вариант в вашем запросе.

Power On By RTC для этого придуман.

Это если бы была нормальная материнка, а не древний порезанный ноут

Во-во, нет этого там

AsfhtgkDavid
() автор топика
Ответ на: комментарий от sehellion

Это если бы была нормальная материнка, а не древний порезанный ноут

От кстати в древних ноутах такое как раз присутствовало чаще чем в древних материнках. ЕМНИП эту хню сначала на ноуты массово завозить стали, а только потом по остаточному принципу и ПК матушкам доставаться начало.

anc ★★★★★
()
Ответ на: комментарий от AsfhtgkDavid

мля, тебе ссылку на дебиан-вики дали, ты её читал? я хз как в вашем новомодном системдэ, но ifup тупо посылает команду из пункта ethernet-wol при каждом, мать его, поднятии интерфейса - пох, включено оно «после рестарта» или нет. правильно написанный системдшный юнит должен работать аналогично.

anonymous
()
Ответ на: комментарий от AsfhtgkDavid

Если розетка отключается - не проще настроить power on: always on (вместо дефолтного last state или always off) в UEFI и при включении розетки - оно само будет включаться, не? Или там EFI настолько кастрированный?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от AsfhtgkDavid

Протестировал я и wol и rtcwake. Оба метода работают если розетка не выключается. Иначе все сбрасывается

В небо. Поменять батарейку на матери.

anc ★★★★★
()
Ответ на: комментарий от Pinkbyte

Если розетка отключается - не проще настроить power on: always on (вместо дефолтного last state или always off) в UEFI и при включении розетки - оно само будет включаться, не? Или там EFI настолько кастрированный?

Настолько…

AsfhtgkDavid
() автор топика