Wake On Lan
なんかずっと昔に ruby で書いた Wake On Lan をやるスクリプトが発掘されたので張ってみる。
ダウンロード
Wake On Lan を使えば、出先で自宅で停止中のホストに入っているファイルを取り出したいときに、一旦自宅のサーバーに ssh し、そこから Wake On Lan で目的のホストを起動させ、ssh でファイルを取り出せるので、ある特定の状況で幸せになれます。
Mac アドレスを晒しても大丈夫かどうかは知らないけど晒してしまう。
#!/usr/bin/env ruby Madoka3Mac = "00-0c-76-24-15-8c" require 'socket' def wol mac hs = mac.split(/[:-]/).inject(""){|i,j| i+j.hex.chr} data = 0xff.chr * 6 + hs * 16 sock = UDPSocket.new() sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1) 2.times { sock.send(data, 0, "<broadcast>", "discard") } end if $0 == __FILE__ if (ARGV.empty?) wol Madoka3Mac else ARGV.each do |i| wol i end end end
今みると、
hs = mac.split(/[:-]/).inject(""){|i,j| i+j.hex.chr}
の行は、
hs = [mac.tr(":-", "")].pack("H*")
と書けるなあと思います。pack を使わないにしても、少なくとも
hs = mac.split(/[:-]/).map{|i| i.hex.chr}.join
だと思います :-]
そもそもこんなスクリプトを使わなくても、多分 Wake On Lan をやるコマンドってあると思うけど、知らない。 [:-]