满足客户端与服务端通信,套接字。
选择sentence表示客户端对服务端的请求内容。
client.py
from socket import *
serverName ='192.168.159.135'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)#新建
clientSocket.connect((serverName,serverPort))
# 分别注释掉一个进行测试
# sentence='show me OS info'#打印操作系统的信息
sentence='show me Disk info'#打印磁盘信息
sentence=input("give me a order?")
clientSocket.send(bytes(sentence,'utf-8'))
modifiedSentence = clientSocket.recv(2048)
# 检查类别
# print(type(modifiedSentence))
# print(type(modifiedSentence.decode()))
print ('From Server:'+ modifiedSentence.decode())#打印返回信息,二进制先进行解码
clientSocket.close()#关闭
server.py
from socket import *
import os
import shlex, subprocess
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)#新建
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
print ('The server is ready to receive')
while True:
try:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024).decode()
if sentence=='show me OS info':#操作系统信息
capitalizedSentence = subprocess.check_output(["cat","/proc/version"], shell = False)#返回标准输出
# 测试使用
# print(type(capitalizedSentence))
print(capitalizedSentence)
elif sentence=='show me Disk info':#磁盘信息
capitalizedSentence = subprocess.check_output(["lsblk"])
# 测试使用
# print(type(capitalizedSentence))
print(capitalizedSentence)
else:#其他情况显示为错误
capitalizedSentence="wrong input"
print(capitalizedSentence)
connectionSocket.send(capitalizedSentence.decode(errors='replace').encode(encoding='UTF-8',errors='replace'))#编码
connectionSocket.close()
except KeyboardInterrupt:
exit("keyboard Interrupt")#键盘终止程序运行
else:
pass