안녕하세요, 제 서버용 wol 스크립트를 작성하려고합니다. 라즈베리 파이가 부팅 할 때마다 실행됩니다.bash 스크립트 어쩌면 문법 오류로 until 루프를 시도하지 못했습니다.
구문 오류가있는 것 같지만 지금은 해결책이 없으므로 묻습니다. 5 번 줄에서 오류가 발생하지만 해결 방법이 없습니다.
#!/bin/bash
nas=[ping -c 1 192.192.168.222.5 &> /dev/null ]
until [ $nas = "1" ];do
python wol.py
sleep 2
nas=[ping -c 1 192.192.168.222.5 &> /dev/null ]
done
wol.py이
#!/usr/bin/env python
#coding: utf8
# Wake-On-LAN
#
# Copyright (C) 2002 by Micro Systems Marc Balmer
# Written by Marc Balmer, [email protected], http://www.msys.ch/
# Modified by saarnu for nerdoskop.wordpress.com
# This code is free software under the GPL
import struct, socket, time, os
def WakeOnLan(ethernet_address):
# Construct a six-byte hardware address
addr_byte = ethernet_address.split(':')
hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
int(addr_byte[1], 16),
int(addr_byte[2], 16),
int(addr_byte[3], 16),
int(addr_byte[4], 16),
int(addr_byte[5], 16))
# Build the Wake-On-LAN "Magic Packet"...
msg = '\xff' * 6 + hw_addr * 16
# ...and send it to the broadcast address using UDP
time.sleep(5)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(msg, ('<broadcast>', 9))
s.close()
WakeOnLan('C8:60:00:6D:CF:54') # MAC-Adresse der DiskStation
내가 그것을 많이했다 PowerShell에서 유사한 코드를 쓴 WOL 패키지를 전송 마크의 balmar에서 스크립트입니다 쉽게 말 그대로 복사 또는 번역하는 것을 시도하고있다 그것을 강타합니다.
$NAS = test-connection -count 1 -quiet 192.168.222.5
if ($NAS -like "False"){
do
{
$Mac = "C8:60:00:6D:CF:54"
$MacByteArray = $Mac -split "[:-]" | ForEach-Object { [Byte] "0x$_"}
[Byte[]] $MagicPacket = (,0xFF * 6) + ($MacByteArray * 16)
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect(([System.Net.IPAddress]::Broadcast),7)
$UdpClient.Send($MagicPacket,$MagicPacket.Length)
$UdpClient.Close()
Start-Sleep -s 5
$NAS = test-connection -count 1 -quiet 192.168.222.5
}
until
(
$NAS -like "True"
)
}
간단하고 사용하기 쉽고 코드가 적어졌습니다. –
@SelimAkca : 도와 드리겠습니다! – Inian