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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
django settings.py 配置文件及介绍
Jul 15 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
python getopt模块使用实例解析
Dec 18 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
php中计算时间差的几种方法
2009/12/31 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
python服务器与android客户端socket通信实例
2014/11/12 Python
Python列表计数及插入实例
2014/12/17 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python3 logging日志封装实例
2020/04/08 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
求职信的最佳写作思路
2014/02/01 职场文书
检讨书模板
2015/01/29 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
校本培训个人总结
2015/02/28 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python