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中的type()方法的使用
May 21 Python
Python 绘图和可视化详细介绍
Feb 11 Python
Python生成随机密码的方法
Jun 16 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
Python初学者常见错误详解
Jul 02 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
Python几种酷炫的进度条的方式
Apr 11 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
使用 php4 加速 web 传输
2006/10/09 PHP
第八节--访问方式
2006/11/16 PHP
一个PHP日历程序
2006/12/06 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python判断字符串与大小写转换
2015/06/08 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
python 循环while和for in简单实例
2016/08/16 Python
Python实现统计代码行的方法分析
2017/07/12 Python
python中join()方法介绍
2018/10/11 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
导致python中import错误的原因是什么
2020/07/01 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
合伙经营协议书范本
2014/04/18 职场文书
cf战队收人口号
2014/06/21 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
祝寿主持词
2015/07/02 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript