一、遠端開機
遠端喚起(wake on lan)是amd公司製作的magicpacket這套軟體以生成網路喚醒所需要的特殊資料報,俗稱魔術包(magicpacket)。魔術包的格式,包含有連續6個位元組的「ff」和連續重複16次的mac位址,你可以在任何協議的資料報中填上 "ffffffffffff"+連續重複16次的mac位址,就可利用該協議作出乙個使用該協議的magicpacket來實現c#版的工具。
第一步:
遠端開機需要進入需要喚起的bios模式下將「wake upon lan」項或「wake on pci card」項均設定為「enable」,其原理就是通過廣播訊息傳送udp包到指定的主機的網絡卡,通過網絡卡喚起主機。
第二步:
借助上述描述的魔術包編寫乙個工具類,具體如下:
using
system;
using
system.net;
using
system.net.sockets;
namespace
tool.wakeonlan
catch
(exception
ex)}
//////
啟動指定實體地址的計算機,此計算機必須開啟網路啟動的設定
//////
mac">
實體地址
「ff-ff-ff-ff-ff-ff」格式
public
static
void
wakeup(
string
macstring)
udpclient
client =
newudpclient
();client.connect(
ipaddress
.broadcast, 9090);
byte
packet =
newbyte
[17 * 6];
//寫入6位元組ff
for(
inti = 0; i < 6; i++)
packet[i] = 0xff;
//寫入16遍mac位址
for(
inti = 1; i <= 16; i++)
for(
intj = 0; j < 6;j++)
packet[i * 6 + j] =macbytearray[j];
intresult = client.send(packet, packet.length);}}
catch
(exception
ex)}}}
呼叫工具類的wakeup函式就可遠端喚起指定計算機。
二、遠端關機
首先我們可以參考shutdown命令
其中-m --computer可以遠端關閉指定目標計算機,而在我的專案中使用c/s模式,所以可以使用資料報傳送命令來讓客戶端關機。
所以當客戶端收到關機命令後使用shutdown -s -t xx來關閉, xx指的是延遲時間。
但是在測試過程中,使用shutdown -s -t xx關機後,就無法再次遠端喚起。經過研究需要增加-hybrid的引數,即可再次遠端開機,具體c#**:
system.diagnostics.
process
.start(
"cmd.exe"
, "/cshutdown -s -t 0 -hybrid"
)含義:
此處花費了不少時間研究再次遠端喚起,所以寫個帖子供需要的參考。
此外異常關機(斷電、強行關機)等都會影響遠端開機無法正常執行。
-----------------------------------------分割線----------------------
另外關機的時候發現在dell的win10家庭版的關機語句增加
-hybrid 引數到無法再次網路喚起,刪除-hybrid後可以正常再次網路喚起。
遠端主機實現終端復用tmux
登入遠端主機,往往只能使用乙個終端,如果想使用多個,需要多次鏈結,但是tmux解決了這一點 通過在遠端主機上安裝tmux,然後遠端登入後,使用tmux命令,我們將實現ssh鏈結的視窗多終端復用。mac安裝方式 brew install tmuxcentos安裝方式 yum install y tmu...
Wi Fi智慧型插座拆解 如何實現遠端開關
broadlink智慧型插座的配置和使用都是這麼的方便,配置完成後,無論身在那裡只要手機能連上網路就能夠控制插座,甚至手機無需連上wi fi只要3g網路就可以控制。在控制智慧型插座開關狀態時可以聽到 滴答 的聲音,猜測開關的控制是通過繼電器實現。很好奇拆開了開關看看內部是如何實現的。塑料的外殼不是非...
python指令碼實現批量遠端部署主機
本指令碼通過填寫位置引數來實現批量部署遠端主機的功能,位置引數1填寫主機ip列表,位置引數2填寫執行命令 執行命令寫在 內 root bin python import paramiko import sys import getpass import threading defrcmd host,...