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异步回调机制实现和使用方法
Nov 26 Python
Python基础之函数用法实例详解
Sep 10 Python
python optparse模块使用实例
Apr 09 Python
Python编写电话薄实现增删改查功能
May 07 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
python3个性签名设计实现代码
Jun 19 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
python修改字典键(key)的方法
Aug 05 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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操作excel文件 基于phpexcel
2010/07/02 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
Python 元类使用说明
2009/12/18 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python实现排序算法解析
2018/09/08 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
python实现按关键字筛选日志文件
2019/12/24 Python
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
金讯Java笔试题目
2013/06/18 面试题
英文版银行求职信
2013/10/09 职场文书
档案管理员岗位职责
2013/12/01 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS