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利用datetime模块计算时间差
Aug 04 Python
python opencv之SIFT算法示例
Feb 24 Python
Python 实现一行输入多个值的方法
Apr 21 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python命名空间的本质和加载顺序
Dec 17 Python
python获取服务器响应cookie的实例
Dec 28 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
wxPython实现带颜色的进度条
Nov 19 Python
Python如何读取文件中图片格式
Jan 13 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
详细分析Python collections工具库
Jul 16 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
Session保存到数据库的php类分享
2011/10/24 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
Windows下安装python2.7及科学计算套装
2015/03/05 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
django批量导入xml数据
2016/10/16 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
python去掉行尾的换行符方法
2017/01/04 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python实现C4.5决策树算法
2018/08/29 Python
Python自带的IDE在哪里
2020/07/01 Python
Django-imagekit的使用详解
2020/07/06 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
单位提档介绍信
2014/01/17 职场文书
对公司合理化的建议书
2014/03/12 职场文书
产品质量承诺书
2014/03/27 职场文书
施工安全责任书
2014/04/14 职场文书
领导班子整改措施
2014/10/24 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技