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 27 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python write无法写入文件的解决方法
Jan 23 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Python的几种主动结束程序方式
Nov 22 Python
春节到了 教你使用python来抢票回家
Jan 06 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php db类库进行数据库操作
2009/03/19 PHP
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
跟老齐学Python之Python文档
2014/10/10 Python
python字典DICT类型合并详解
2017/08/17 Python
python的变量与赋值详细分析
2017/11/08 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
高三英语复习计划
2015/01/19 职场文书
出纳岗位职责
2015/01/31 职场文书
白银帝国观后感
2015/06/17 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android
服务器nginx权限被拒绝解决案例
2022/09/23 Servers