python简易远程控制单线程版


Posted in Python onJune 20, 2018

本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下

1. 技术:管道通信,流文件处理,socket基础

2. Tips:

默认IP:127.0.0.1

默认端口:7676

3. 代码样例:

服务端:

#!/usr/bin/env python  
# encoding: utf-8  
 
import socket 
import sys 
from os import * 
 
reload(sys)  
sys.setdefaultencoding("utf-8")  
 
def socketInit(): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  return s 
 
def socketDeal(s,HOST,PORT): 
  s.bind((HOST,PORT)) 
  s.listen(1) 
 
def ControlModule(sS,addr): 
  recv_buffer = sS.recv(20048) 
  if recv_buffer == "[-]Error:Server is OFF" or recv_buffer == "[*]Server is OFF": 
    print recv_buffer 
    sys.exit(0) 
  else: 
    print recv_buffer 
  send_buf = raw_input(addr[0]+">") 
  sS.send(send_buf) 
 
 
def main(): 
  HOST = "127.0.0.1" 
  PORT = 7676 
  s = socketInit() 
  socketDeal(s, HOST, PORT) 
  sS,addr = s.accept() 
  print "Connect from " + addr[0] + ":" + repr(addr[1]) 
  try: 
    while True: 
      ControlModule(sS,addr) 
  except Exception as e: 
    print "[-]Connect Error" 
    sS.close() 
    s.close() 
    sys.exit(-1) 
  except KeyboardInterrupt: 
    sS.close() 
    s.close() 
    sys.exit(0) 
 
if __name__ == '__main__': 
  main()

受控端:

#!/usr/bin/env python  
# encoding: utf-8  
 
import socket 
import sys 
import re 
import traceback 
import tempfile 
from os import * 
from subprocess import * 
 
reload(sys)  
sys.setdefaultencoding("utf-8")  
 
def socketInit(): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  return s 
 
def socketConn(s,HOST,PORT): 
  while True: 
    try: 
      s.connect((HOST,PORT)) 
    except Exception as e: 
      continue 
    else: 
      s.send("Welcome Sir ~") 
      break 
 
 
def String_Deal(recv,send): 
  P_str = re.findall("cd(.*)|(\w):", recv) 
  if P_str!=[] and send == "": 
    if P_str[0][0]!="": 
      try: 
        chdir(P_str[0][0].strip()) 
      except Exception as e: 
        flag = -1 
      else: 
        flag = 1 
    else: 
      try: 
        chdir(recv) 
      except Exception as e: 
        #traceback.print_exc() 
        flag = -1 
      else: 
        flag = 1 
  else: 
    if send == "": 
      flag = 1 
    else: 
      flag = 0 
  return flag 
 
def OpenProcess(s): 
  try: 
    while True: 
      recv_buf = s.recv(2048) 
      #流文件技术,防止管道阻塞 
      out_temp = tempfile.SpooledTemporaryFile(bufsize=10*1000) 
      fileNo = out_temp.fileno() 
      cmd = Popen(recv_buf, shell=True,stdin=PIPE, stdout=fileNo, stderr=STDOUT) 
      cmd.wait() 
      out_temp.seek(0) 
      send_buf = out_temp.read() 
      #print len(send_buf) 
      #输入命令字符串处理识别 
      flag = String_Deal(recv_buf,send_buf) 
      if flag == 1: 
        s.send("OK") 
      elif flag == -1: 
        s.send("Error!!") 
      else: 
        s.send(send_buf) 
      send_buf = "" 
  except Exception as e: 
    try: 
      s.send("[-]Error:Server is OFF") 
    except Exception as e: 
      pass 
      s.close() 
    sys.exit(-1)     
  except KeyboardInterrupt: 
    try: 
      s.send("[*]Server is OFF") 
    except Exception as e: 
      pass 
    s.close() 
    sys.exit(0)  
def main(): 
  flag = 0 
  HOST = "127.0.0.1" 
  PORT = 7676 
  s = socketInit() 
  socketConn(s, HOST, PORT) 
  OpenProcess(s) 
 
 
if __name__ == '__main__': 
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中对list去重的多种方法
Sep 18 Python
Python导出数据到Excel可读取的CSV文件的方法
May 12 Python
在Python中用get()方法获取字典键值的教程
May 21 Python
Python读取键盘输入的2种方法
Jun 16 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
python绘制热力图heatmap
Mar 23 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
python try...finally...的实现方法
Nov 25 Python
python通过Windows下远程控制Linux系统
Jun 20 #Python
Python实现求解一元二次方程的方法示例
Jun 20 #Python
python实现NB-IoT模块远程控制
Jun 20 #Python
Python中pandas模块DataFrame创建方法示例
Jun 20 #Python
python自动发送邮件脚本
Jun 20 #Python
Python使用numpy模块创建数组操作示例
Jun 20 #Python
python实现自动发送邮件
Jun 20 #Python
You might like
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
javascript新手语法小结
2008/06/15 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
DJI全球:DJI Global
2021/03/15 全球购物
软件工程师岗位职责
2013/11/16 职场文书
作文评语怎么写
2014/12/25 职场文书
爱护环境建议书
2015/09/14 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python