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通过字典dict判断指定键值是否存在的方法
Mar 21 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
python实现抠图给证件照换背景源码
Aug 20 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
python如何判断IP地址合法性
Apr 05 Python
Python importlib动态导入模块实现代码
Apr 16 Python
python3代码中实现加法重载的实例
Dec 03 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python合并pdf文件的工具
Jul 01 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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中使用gettext来支持多语言的方法
2011/05/02 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
详解python的四种内置数据结构
2019/03/19 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
爱游人:Travelliker
2017/09/05 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
西部世纪面试题
2014/12/05 面试题
给排水工程师岗位职责
2013/11/21 职场文书
企业宗旨标语
2014/06/10 职场文书
临床专业自荐信
2014/06/22 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
Python 内置函数速查表一览
2021/06/02 Python