還在找遠控?來看我用十幾行python代碼寫個簡易遠程控制
剛開始學習編程的同學可能經常會問:「我學了這個幹什麼用?買菜的時候掏出電腦來編個程序算算多少錢?」
其實,這跟大家的知識面和入門選擇的語言有很大關係,大部分同學會選擇C語言來入門編程,C語言雖然簡潔,但是面向過程的編程方式總會讓人覺得枯燥無味,無所適從。
那咱們現在做個有意思的,做個超級簡易的遠程控制軟體,好吧~其實頂多算個腳本。
既然是遠控,那就需要確定兩個功能:
1、遠程
即通過網路訪問外部主機(包括內網),我們可以利用Python中封裝好的 socket庫,可以實現遠程傳輸文本、文件、視頻等。
Python socket詳情介紹
2、控制
控制,最簡單的理解就是執行命令,那麼我們可以採用Python中的 os庫,即可執行Linux shell 命令。
Python os詳情介紹
下面就是代碼,保存成.py文件,然後先執行server.py 再執行 client.py。
服務端,保存成 server.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-import socketimport osline=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
line.bind((伺服器IP,監聽埠))line.listen(5)print(waiting commd------->)while True:conn,addr=line.accept()msg=conn.recv(1024)if msg == q:breakprint(get commd:,msg)result=os.popen(msg).read()
conn.send(result: +result)conn.close()phone.close()
客戶端 保存成client.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-import socketwhile True:line=socket.socket(socket.AF_INET,socket.SOCK_STREAM)line.connect((伺服器IP,監聽埠))msg = str(raw_input(please input commd:))
line.send(str(msg).encode(utf-8))data=phone.recv(1024)print dataline.close()
執行結果如下:
服務端執行結果
客戶端在服務端執行 ls 命令後返回的結果
另外,小編有自己的學習交流群(主要是Python)大家如果想要來學習的話,可以加下:719+139+688,不管你是小白還是大牛,小編都歡迎,而且小編會在群裡面不定期分享乾貨,包括小編自己整理的一份2018年最新學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴
服務端命令日誌
推薦閱讀:
※Tornado 有哪些獨到的優勢?是不是被過分追捧了?
※Django寫的博客工具?
※Tornado 非同步讀寫文件的方法?
※為什麼 Python 裡面的 range 不包含上界?
※Python中模塊變數__path__在這段代碼中怎麼傳進來的?
還在找遠控?來看我用十幾行python代碼寫個簡易遠程控制
剛開始學習編程的同學可能經常會問:「我學了這個幹什麼用?買菜的時候掏出電腦來編個程序算算多少錢?」
其實,這跟大家的知識面和入門選擇的語言有很大關係,大部分同學會選擇C語言來入門編程,C語言雖然簡潔,但是面向過程的編程方式總會讓人覺得枯燥無味,無所適從。
那咱們現在做個有意思的,做個超級簡易的遠程控制軟體,好吧~其實頂多算個腳本。
既然是遠控,那就需要確定兩個功能:
1、遠程
即通過網路訪問外部主機(包括內網),我們可以利用Python中封裝好的 socket庫,可以實現遠程傳輸文本、文件、視頻等。
Python socket詳情介紹
2、控制
控制,最簡單的理解就是執行命令,那麼我們可以採用Python中的 os庫,即可執行Linux shell 命令。
Python os詳情介紹
下面就是代碼,保存成.py文件,然後先執行server.py 再執行 client.py。
服務端,保存成 server.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-import socketimport osline=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
line.bind((伺服器IP,監聽埠))line.listen(5)print(waiting commd------->)while True:conn,addr=line.accept()msg=conn.recv(1024)if msg == q:breakprint(get commd:,msg)result=os.popen(msg).read()
conn.send(result: +result)conn.close()phone.close()
客戶端 保存成client.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-import socketwhile True:line=socket.socket(socket.AF_INET,socket.SOCK_STREAM)line.connect((伺服器IP,監聽埠))msg = str(raw_input(please input commd:))
line.send(str(msg).encode(utf-8))data=phone.recv(1024)print dataline.close()
執行結果如下:
服務端執行結果
客戶端在服務端執行 ls 命令後返回的結果
另外,小編有自己的學習交流群(主要是Python)大家如果想要來學習的話,可以加下:719+139+688,不管你是小白還是大牛,小編都歡迎,而且小編會在群裡面不定期分享乾貨,包括小編自己整理的一份2018年最新學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴
服務端命令日誌
推薦閱讀:
※Tornado 有哪些獨到的優勢?是不是被過分追捧了?
※Django寫的博客工具?
※Tornado 非同步讀寫文件的方法?
※為什麼 Python 裡面的 range 不包含上界?
※Python中模塊變數__path__在這段代碼中怎麼傳進來的?