Что нового

[Сеть, интернет] WAKE ON LAN

Статус
Закрыто для дальнейших ответов.

Maxwal

Новичок
Сообщения
14
Репутация
0
Доброгго времени суток...

Поиск по запросу WAKE на форуме результатов не дал.

Собственно вопрос: можно ли с помощью AutoIT организовать пробуждение компьютера с IP xxx.xxx.xxx.xxx и MAC YY:YY:YY:YY:YY:YY по данной технологии? Как это сделать без сторонних приложений?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
:smile:

Проще использовать сторонние утилиты, благо они занимают несколько Кб. Я не думаю, что кто-нибудь на нашем форуме разбирался с этим, но вот этот материал будет хорошим началом...
 
Автор
M

Maxwal

Новичок
Сообщения
14
Репутация
0
Да, спасибо это я читал именно поэтому мне показалась что это можно средствали автоИТ сделать? Буду мучать его. Тогда другой вопрос, как отправить пакет UDP в сеть А структура самого пакета впринципе несложная. "...в поле данных которого присутствует последовательность из 6 байт FF и его собственного MAC - адреса, повторенного 16 раз..."


Добавлено:
Сообщение автоматически объединено:

Вприципе если брать по справке то теоретически наверно так:
Код:
UDPStartup()

; Register the cleanup function.
OnAutoItExitRegister("Cleanup")

; Open a "SOCKET"
;==============================================
$socket = UDPOpen("255.255.255.255", 65532)
If @error <> 0 Then Exit

$n= "FFFFFFFFFFFFYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
$s= _Hextostring($n) ;или не надо переводить в строку??
    $status = UDPSend($socket,$s) 
    If $status = 0 then
        MsgBox(0, "ERROR", "Error while sending UDP message: " & @error)
        Exit


Func Cleanup()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Maxwal
ИМХО, вернее будет так:
Код:
...
$s = "0xFFFFFFFFFFFFYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
$x = Binary($s)
...
UDPSend($x)
...
 

Heler

Знающий
Сообщения
70
Репутация
11
Нашел на офф форуме :smile:
Код:
$IPAddress = "192.168.1.255"; This is the broadcast address !
$MACAddress = "000D8787E226"


UDPStartUp()

$connexion = UDPOpen($IPAddress, 7)
$res = UDPSend($connexion, GenerateMagicPacket($MACAddress))
MsgBox(0, "", $res)

UDPCloseSocket($connexion)
UDPShutdown()


; ===================================================================
; Functions
; ===================================================================


; This function convert a MAC Address Byte (e.g. "1f") to a char
Func HexToChar($strHex)
    
    Return Chr(Dec($strHex))
    
EndFunc

; This function generate the "Magic Packet"
Func GenerateMagicPacket($strMACAddress)
    
    $MagicPacket = ""
    $MACData = ""
    
    For $p = 1 To 11 Step 2
        $MACData = $MACData & HexToChar(StringMid($strMACAddress, $p, 2))
    Next
    
    For $p = 1 To 6
        $MagicPacket = HexToChar("ff") & $MagicPacket
    Next
    
    For $p = 1 To 16
        $MagicPacket = $MagicPacket & $MACData
    Next
    
    Return $MagicPacket
    
EndFunc
 
Автор
M

Maxwal

Новичок
Сообщения
14
Репутация
0
Так проверил, первый вариант не работает, скорее всего из-за неправильной организации пакета. Второй сработал с первой попытки.

Спасибо за помощь, буду автоматизировать железо.
 
U

uzza

Гость
Работает куда проще

Код:
$mac = InputBox("wake", "input target mac:", "001D72C74EF9")
If $mac = "" Then Exit

UDPStartup()
$udp = UDPOpen("255.255.255.255", 9, 1)
$pckt = "0xFFFFFFFFFFFF"
For $i = 1 To 16
	$pckt &= $mac
Next
$sent = UDPSend($udp, $pckt)
If Not @error Then MsgBox(0, "result", "sent " & $sent & " bytes")

UDPCloseSocket($udp)
UDPShutdown()
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Сеть, интернет] WAKE ON LAN" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.
 

The_Immortal

Новичок
Сообщения
84
Репутация
4
Ребят, я тоже пытаюсь организовать WOL. Пока вот на зарубном форуме нашел такую функцию:

Код:
GenerateMagicPacket("48-5B-39-A6-C5-80")

; This function generate the "Magic Packet"

Func GenerateMagicPacket($strMACAddress)
    
    $MagicPacket = ""
    $MACData = ""
    
    For $p = 1 To 11 Step 2
        $MACData = $MACData & HexToChar(StringMid($strMACAddress, $p, 2))
    Next
    
    For $p = 1 To 6
        $MagicPacket = HexToChar("ff") & $MagicPacket
    Next
    
    For $p = 1 To 16
        $MagicPacket = $MagicPacket & $MACData
    Next
    
    Return $MagicPacket
    
 EndFunc

Но ругается на строку: $MACData = $MACData & HexToChar(StringMid($strMACAddress, $p, 2)), говорит что не знает функцию HexToChar... Эта функция больше не используется?
А как же быть? :(
 

beliy

Продвинутый
Сообщения
372
Репутация
72
2 The_Immortal
копировать надо полностью;)
Ты пропустил кусок кода:
Код:
; This function convert a MAC Address Byte (e.g. "1f") to a char
Func HexToChar($strHex)

   Return Chr(Dec($strHex))

EndFunc
 
Статус
Закрыто для дальнейших ответов.
Верх