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实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
使用K.function()调试keras操作
Jun 17 Python
python对execl 处理操作代码
Jun 22 Python
Python操作Word批量生成合同的实现示例
Aug 28 Python
python Scrapy框架原理解析
Jan 04 Python
jupyter 添加不同内核的操作
Feb 06 Python
python程序的组织结构详解
Dec 06 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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版(3)
2006/10/09 PHP
PHP ajax 分页类代码
2008/11/13 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php7性能提升的原因详解
2019/10/13 PHP
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python configparser模块常用方法解析
2020/05/22 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
代理协议书
2014/04/22 职场文书
设备售后服务承诺书
2014/05/30 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
对讲机知识
2022/04/07 无线电