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对url格式解析的方法
May 13 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
Python性能分析工具Profile使用实例
Nov 19 Python
python队列原理及实现方法示例
Nov 27 Python
PyTorch中的Variable变量详解
Jan 07 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 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 SQLite类
2009/05/07 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
php中的登陆login实例代码
2016/06/20 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python中的itertools的使用详解
2020/01/13 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
大学生毕业的自我鉴定
2013/11/13 职场文书
自荐信怎么写呢?
2013/12/09 职场文书
酒店led欢迎词
2014/01/09 职场文书
美容院店长岗位职责
2014/04/08 职场文书
日语系毕业求职信
2014/07/27 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android