[英]Shutdown Windows machine from linux terminal
我正在linux機器上運行一個應用程序。 通過將 Windows 機器的 IP 地址作為輸入,應用程序必須關閉 Windows 機器。 如果機器運行相同的操作系統,這很容易,但我很困惑如何在跨操作系統中做到這一點。
可能需要進行更多設置,特別是對於 Windows Vista、Windows 7 和更多 Windows 版本,以允許遠程關機:
A 部分)在 Windows 機器上:
1) 添加遠程關機安全策略:
運行secpol.msc
在程序樹中,打開Security Settings
> Local Policies
> User rights Assignment
找到條目Force shutdown from a remote system
編輯條目,添加將用於關機的 Windows 用戶帳戶(例如:nouknouk)
2) 添加注冊表項以禁用 UAC 遠程限制:
以管理員身份運行regedit.exe
查找HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System
創建一個名為LocalAccountTokenFilterPolicy
的新注冊表DWORD(32)
值,然后為其分配值1
3) 啟動遠程注冊服務:
以管理員身份打開cmd.exe
執行以下兩條命令:
sc config RemoteRegistry start= auto
sc start RemoteRegistry
B 部分)在 Linux 機器上:
1) 安裝包samba-common
:
這取決於您的 Linux 發行版,但對於 Debian 和衍生版本(Ubuntu、Linux Mint 等),apt-get 命令可以這樣執行:
apt-get install samba-common
2) 要從 Linux 中實際關閉您的 Windows 機器,請運行以下命令:
net rpc shutdown -f -t 0 -C 'message' -U userName%password -I xxx.yyy.zzz.ttt
在哪里:
-f
表示強制關閉所有應用程序(可能是強制性的)
-t 0
是做之前的延遲(0 表示“現在”)。
-U user%password
是windows機器上的本地用戶和他的密碼(A部分允許遠程關機的那個)。
-I
是要關機的 windows 機器的 IP 地址。
從 linux 關閉 windows 系統的命令 -:
$ net rpc -S <ip address> -U <username>%<password> shutdown -t 1 -f
此命令可以從 bash 發出,甚至可以在 cron 作業中設置以在特定時間關閉計算機,默認情況下,此命令隨許多發行版一起提供。
重要的是要注意,如果有問題的用戶名沒有設置密碼,則上述解決方案將不起作用(至少在我的情況下是這樣)。
對於 Windows 10(可能以及以下版本,未檢查)用戶,必須轉到防火牆設置並啟用“遠程服務管理”以使 linux 框能夠通過 rpc 進行連接。
要查找您的實際 Windows 用戶名,請打開 cmd 並運行
echo %username%
這是您必須在 net rpc 命令中使用的用戶名(不區分大小寫)
這取決於你的基礎設施——你如何對 Windows 機器進行身份驗證,你是否可以自己配置它們,等等。如果是我,我會把Cygwin放在 Windows 機器上,然后ssh
到它們並運行shutdown -h
。 當然,肯定還有其他方法可以做到。
選項 1:在 Windows 上安裝 SSH 服務器。 從任何盒子登錄到此服務器並調用關閉命令。 我們使用 Interix(微軟的類 unix 環境)。 它帶有一個 telnet 服務器 - 允許從其他機器調用 Windows 命令..
另一種選擇:如果您在 windows 上安裝了 samba,它可以連接到 windows 並調用 windows 命令
net rpc SHUTDOWN ...
另一種選擇:使用shutdown命令嘗試rdesktop到windows機器(我用它來運行windows批處理腳本,里面有shutdown,不確定你是否可以直接調用shutodwn)
在Linux
使用telnet命令,確保telnet is enabled in Windows system
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.