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中用于计算指数的exp()方法
May 14 Python
Python合并字符串的3种方法
May 21 Python
简单学习Python time模块
Apr 29 Python
浅谈python中的占位符
Nov 09 Python
Python实现学校管理系统
Jan 11 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
对Python 语音识别框架详解
Dec 24 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
Python实现制作销售数据可视化看板详解
Nov 27 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/11/03 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
详解Django配置JWT认证方式
2020/05/09 Python
会计专业毕业生自荐信范文
2013/12/20 职场文书
《灯光》教学反思
2014/02/08 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
四年级评语大全
2014/04/21 职场文书
保密工作目标责任书
2014/07/28 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript
python字符串的多行输出的实例详解
2021/06/08 Python