linux 遠(yuǎn)程控制windows系統(tǒng)下的程序(三種方法)
有時(shí)候我們需要通過(guò)在linux上遠(yuǎn)程運(yùn)行windows系統(tǒng)上的程序。
方法一:
通過(guò)python中的 winrm模塊,前提條件,先提前設(shè)置好winrm服務(wù)。如何設(shè)置請(qǐng)自行百度,winRM服務(wù)是windows server下PowerShell的遠(yuǎn)程管理服務(wù)。Python腳本通過(guò)連接winRM模塊操作windows命令行。
import winrm def cmd_views(ip,cmd_comand): win = winrm.Session('http://'+ip+':5985/wsman', auth=('user', 'password'))#參數(shù)為用戶(hù)名和密碼 r = win.run_cmd(cmd_comand) # 執(zhí)行cmd命令= return r.std_out # 打印獲取到的信息 ip="xxx.xxx.xx.xx" cmd_comand=r"ipconfig"#運(yùn)行命令 a=cmd_views(ip, cmd_comand) print(cmd_comand) print(type(a)) print(a)
經(jīng)過(guò)本人測(cè)試這個(gè)模塊只能執(zhí)行一些簡(jiǎn)單的命令,就是那種基本上能一輸入就能立馬響應(yīng)結(jié)果的命令。碰到一些稍微復(fù)雜的,進(jìn)程就掛掉了。
方法二:
通過(guò)python中的telnetlib庫(kù)進(jìn)行執(zhí)行操作,前提設(shè)置windows系統(tǒng)中的telnet設(shè)置,1,安裝telnet客戶(hù)端和服務(wù)器端。2配置telnet用戶(hù)權(quán)限,不會(huì)就自行百度設(shè)置。
# -- coding: utf-8 -- import telnetlib,time def telnetlib_views(ipaddress,user,password,cmdname): tn=telnetlib.Telnet(ipaddress) a=tn.read_until(b'login:') tn.write(user.encode('ascii') + b'\r\n') tn.read_until(b'password:') time.sleep(5) tn.write(password.encode('ascii') + b'\r\n') time.sleep(2) tn.write(cmdname.encode('ascii') + b'\r\n') tn.close() cmdname=r'ifconfig'#運(yùn)行命令 telnetlib_views(ipaddress="xxx.xxx.xxx.xxx", user="xxx", password="xxxx",cmdname=cmdname)
等待命令調(diào)用完成,程序結(jié)束。
方法三
利用wmi模塊,缺陷只能通過(guò)windows-windows,linux-windows行不通,linux相關(guān)模塊無(wú)法安裝。
import wmi def sys_version(ipaddress, user, password,cmdname): conn = wmi.WMI(computer=ipaddress, user=user, password=password) try: cmd_callbat = r"cmd /c call %s" % cmdname print("當(dāng)前執(zhí)行bat 命令為:",cmd_callbat) conn.Win32_Process.Create(CommandLine=cmd_callbat) except Exception as e: print(e) cmdname= r"xxx.bat"#運(yùn)行命令 sys_version(ipaddress="xxx.xx.xx.xx", user="xx", password="xxx",cmdname=cmdname)#
命令被調(diào)用,程序結(jié)束,無(wú)需等待,區(qū)別于方法二,缺陷 無(wú)法在linux上安裝庫(kù)
應(yīng)用場(chǎng)景實(shí)用,現(xiàn)在我需要在linux上執(zhí)行程序,將windows系統(tǒng)上的一個(gè)PDF格式的文件,傳到linux上?
# -- coding: utf-8 -- import winrm def job(): # 獲得連接 t = winrm.Session("xxx.xx.xx.xx", auth=("xx", "xxx")) # 獲得a.pdf內(nèi)容 r = t.run_cmd(r'type C:\xxx\xxx\Desktop\test\a.pdf') # 將內(nèi)容轉(zhuǎn)化成字符串 s0 = str(r.std_out) # print(s0) with open("c.pdf","wb")as f: f.write(s0) print("寫(xiě)入完成") job()
總結(jié)
以上所述是小編給大家介紹的linux 遠(yuǎn)程控制windows系統(tǒng)下的程序(三種方法),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- windows、linux下打包Python3程序詳細(xì)方法
- Golang在Mac、Linux、Windows下如何交叉編譯的實(shí)現(xiàn)
- Python3如何在Windows和Linux上打包
- linux或windows環(huán)境下pytorch的安裝與檢查驗(yàn)證(解決runtimeerror問(wèn)題)
- 使用壓縮的方式將Windows下的zip壓縮包上傳到Linux系統(tǒng)的方法解析
- 在Linux服務(wù)器和windows系統(tǒng)之間上傳與下載文件的方法
- 詳解在Windows環(huán)境下訪問(wèn)linux虛擬機(jī)中MySQL數(shù)據(jù)庫(kù)
- Windows和Linux實(shí)現(xiàn)遠(yuǎn)程桌面連接
相關(guān)文章
Linux終端執(zhí)行shell腳本,提示權(quán)限不夠的問(wèn)題及解決
這篇文章主要介紹了Linux終端執(zhí)行shell腳本,提示權(quán)限不夠的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01linux下終端分屏使用的兩種方法(screen和tmux)
這篇文章主要給大家介紹了關(guān)于在linux下終端分屏使用的兩種方法,分別是利用screen和tmux,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06Linux文件編輯命令vi詳細(xì)整理(總結(jié))
本篇文章主要介紹了Linux文件編輯命令詳細(xì)整理(總結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07