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下使用Psyco模块优化运行速度
Apr 05 Python
django中send_mail功能实现详解
Feb 06 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Windows下python3.6.4安装教程
Jul 31 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
python类中super() 的使用解析
Dec 19 Python
Python yield的用法实例分析
Mar 06 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 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/06 日漫
第二节 对象模型 [2]
2006/10/09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
laravel model 两表联查示例
2019/10/24 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python解释执行原理分析
2014/08/22 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
keras 多任务多loss实例
2020/06/22 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
《商鞅南门立木》教学反思
2014/02/16 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
社区食品安全实施方案
2014/03/28 职场文书
结对共建协议书
2014/08/20 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书