今天下午闲来无事,就随便搞了一下 看看python socket敲linux命令的难度,当然,如果熟悉socket的都知道,其实并没有什么难度,我这里的例子只是一个简单的例子,反正实现了我想要玩的功能
服务端
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
import socket
import os, os.path
IP = "0.0.0.0"
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((IP, PORT))
s.listen(5)
sock, addr = s.accept()
while True:
data = sock.recv(1024).decode("utf-8")
if len(data) > 2 and data[:2] == "cd":
if os.path.isdir(data[3:]):
os.chdir(data[3:])
cmd = "this is dir"
else:
cmd = "No such file or directory:" + data[3:]
else:
res = os.system(r"which %s" % data.split()[0])
if res != 0:
cmd = "error"
else:
cmd = os.popen(data).read()
print("当前命令字节数:%s" % len(cmd.encode("utf-8")))
sock.send(cmd.encode("utf-8"))
客户端
# -*- coding:utf-8 -*-
import socket
IP = "172.30.0.160" #这里自己根据自己电脑的ip进行修改
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
s.send("pwd".encode("utf-8"))
dirs = s.recv(1024).decode("utf-8")
L = [dirs]
while True:
data = input(L[0].replace("\n", "") + ">>>>>:")
if data.strip() == "":continue
s.send(data.strip().encode("utf-8"))
msg = s.recv(10240)
if msg.decode("utf-8") == "this is dir":L[0] = data[3:]
else:print(msg.decode("utf-8"))
大家不要在意细节哈,能看就行,下面给一个简单的截图