python通过Windows下远程控制Linux系统


Posted in Python onJune 20, 2018

一、学习目标

【通过Windows下远程控制Linux系统实现对socket模块认识】

二、实验环境

Windows下(模拟客户端 [ IP:192.168.43.87 ] ):python3.6
Linux下(模拟服务端 [ IP:192.168.43.226 ] ):python2.7

三、前提条件

两者能够ping通
服务端关闭防火墙,selinux

四、代码

服务端代码(server.py):

#!/usr/bin/env python
#coding:utf-8

import socket
import os

HOST = "192.168.43.226"
PORT = 5000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr = (HOST,PORT)
s.bind(addr)       # 绑定地址
s.listen(1)       # 打开监听
conn,addr = s.accept()  # 同意建立连接
print(addr)       # 输出客户端IP

def get_client_file():   # 定义服务端获取文件函数
  conn.send("Ready to receive!")
  data = conn.recv(20480) # 接受客户端的数据
  print(data)
  with open("clientFile.txt",'wb') as f:
    f.write(data)
  conn.close()

def send_server_file():   # 定义服务端发送文件函数
  c_filepath = conn.recv(1024) # 接受客户机请求路径
  with open(c_filepath,'rb') as f:
    data = f.read()
    conn.sendall(data)
    conn.close()

def main():
  while True:
    cmd = conn.recv(1024)
    print(cmd) # 打印接受的命令
    if cmd == "q":
      break
    if cmd == "transdata":
      get_client_file()  # 获取客户端文件
      break
    if cmd == "recvdata":
      send_server_file() # 发送服务端文件
      break    
    data = os.popen(cmd)  # 响应客户端命令
    sdata = data.read()   
    if sdata:
      conn.sendall(sdata)
    else:
      conn.send("finish")     
  conn.close()  
  s.close()  
if __name__ == "__main__":
  main()

客户端(client.py):

import socket

HOST = "192.168.43.226"
PORT = 5000
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr = ((HOST,PORT))
c.connect(addr)     # 连接服务器

def send_client_file(): # 定义客户端发送文件函数
  data = c.recv(1024)   # 接收预备传输提示
  print(data)       
  c_filepath = input("Please enter the client file path:")
  with open(c_filepath,"rb") as f:
    file = f.read()   # 以byte方式读取文件内容
  c.sendall(file)     # 将读取的内容发往服务端

def get_server_file():   # 定义客户端接受文件函数
  s_filepath = input("Please enter the server file path:")
  c.send(bytes(s_filepath,encoding='gbk'))
  data = c.recv(20480)  # 等待接受服务器数据
  with open("shadow.txt","wb") as f:
    f.write(data)

def main():

  while True:
    cmd = input("Plsase input a command:")
    c.send(bytes(cmd,encoding="gbk"))  # 发送数据
    if cmd == "q":
      break
    if cmd == "transdata":   # 创建发送客户端文件命令
      send_client_file()
      break
    if cmd == "recvdata":    # 创建接收服务端文件命令
      get_server_file()
      break
    data = c.recv(20480)
    print(data)
  c.close()

if __name__ =="__main__":
  main()

五、测试结果(这里拿获取服务端shadow文件测试)

在windows下运行client.py文件
》》键入:recvdata
》》键入:/etc/shadow

python通过Windows下远程控制Linux系统

感兴趣的朋友可以一起研究讨论学习技术!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
python计算n的阶乘的方法代码
Oct 25 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
Python PIL库图片灰化处理
Apr 07 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Python实现一个论文下载器的过程
Jan 18 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
Django实现登录随机验证码的示例代码
Jun 20 #Python
You might like
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php实现读取超大文件的方法
2014/07/28 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
简单的js计算器实现
2016/10/26 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
Python 文件管理实例详解
2015/11/10 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
2014离婚协议书范文两篇
2014/09/15 职场文书
助学金感谢信
2015/01/20 职场文书
毕业实习单位意见
2015/06/04 职场文书
文化大革命观后感
2015/06/17 职场文书
转学证明范本
2015/06/19 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js