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爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
tensorflow如何批量读取图片
Aug 29 Python
python 实现return返回多个值
Nov 19 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
Python max函数中key的用法及原理解析
Jun 26 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php生成与读取excel文件
2016/10/14 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
np.dot()函数的用法详解
2020/01/17 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
复古服装:RetroStage
2019/05/10 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
丧事答谢词
2015/01/05 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
Python 阶乘详解
2021/10/05 Python