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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
Python装饰器的函数式编程详解
Feb 27 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
python中验证码连通域分割的方法详解
Jun 04 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python3爬虫学习入门教程
Dec 11 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
Python list列表删除元素的4种方法
Nov 01 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
web前端开发也需要日志
2010/12/09 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
Python OS模块常用函数说明
2015/05/23 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
python实现图片转字符小工具
2019/04/30 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
Linux开机引导的步骤是什么
2015/10/19 面试题
学院领导推荐信
2013/10/30 职场文书
新年团拜会主持词
2014/04/02 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
大学生就业意向书
2015/05/11 职场文书
网聊搭讪开场白
2015/05/28 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers