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中的XML库4Suite Server的介绍
Apr 14 Python
简单介绍Python中的decode()方法的使用
May 18 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
python开发之str.format()用法实例分析
Feb 22 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Python 从相对路径下import的方法
Dec 04 Python
Python列表list排列组合操作示例
Dec 18 Python
python requests指定出口ip的例子
Jul 25 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
pandas按条件筛选数据的实现
Feb 20 Python
用python开发一款操作MySQL的小工具
May 12 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
第十一节 重载 [11]
2006/10/09 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
python实现决策树分类算法
2017/12/21 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
大四本科生的自我评价
2013/12/30 职场文书
清洁工表扬信
2014/01/08 职场文书
展会邀请函范文
2014/01/26 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
教师产假请假条
2014/04/10 职场文书
亲子活动总结
2014/04/26 职场文书
义诊活动通知
2015/04/24 职场文书
校友会致辞
2015/07/30 职场文书
初一年级组工作总结
2015/08/12 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript