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

一、学习目标

【通过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

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

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

(0)

相关推荐

  • 如何在windows桌面使用ftp上传文件到linux服务器

    首先在linux服务器上安装ftp [root@host2 test]#yum -y install ftp vsftpd [root@host2 test]#service vsftpd start [root@host2 test]#chkconfig vsftpd --list [root@host2 test]#/etc/init.d/iptables stop [root@host2 test]# ftp 192.168.0.142 Connected to 192.168.0.142

  • Python实现Windows和Linux之间互相传输文件(文件夹)的方法

    项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件.所以就需要实现如何把文件从Windows系统传输到Linux系统中. 在项目中使用了pscp.exe这个工具,只要按照pscp.exe的使用说明操作即可.只要进入pscp.exe的安装位置,然后输入pscp即可查看pscp的使用说明. 下面是我机器上的: 使用Python实现也挺简单的,下面的code主要介绍4中情况: 1. windows传输文件到Linux 2. windows传输

  • Linux上也有10个流行的Windows应用程序

    据数据分析公司Net Market Share声称,Linux桌面操作系统的使用率已达到了2%.对这款开源操作系统来说,这可是前所未有的成就. 这个数字并没有把安卓算作Linux.这表明,更多的用户扎堆涌向传统的Linux桌面. 回顾过去,2018 年是 Linux 社区的好年景.许多仅在 Windows 和/或 Mac上 有的程序可在 Linux 平台上使用了,而且不用麻烦.向 Snap 和 Flatpak 技术致敬,这些技术已经为 Linux 用户带来了许多"受限制"的程序. 今天

  • linux和windows互传文件的实现方案

    一.linux和windows互传文件(前提是:必须使用XShell或securecrt,不能使用PuTTY) yum install -y lrzsz //linux与windows互传文件需要在linux上yum安装lrzsz sz 文件名 //linux往windows传文件 rz 回车,选择文件 //windows往linux 传文件,传到当前目录 xshell 和 securecrt支持: putty不支持 二.用户配置文件和密码配置文件 [root@linux-01 ~]# cat

  • Windows 10利用虚拟机安装Linux图文教程

    Linux由于其众多独特的优势(可参见Linux系统的优势),而被很多人所喜爱.而要使用Linux那首先要做的工作就是安装Linux系统了.这里给出在 win10 下利用虚拟机 Hyper-v 安装 Linux 的过程供大家交流学习. 由于 Linux 版本众多,在选择时很多人就犯难了,不知道该怎样去选择.这里选择 Ubuntu 原因有二,一是 Ubuntu 最近比较火,也算是随大流吧:二是其有比较方便的桌面系统,比较适合初学者使用,所以这里就选择了Ubuntu.我下载的是64位的,版本16.0

  • 把windows下的字体安装到Linux系统下的方法介绍

    Linux(Fedora/Ubuntu/CentOS)的字体实在不尽如人意,而且在网页及文档显示时很多字无法显示出来,特别多的空白和乱码,其实,我们可以把windows下的字体和自己心仪的字体添加到Linux中,本文将介绍如何在Linux下添加字体. 一.Linux添加字体方法介绍 1.首先在windows的"控制面板"->"字体"中,将自己要的字体复制出来. 再进入到Linux(Fedora/Ubuntu),在桌面新建一个文件夹,名字叫做font,把Wind

  • Linux与Windows编码不一致的解决方案

    Windows编码无法修改,修改linux的编码,使之与windows编码一致. 查看windows编码格式,打开cmd chcp 找到对应的活动代码页 52936 简体中文(HZ) 936 中国 - 简体中文(GB2312) 950 繁体中文(Big5) 65001 Unicode (UTF-8) 1200 Unicode 查看linux正在使用的编码格式 locale 查看linux支持哪些编码格式 locale -a 修改linux编码格式(centos7) vim /etc/locale

  • Xshell实现Windows上传文件到Linux主机的方法

    写在前面,博主本身并没有开始做接口自动化测试,目前刚刚学完postman的教程,了解工具,现在脑海中基本上的框架是已经有了,因为我们知道postman的collection是可以命令行执行(nodejs+newman)的,那么就为我们做Jenkins持续集成提供了良好的基础,之前博主让开发分配了一个linux虚拟机,可以用来跑接口测试脚本,想来会比我的另一台win7性能要好,因为是centos,搞linux的对gui并不感冒,那么涉及到一个问题,我windows下面的collection jso

  • 详解Windows与Linux共享文件夹互相访问

     详解Windows与Linux共享文件夹互相访问 首先安装并配置软件samba sudo yum install samba samba-client vim /etc/samba/smb.conf 找到security这行并将#注释符号去掉改成 security = share #共享模式 添加如下代码: [share] comment = share path = /home/test #设置共享文件夹目录 browseable = yes guest ok = yes writable

  • Linux与Windows文件互传(VMWare)

    虚拟机无桌面的Linux 与 物理机Windows 文件互传有很多种方法,现在先说一种通过共享文件夹的形式,其他方法后续再补充 1.背景 1) 虚拟机系统:VMWare无桌面的Linux 2) 物理机系统:Win 7 3) 共享文件夹:物理机的D:\Virtual Machines\shared_vm3 要求:实现Linux 与 Windows 文件互传 注意:要通过共享文件夹实现linux与windows文件共享,必须安装 VMWare-tools ,该工具的安装可以借鉴:无桌面的linux安

随机推荐