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代码(逐级优化)
May 25 Python
python函数缺省值与引用学习笔记分享
Feb 10 Python
python BeautifulSoup使用方法详解
Nov 21 Python
常见的在Python中实现单例模式的三种方法
Apr 08 Python
Python之reload流程实例代码解析
Jan 29 Python
python实现决策树分类
Aug 30 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Python打包为exe详细教程
May 18 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格式化日期和时间格式化示例分享
2014/02/24 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Python List cmp()知识点总结
2019/02/18 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
大学生求职自荐信
2013/12/12 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
企业安全生产责任书
2014/04/14 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
小学社团活动总结
2014/06/27 职场文书
明星员工获奖感言
2014/08/14 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
公司介绍信范文
2015/01/31 职场文书
商场收银员岗位职责
2015/04/07 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书