首页 > 编程语言 >python使用os和socket模块简单进行远程命令执行

python使用os和socket模块简单进行远程命令执行

时间:2022-11-15 19:34:43浏览次数:47  
标签:socket python cmd replay print os 服务端

一般来说,os模块自带os.system()和os.popen()两个方法用于命令执行,os.system()用来执行系统命令os.popen()可以理解为把命令执行结果变成文件并可供读写,我们主要使用popen()方法

废话不多说,远程服务端的命令执行模块直接上代码:

1 import os
2 
3 
4 def runcommand(command):
5     return os.popen(command)

接下来使用socket模块写一个简单的服务端和客户端

服务端:

 1 HOST = '127.0.0.1'  # 服务端IP
 2 PORT = 6666  # 服务端开放的端口
 3 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建套接字
 4 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 服务器关闭时立马终止并且释放服务器资源
 5 print(s.bind((bytes(HOST.encode('utf-8')), PORT)))
 6 
 7 print("[*] listen on {}:{}".format(HOST, PORT))  # 输出正在监听的状态
 8 s.listen(3)  # 开始监听
 9 conn, addr = s.accept()  # 同意用户登录服务器
10 conn.send("->".encode())  # 发送信息 ->
11 while True:
12     print('connected by:', addr)  # 输出连接者信息
13     request_cmd = conn.recv(1024)  # 获取客户端发送的信息
14     print(request_cmd.decode())  # 在服务端输出来自客户端的指令
15     cmddata = request_cmd.decode().split('b')  # 因为发送过来的格式都是被标记为bytes类型的字节类型字符串,所以需要进行二次加工把 'b'去除
16     replay_cmd = runcommand(cmddata[0])  # 本地执行指令
17     conn.send(replay_cmd.read().encode())  # 发送命令执行结果
18     conn.send('->'.encode())  # 发送 ->字符串
19     continue

客户端:

 1 import socket
 2 
 3 HOST = '127.0.0.1'
 4 PORT = 6666
 5 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 6 s.connect((HOST, PORT))
 7 
 8 replay = s.recv(1024).decode()
 9 print(replay)
10 while True:
11     request = input("")
12     s.send(request.encode())
13     replay = s.recv(1024)
14     print(replay.decode())
15     if len(replay.decode()) != 0:
16         continue

客户端执行效果:

服务端执行效果:

 

 

标签:socket,python,cmd,replay,print,os,服务端
From: https://www.cnblogs.com/tugoufenrir/p/16893600.html

相关文章

  • centos naiveproxy
    cd/usr/srcwgethttps://golang.google.cn/dl/go1.18.linux-amd64.tar.gztar-xvfgo1.18.linux-amd64.tar.gz-C/usr/local/vim~/.bashrc#设置GO语言路径exportGO......
  • python os模块 高频函数(未完待续)
    os.environ>>>importos>>>os.environenviron({'CLUTTER_IM_MODULE':'fcitx','COLORTERM':'truecolor','DBUS_SESSION_BUS_ADDRESS':'unix:path=/run/user/1000/......
  • 07python列表
    这篇文章主要介绍列表的一些知识。函数list首先需要说明的是,列表与元组、字符串一样都是一种序列,但不同的是列表是可变的,即可修改其内容。因为不能像修改列表那样修改字......
  • python 线程池 ThreadPoolExecutor
    从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。相比threading等模块,该模......
  • 软件开发架构,架构发展趋势,网络编程前戏,OSI七层协议
    目录软件开发架构,架构发展趋势,网络编程前戏,OSI七层协议今日内容概要今日内容详细软件开发架构架构总结网络编程前戏OSI七层协议简介OSI七层协议之物理连接层OSI七层协议之......
  • 软件开发架构 OSI七层协议
    今日内容软件开发结构规定了程序的请求逻辑、功能模块C/S架构Client:客户端Server:服务端'''我们使用计算机下载的一个个app本质是各大互联网公司的客户端软件通......
  • 软件开发架构、OSI七层协议
    软件开发架构、OSI七层协议目录软件开发架构、OSI七层协议软件开发架构软件开发架构分类架构优劣架构发展趋势网络编程前戏OSI七层协议简介OSI七层协议之物理连接层OSI七......
  • python进阶3-操作excel
    参考:https://www.cnblogs.com/R-bear/p/15025822.html一、python操作excel,python操作excel使用xlrd、xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutil......
  • 网络编程,osi七层协议
    软件开发架构规定了程序的请求逻辑,功能分开分为两种:1.C/S架构 客户端(Client)类似于我们下载的app,给客户提供软件体验,可以理解成要去消费的客户服务端......
  • windwos cmake与c++的使用教程(2)
    概述本文基于前文环境一个基于cmake的hellocmake本节目标:使用VSCode创建cmake脚本文件,输出hellocmake1准备因为cmake执行过程可能有新的文件生成,所以,这里新......