色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python+微信一鍵連接實現遠程管理Windows10操作系統的開機和關機

電子工程師 ? 來源:lq ? 2019-02-25 09:17 ? 次閱讀

有時候需要遠程家里的臺式機使用,因為我平時都是用 MAC 多,但是遠程喚醒只能針對局域網,比較麻煩,于是我想用微信實現遠程喚醒機器。

準備工作

本程序主要是實現遠程管理 Windows10操作系統的開機和關機:

在 Windows機器的相同內網中放一個 Linux 主機,我這里用樹莓派代替,如果你是用 OpenWrt 之類的路由器也可以。

Linux 主機需要能夠遠程訪問,我這里是有 FRP 將樹莓派的端口映射到我的公網 Linux 主機上。所以可以隨時遠程 SSH 過去。

Windows 機器的網卡必須是有線連接,支持網絡喚醒功能。

開機實現思路

首先通過微信發送開機指令,這里我使用的是 itchat 程序會調用 Paramiko 庫去 SSH 遠程到內網的樹莓派執行 WakeOnLan 命令去喚醒 Windows 主機。

pi@raspberrypi:~$wakeonlan-i192.168.1.014:dd:a9:ea:0b:96Sendingmagicpacketto192.168.1.0:9with14:dd:a9:ea:0b:96

程序會通過 ICMP 協議, ping 下需要喚醒的目標主機然后進行過濾,一個正常的 ICMP 包是64字節,過濾打印出這個64。

例如 ping 百度:

?~pingwww.baidu.comPINGwww.a.shifen.com(180.97.33.108):56databytes64bytesfrom180.97.33.108:icmp_seq=0ttl=53time=8.865ms64bytesfrom180.97.33.108:icmp_seq=1ttl=53time=9.206ms64bytesfrom180.97.33.108:icmp_seq=2ttl=53time=8.246ms

用一段 Linux 命令去過濾是否有64,這里為啥要用 head -n 1 呢?

因為有可能會出現2行,經過測試,我們只需要取64這個值就可以了:

ping192.168.1.182-c1|grep64|cut-d""-f1|head-n1

如果有則表示開機成功已經聯網了,返回開機成功,否則程序繼續往下走,去喚醒,然后在 ping 一次確認是否開機,如果為是則返回開機成功,否則返回失敗。程序執行成功后,在我的網站根目錄創建一個 shutdown 文件,用于后面的關機操作:

#!/usr/bin/python#-*-coding:utf-8-*-importitchatimportparamikoimportosimporttimeimportsysreload(sys)sys.setdefaultencoding('utf-8')hostname=''username=''port=key_file='/home/fangwenjun/.ssh/id_rsa'filename='/home/fangwenjun/.ssh/known_hosts'@itchat.msg_register(itchat.content.TEXT)deftext_reply(msg):ifmsg['ToUserName']!='filehelper':returnifmsg['Text']==u'開機':paramiko.util.log_to_file('ssh_key-login.log')privatekey=os.path.expanduser(key_file)try:key=paramiko.RSAKey.from_private_key_file(privatekey)exceptparamiko.PasswordRequiredException:key=paramiko.RSAKey.from_private_key_file(privatekey,key_file_pwd)ssh=paramiko.SSHClient()ssh.load_system_host_keys(filename=filename)ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=hostname,username=username,pkey=key,port=port)#執行喚醒命令stdin,stdout,stderr=ssh.exec_command('ping192.168.1.182-c1|grep64|cut-d""-f1|head-n1')sshCheckOpen=stdout.read()sshCheckOpen=sshCheckOpen.strip(' ')printtype(sshCheckOpen)printsshCheckOpen#進行判斷,如果為64,則說明ping成功,說明設備已經在開機狀態,程序結束,否則執行喚醒ifsshCheckOpen=='64':connect_ok_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(connect_ok_time+u'設備已經開機',toUserName='filehelper')else:ssh_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(ssh_time+u'開始連接遠程主機',toUserName='filehelper')stdin,stdout,stderr=ssh.exec_command('wakeonlan-i192.168.1.014:dd:a9:ea:0b:96')wakeonlan_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(wakeonlan_time+u'執行喚醒,等待設備開機聯網',toUserName='filehelper')#由于開機需要一些時間去啟動網絡,所以這里等等60stime.sleep(60)#執行ping命令,-c1表示只ping一下,然后過濾有沒有64,如果有則獲取64傳給sshConStatusstdin,stdout,stderr=ssh.exec_command('ping192.168.1.182-c1|grep64|cut-d""-f1|head-n1')sshConStatus=stdout.read()sshConStatus=sshConStatus.strip(' ')printtype(sshConStatus)printsshConStatus#進行判斷,如果為64,則說明ping成功,設備已經聯網,可以進行遠程連接了,否則發送失敗消息ifsshConStatus=='64':connect_ok_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(connect_ok_time+u'設備喚醒成功,您可以遠程連接了',toUserName='filehelper')else:connect_err_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(connect_err_time+u'設備喚醒失敗,請檢查設備是否連接電源',toUserName='filehelper')ssh.close()#在網站根目錄創建一個空文件,命名為shutdownos.system('touch/www/shutdown')print'執行開機消息成功'

關機部分實現

當接收關機指令時,程序會去刪除網站根目錄的 shutdown 文件,客戶端我寫了幾行代碼,去通過 Requests 庫每隔30s 發送 HTTP head 請求去判斷文件是否是404,如果是404 這說明文件不存在,調用系統關機操作,執行關機。

然后 SSH 到樹莓派去 ping 目標主機,如果返回為空,則說明關機成功,否則關機失敗。這只是針對 Windows 的關機,如果目標主機是 Linux 則簡單多了:

ifmsg['Text']==u'關機':#刪除網站根目錄的shutdown文件rmfile=os.system('rm-rf/www/shutdown')ifrmfile==0:print'執行關機消息成功'shutdown_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(shutdown_time+u'正在關機....',toUserName='filehelper')paramiko.util.log_to_file('ssh_key-login.log')privatekey=os.path.expanduser(key_file)try:key=paramiko.RSAKey.from_private_key_file(privatekey)exceptparamiko.PasswordRequiredException:key=paramiko.RSAKey.from_private_key_file(privatekey,key_file_pwd)ssh=paramiko.SSHClient()ssh.load_system_host_keys(filename=filename)ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=hostname,username=username,pkey=key,port=port)itchat.send(shutdown_time+u'正在確認設備是否完成關機操作,大約需要等待60s.',toUserName='filehelper')#等等60秒后確認,因為關機需要一段時間,如果設置太短,可能網絡還沒斷開time.sleep(60)stdin,stdout,stderr=ssh.exec_command('ping192.168.1.182-c1|grep64|cut-d""-f1|head-n1')sshConStatus=stdout.read()sshConStatus=sshConStatus.strip(' ')printtype(sshConStatus)printsshConStatus#如果獲取的值為空,則說明已經關機,否則關機失敗ifsshConStatus!='64':shutdown_success_err_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(shutdown_success_err_time+u'關機成功',toUserName='filehelper')else:shutdown_err_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())itchat.send(shutdown_err_time+u'關機失敗,請連接桌面檢查客戶端程序是否正常執行',toUserName='filehelper')ssh.close()itchat.auto_login(hotReload=True,enableCmdQR=2)itchat.run()

客戶端代碼,寫完扔計劃任務,開機啟動:

importrequestsimportosimporttimewhile1:time.sleep(30)r=requests.head("https://awen.me/shutdown")printr.status_codeifr.status_code==404:os.system("shutdown-s-t5")

使用 TeamViewer 連接:

缺點

網頁端微信必須一直登錄,不方便,這個就需要微信不能斷網了。

WakeOnLan 是廣播 MAC 地址的,貌似不能返回是否成功沒,所以還是要 ping 主機看看通不通,判斷下。

需要一個樹莓派做跳板機,否則也不能喚醒內網設備。

如果只允許自己控制最好是使用文件助手來發送消息,因為默認情況下,任何人都可以給你發送指令開機。

Windows需要安裝TeamViewer并且設置為開機自動啟動以及綁定賬號設置無人值守模式。這樣方便遠程,如果是Linux 則不需要開啟 ssh 就可以了。

代碼地址:https://github.com/monkey-wenjun/wchatwakeonlan

文章內的代碼如果有 Bug,后續更新都在 GitHub 上,完整代碼請參考 GitHub ,此文章代碼不再更新。

原文:https://awen.me/post/3709919605.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    3

    文章

    3541

    瀏覽量

    88623
  • 路由器
    +關注

    關注

    22

    文章

    3728

    瀏覽量

    113701
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627

原文標題:在家想遠程公司電腦?Python +微信一鍵連接

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一鍵還原_一鍵還原精靈等系統還原軟件集合

    一鍵還原程序功能:實現MGhost一鍵還原程序功能:實現一鍵備份還原系統
    發表于 03-12 18:20

    遠程管理系統定制

    遠程管理系統定制型號:HBTZ------821產品品牌:河北泰澤產品型號:HBTZ-821版本號:8.1 語言版本:中文 支持平臺:windows平臺 軟件簡介:遠程管理
    發表于 08-17 15:31

    python黑客操作遠程開機關機

    前言用 python 關機相信大家肯定聽過或者實踐過吧,那么用 Python 開機呢?這是個神奇的方法,教你如何用
    發表于 01-19 20:22

    有什么辦法可以實現電腦一鍵長按開關機功能嗎?

    查了下資料,發現很多實現一鍵長按開機或者關機電路的實現都是MOS管開關,加上MCU控制的方式,
    發表于 08-08 01:59

    windows系統是怎樣去設置定時開關機

    windows系統設置定時開關機的方法文章目錄:windows設置定時`開機`1、
    發表于 10-29 06:37

    ROC-RK3328-CC板是怎樣連接Windows遠程管理可視化桌面的

    ROC-RK3328-CC板是怎樣連接Windows遠程管理可視化桌面的?有哪些操作流程?
    發表于 03-09 07:42

    如何遠程管理windows2003服務器

    如何遠程管理windows2003服務器 我目前遠程管理著多臺服務器,并且經常需要遠程連接到客戶的系統
    發表于 01-27 13:34 ?1744次閱讀

    微軟Windows10值得升級嗎?給你八個升級Windows10的理由!

    微軟公司于2015年7月29日發布了全新的Windows10操作系統,并宣布開展長達年的免費升級期,筆者在第時間就進行了升級。現在距離Win10
    發表于 07-14 16:13 ?1012次閱讀

    Linux操作系統實用教程之如何Linux系統遠程管理

    本文檔的主要內容詳細介紹的是Linux操作系統實用教程之如何Linux系統遠程管理 主要內容是:1 遠程管理簡介2 終端方式的字符界面遠程管理
    發表于 10-31 18:04 ?0次下載

    windows10操作系統安全模式的使用技巧

    談到系統的安全模式大家并不陌生,在安全模式下可以解決相關的電腦問題。windows操作系統的安全模式也是非常實用的。不管是winxp、win7時代,還是現在的windows10
    發表于 06-12 17:25 ?1148次閱讀

    一鍵關機電路圖解析

    按鍵電路在我們的電路設計中非常常見,其中有種比較特殊,就是一鍵關機電路,顧名思義,就是只用個按鍵實現
    發表于 05-02 16:08 ?6.6w次閱讀
    <b class='flag-5'>一鍵</b>開<b class='flag-5'>關機</b>電路圖解析

    微軟表態:Windows10操作系統是“最后代”

    早在2015年Windows 10發布時,微軟就表態,這是Windows操作系統的“最后代”,即沒有所謂的
    的頭像 發表于 11-06 11:10 ?6028次閱讀

    windows系統設置定時開關機的方法

    windows系統設置定時開關機的方法文章目錄:windows設置定時`開機`1、
    發表于 10-22 13:51 ?5次下載
    <b class='flag-5'>windows</b><b class='flag-5'>系統</b>設置定時開<b class='flag-5'>關機</b>的方法

    軟件配合實現的“一鍵關機電路

    軟件配合實現的“一鍵關機電路”一鍵關機電路僅使用個按鍵,就可以
    發表于 12-09 10:36 ?30次下載
    軟件配合<b class='flag-5'>實現</b>的“<b class='flag-5'>一鍵</b>開<b class='flag-5'>關機</b>電路

    如何使用windows10遠程連接虛擬機桌面

    本文介紹了如何使用 windows10 遠程連接虛擬機桌面(已使用遠程連接工具連接了虛擬機,如
    的頭像 發表于 07-12 11:18 ?2930次閱讀
    主站蜘蛛池模板: 一本道无码字幕在线看| 英国video性精品高清最新| 影视先锋男人无码在线| 草莓在线观看| 好男人好资源在线观看免费视频| 男女XX00上下抽搐动态图| 微拍秒拍99福利精品小视频| 100国产精品人妻无码| 国产成人亚洲精品无广告| 久久伊人在| 无码免费视频AAAAAA片草莓| 岳打开双腿开始配合日韩视频| 成人无码在线超碰视频| 久久6699精品国产人妻| 如懿传免费观看在线全集| 又亲又揉摸下面视频免费看| 丰满大屁俄罗斯肥女| 久久最新地址获取| 向日葵视频app下载18岁以下勿看 香艳69xxxxx有声小说 | 美女被艹网站| 无码毛片内射白浆视频| WWW国产色情在线观看APP| 国产人妻人伦精品熟女麻豆| 九九久久国产精品大片| 秋霞午夜鲁丝片午夜精品久| 亚洲破处女| 国产高清免费观看| 年轻的朋友4在线看中文字幕| 亚洲国产免费观看视频| 不良网站进入窗口软件下载免费| 久久9精品区-无套内射无码| 无码一区二区三区| yellow日本动漫免费观看| 久久精品国产欧美| 亚洲 欧美 制服 视频二区| yy8090韩国理伦片在线| 老汉老太bbbbbxxxxx| 亚洲精品97福利在线| 国产成人精品久久久久婷婷| 秋霞电影网视频一区二区三区| 中文字幕亚洲视频|