python基礎 網路程式設計十(遠端執行命令)

2021-09-02 22:39:14 字數 2366 閱讀 4801

# server 下發命令

# client 執行命令

# ssh協議

# import os

# ret = os.popen('ls').read()

# print(ret)

import subprocess

# 內建模組 和os模組的功能有相似之處

# 能執行作業系統的命令的功能

ret = subprocess.popen('dir', # 要執行的命令

shell=true, # 表示要執行的是一條系統命令

stdout=subprocess.pipe, # 儲存執行結果的正常資訊

stderr=subprocess.pipe) # 儲存執行結果的錯誤資訊

print('stdout : ',ret.stdout.read().decode('gbk'))

print('stderr : ',ret.stderr.read().decode('gbk'))

client-udp:

import socket

import subprocess

sk = socket.socket(type=socket.sock_dgram)

sk.sendto(b'111',('127.0.0.1',8090))

while true:

cmd = sk.recvfrom(1024)[0].decode('utf-8')

if cmd == 'q': break

res = subprocess.popen(cmd,shell=true,

stdout=subprocess.pipe,

stderr=subprocess.pipe)

sk.sendto(res.stdout.read()*100,('127.0.0.1',8090))

sk.sendto(res.stderr.read(),('127.0.0.1',8090))

sk.close()

server-udp:

import socket

sk = socket.socket(type=socket.sock_dgram)

sk.bind(('127.0.0.1',8090))

msg,addr = sk.recvfrom(1024)

while true:

cmd = input('cmd : ')

if cmd == 'q':

sk.sendto(cmd.encode('utf-8'),addr)

break

sk.sendto(cmd.encode('utf-8'),addr)

print('stdout : ',sk.recvfrom(2048)[0].decode('gbk'))

print('stderr : ',sk.recvfrom(2048)[0].decode('gbk'))

sk.close()

client:

import socket

import subprocess

sk = socket.socket()

sk.connect(('127.0.0.1',8090))

while true:

cmd = sk.recv(1024).decode('utf-8')

if cmd == 'q': break

res = subprocess.popen(cmd,shell=true,

stdout=subprocess.pipe,

stderr=subprocess.pipe)

sk.send(res.stdout.read())

sk.send(res.stderr.read())

sk.close()

server:

import socket

sk = socket.socket()

sk.bind(('127.0.0.1',8090))

sk.listen()

conn,addr = sk.accept()

while true:

cmd = input('cmd : ')

if cmd == 'q':

conn.send(cmd.encode('utf-8'))

break

conn.send(cmd.encode('utf-8'))

print('stdout : ',conn.recv(1024).decode('gbk'))

conn.close()

sk.close()

python網路程式設計(十)

在多路復用的模型中,比較常用的有select模型和epoll模型。這兩個都是系統介面,由作業系統提供。當然,python的select模組進行了更高階的封裝。網路通訊被unix系統抽象為檔案的讀寫,通常是乙個裝置,由裝置驅動程式提供,驅動可以知道自身的資料是否可用。支援阻塞操作的裝置驅動通常會實現一...

python網路程式設計基礎

客戶 伺服器架構 伺服器 是乙個軟體或硬體,用於提供客戶需要的 服務 伺服器存在的唯一目的就是等待客戶的請求,給這些客戶服務,然後再等待其他的請求.常見的服務型別 硬體的客戶 伺服器架構 印表機,檔案伺服器 軟體客戶 伺服器架構 web伺服器,資料庫伺服器,視窗伺服器 gui 套接字 用於程序間通訊...

python 網路程式設計基礎

python實在是太方便,太易用了,三方庫的支援又全,語法又簡單,對開發人員來說,實在是居家旅行,x的必備利器。週末研究了下python的網路支援,做一下記錄,以備隨後翻閱。python支援bsd的socket進行網路程式設計,其api跟c中的大同小異,先看看tcp方式的,說到網路程式設計,肯定會設...