Luk Windows-maskine fra linux terminal

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kører en applikation på Linux-maskine. Ved at give ip-adressen til en Windows-maskine som input, skal applikationen lukke Windows-maskinen. Hvis maskinerne kører det samme OS, er det meget nemt, men jeg er forvirret på, hvordan man gør det i cross OS.

Bedste reference


Command til shutdown windows system fra linux -:


$ net rpc -S <ip address> -U <username>\%<password> shutdown -t 1 -f


Denne kommando kan udstedes fra bash eller endda indstillet i cron job for at lukke computeren på et bestemt tidspunkt, og denne kommando leveres som standard med mange distros.

Andre referencer 1


Der kan være mere opsætning at gøre, især til Windows Vista, Windows 7 og yderligere Windows-versioner, for at tillade fjernudkobling:


Del A) På Windows-maskinen:


1) Tilføj en sikkerhedsafbrydelse til fjernbetjening:



  • Kør secpol.msc

  • i programtræet, åben Security Settings> Local Policies> User rights Assignment

  • Find posten Force shutdown from a remote system

  • Rediger posten, tilføj Windows-brugerkontoen, der vil blive brugt til afbrydelse (ex: nouknouk)



2) Tilføj registreringsnøgler for at deaktivere UAC-begrænsninger på fjernbetjeningen:



  • Kør regedit.exe som administrator

  • Find HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

  • Opret en ny registreringsværdi DWORD(32) med navnet LocalAccountTokenFilterPolicy og tildel derefter værdien 1



3) Start fjernregistreringstjeneste:



  • Åbn cmd.exe som administrator

  • Udfør de to følgende kommandoer:


    sc config RemoteRegistry start= auto


    sc start RemoteRegistry



Del B) På Linux-maskinen:


1) installer pakken samba-common:


Det afhænger af din Linux distribution, men for Debian og afledt (Ubuntu, Linux Mint, ...), kan apt-get kommandoen udføres som sådan:


apt-get install samba-common


2) For at lukke din Windows-maskine fra Linux, skal du køre følgende kommando:


net rpc shutdown -f -t 0 -C 'message' -U userName\%password -I xxx.yyy.zzz.ttt


Hvor:



  • -f betyder at slukke alle applikationer (kan være obligatorisk)

  • -t 0 er forsinkelsen før det gøres (0 betyder 'lige nu').

  • -U user\%password er den lokale bruger og hans adgangskode på Windows-maskinen (den, der har fået lov til at foretage fjernafbrydelse i del A).

  • -I er Windows-maskineens IP-adresse til nedlukning.


Andre referencer 2


Det afhænger af din infrastruktur - hvordan du autentificerer til Windows-maskinerne, uanset om du selv kan konfigurere dem osv. Hvis det var mig, drev jeg Cygwin på Windows-bokse, så ssh til dem og køre [[shutdown -h. Der er sikkert andre måder at gøre det, selvfølgelig. [27]

Andre referencer 3


Du har brug for en måde at starte en shell på Windows-boksen, så du kan køre den shutdown-kommando, der er indbygget i Windows. [28]


Du kan installere Cygwin til dette, og derefter installere en SSH-dæmon i Windows. Når det er kørt, kan din Linux-kasse køre kommandoer i Windows-feltet, som om det var en anden Linux-maskine. [29]


Her er nogle instruktioner til opsætning af Cygwin ssdd i Windows. [30]

Andre referencer 4


Mulighed 1: Installer SSH-server på Windows. Log ind på denne server fra en hvilken som helst boks og kald nedlukningskommando. Vi bruger Interix (Microsofts Unix-lignende miljø). Det leveres med en telnet-server - tillader at påberåbe Windows-kommandoer fra andre maskiner.


En anden mulighed:
Hvis du samba installeret på Windows, kan du oprette forbindelse til Windows og kalde Windows-kommandoer


 net rpc SHUTDOWN ...


(fra http://www.linuxforums.org/forum/red-hat-fedora-linux/60324-remote-shutdown-windows-linux-box.html#post573872) [31]


En anden mulighed:
prøv rdesktop til Windows-maskinen med shutdown-kommandoen (jeg bruger den til at køre Windows-batch script, der har lukket ned i det, ikke sikker på om du direkte kan kalde shutodwn)

Andre referencer 5


Brug telnet-kommandoen i Linux, sørg for telnet is enabled in Windows system [32]