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实现定制交互式命令行的方法
Jul 03 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python使用gensim计算文档相似性
Apr 10 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python单例模式的两种实现方法
Aug 14 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
python 检查是否为中文字符串的方法
Dec 28 Python
Python3内置模块random随机方法小结
Jul 13 Python
Python Django view 两种return的实现方式
Mar 16 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Python之基础函数案例详解
Aug 30 Python
Python jiaba库的使用详解
Nov 23 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获取后台Job管理的实现代码
2011/06/10 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
详解jQuery选择器
2016/12/21 Javascript
深入研究React中setState源码
2017/11/17 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
python:socket传输大文件示例
2017/01/18 Python
Python的装饰器使用详解
2017/06/26 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Django中的Model操作表的实现
2018/07/24 Python
Django 拆分model和view的实现方法
2019/08/16 Python
python框架django项目部署相关知识详解
2019/11/04 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python如何发送与接收大型数组
2020/08/07 Python
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
班子四风对照检查材料
2014/08/21 职场文书
运动会演讲稿100字
2014/08/25 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年后勤工作总结
2014/11/18 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL