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的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
基于Python实现文件大小输出
Jan 11 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
python生成圆形图片的方法
Mar 25 Python
python scp 批量同步文件的实现方法
Jan 03 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
使用numpy nonzero 找出非0元素
May 14 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聊天室技术
2006/10/09 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
python调用shell的方法
2013/11/20 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python爬虫可以爬什么
2020/06/16 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
Python如何定义接口和抽象类
2020/07/28 Python
毕业生优秀推荐信
2013/11/26 职场文书
入党培养人考察意见
2015/06/08 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android