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函数返回多个值的示例方法
Dec 04 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
python实现飞机大战微信小游戏
Mar 21 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python实现视频分帧效果
May 31 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
python 递归相关知识总结
Mar 03 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
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
Javascript继承机制详解
2017/05/30 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
Django中提供的6种缓存方式详解
2019/08/05 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
python手写均值滤波
2020/02/19 Python
如何完美的建立一个python项目
2020/10/09 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
华为c/c++笔试题
2016/01/25 面试题
如何利用find命令查找文件
2015/02/07 面试题
工厂厂长岗位职责
2013/11/08 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
团日活动总结报告
2014/06/25 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2015年考研复习计划
2015/01/19 职场文书
十八大观后感
2015/06/12 职场文书
工作简报格式范文
2015/07/21 职场文书
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS