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实现的阳历转阴历(农历)算法
Apr 25 Python
python3之模块psutil系统性能信息使用
May 30 Python
Python tkinter label 更新方法
Oct 11 Python
Django REST framework 视图和路由详解
Jul 19 Python
python Tcp协议发送和接收信息的例子
Jul 22 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
python学生管理系统的实现
Apr 05 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
php中Smarty模板初体验
2011/08/08 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
Firefox div高度自适应
2009/04/28 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
动态创建类实例代码
2009/10/07 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
优秀教师事迹简介
2014/02/02 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
农村婚礼主持词
2014/03/13 职场文书
四风问题查摆材料
2014/08/25 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
社会实践活动总结格式
2015/05/11 职场文书
合作合同协议书
2016/03/21 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python