還在找遠控?來看我用十幾行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 socket

import os

line=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:

break

print(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 socket

while 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 data

line.close()

執行結果如下:

服務端執行結果

客戶端在服務端執行 ls 命令後返回的結果

另外,小編有自己的學習交流群(主要是Python)大家如果想要來學習的話,可以加下:719+139+688,不管你是小白還是大牛,小編都歡迎,而且小編會在群裡面不定期分享乾貨,包括小編自己整理的一份2018年最新學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴

服務端命令日誌


推薦閱讀:

Tornado 有哪些獨到的優勢?是不是被過分追捧了?
Django寫的博客工具?
Tornado 非同步讀寫文件的方法?
為什麼 Python 裡面的 range 不包含上界?
Python中模塊變數__path__在這段代碼中怎麼傳進來的?

TAG:python爬蟲 | Python編程 | Python框架 |

標籤:

還在找遠控?來看我用十幾行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 socket

import os

line=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:

break

print(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 socket

while 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 data

line.close()

執行結果如下:

服務端執行結果

客戶端在服務端執行 ls 命令後返回的結果

另外,小編有自己的學習交流群(主要是Python)大家如果想要來學習的話,可以加下:719+139+688,不管你是小白還是大牛,小編都歡迎,而且小編會在群裡面不定期分享乾貨,包括小編自己整理的一份2018年最新學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴

服務端命令日誌


推薦閱讀:

Tornado 有哪些獨到的優勢?是不是被過分追捧了?
Django寫的博客工具?
Tornado 非同步讀寫文件的方法?
為什麼 Python 裡面的 range 不包含上界?
Python中模塊變數__path__在這段代碼中怎麼傳進來的?

TAG:python爬蟲 | Python編程 | Python框架 |