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 相关文章推荐
sublime text 3配置使用python操作方法
Jun 11 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python写入并获取剪切板内容的实例
May 31 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
python爬取指定微信公众号文章
Dec 20 Python
python实现网站微信登录的示例代码
Sep 18 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
python常用数据重复项处理方法
Nov 22 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 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 Try Catch异常测试
2009/03/01 PHP
php基础学习之变量的使用
2011/06/09 PHP
thinkphp缓存技术详解
2014/12/09 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
js实现五星评价功能
2017/03/08 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
毕业生就业推荐表导师评语
2014/12/31 职场文书
学校百日安全活动总结
2015/05/07 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏