首页 > 编程语言 >ruby 访问 ceph

ruby 访问 ceph

时间:2023-06-09 10:11:59浏览次数:35  
标签:end puts s3 bucket ceph 访问 put http ruby

#!/usr/bin/env ruby
# 通过restful API

require "base64"
require "openssl"
require "net/http"

PublicKey = "publicKey"
PrivateKey = "privateKey"

def gen_auth(http_method, bucket, filename, gmttime)
  sign = http_method + "\n" + "\n" + "\n" + gmttime + "\n" + "x-amz-acl:public-read" + "\n" + "/" + bucket + "/" + filename
  puts sign
  hmac = OpenSSL::HMAC.digest "sha1", PrivateKey, sign
  base64Str = Base64.encode64 hmac
  "AWS" + " " + PublicKey + ":" + base64Str
end

  Host = '36.135.133.17'
  Bucket = 'bk'
  BucketFile = 'rb3'
def put_file

  gmttime = Time.now.utc.strftime "%a, %d %b %Y %H:%M:%S GMT"
  auth = gen_auth "PUT", Bucket, BucketFile, gmttime
  headers = { 'Accept': '*/*', 'User-Agent': 'fuck', 'Content-Type': '', # for ceph Q version, Content-type header empty or no exist
              'Accept-Encoding': 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', "Host": Host, "Date": gmttime, "x-amz-acl": "public-read", "Authorization": auth, "Content-Length": '12' }
  http = Net::HTTP.new(Host, 32206)

  res = http.put "/#{Bucket}/#{BucketFile}", "xour_put_dat",headers
  puts "response code: #{res.code}, body: #{res.body}"
end

if $PROGRAM_NAME == __FILE__
  put_file
end
# 通过SDK 文中。
# ak/sk 和 url和bucket 替换成可正常访问的
require "aws-sdk-s3"

require "resolv-replace"

def run_demo
  Aws.config.update(
    endpoint: "http://36.134.132.17:3367",
    access_key_id: "ak",
    secret_access_key: "sk",
    force_path_style: true,
    region: "us-east-1",
  )
  s3_client = Aws::S3::Client.new
  # s3_client.create_bucket(bucket: 'my-new-bucket2')
  s3_client.list_buckets.buckets.each do |bucket|
    puts "#{bucket.name}\t#{bucket.creation_date}"
    begin
    objects = s3_client.list_objects(delimiter: "/", prefix: "", bucket: bucket.name)
      puts objects.common_prefixes
    rescue
      puts $!
    end
  end

#  resp = s3_client.put_object_acl(bucket: "bk", key: "load_snap_rec/srs1_0/1685049511.ts", acl: "public-read")
#  puts resp.to_h
end

run_demo if $PROGRAM_NAME == __FILE__

标签:end,puts,s3,bucket,ceph,访问,put,http,ruby
From: https://www.cnblogs.com/agnt/p/17468381.html

相关文章

  • java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal al
    一、报错及部署环境Java程序访问测试域名https方法正常,访问生产域名https域名报错,报错如下javax.net.ssl.SSLHandshakeException:Receivedfatalalert:protocol_version测试环境使用KubeSphereingress生产环境使用阿里云ACK服务的ingress配置二、问题原因客户端......
  • GitHub无法访问的解决方案
    1.情景展示 2.具体分析GitHub网站无法访问或者网页加载慢,都是网络问题造成的。我们访问某个网站,其实,是操作系统通过域名解析器(DNS解析器)解析域名拿到对应的IP地址,然后再去访问。 3.解决方案方案一:修改hosts文件hosts文件的作用是:配置在这里的域名,将不会走域名解析器,......
  • 外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统
    外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。//子系统中的组件classCPU{pu......
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问
    代理模式是一种常见的设计模式,它允许一个对象在不改变其行为的情况下,控制对另一个对象的访问。代理模式通常用于保护敏感对象,或者为了延迟实际对象的加载。在Java中,代理模式有两种形式:静态代理和动态代理。静态代理需要手动编写代理类,而动态代理则可以在运行时自动生成代理类。......
  • 2、客户端访问ZooKeeper--命令行客户端和图形化客户端访问
    客户端访问命令行客户端访问ZooKeeper安装zookeeper的bin里面,有命令行工具[root@ubuntu2004~]#ls/usr/local/zookeeper/bin/zkCli.sh/usr/local/zookeeper/bin/zkCli.sh里面存的脚本是由java运行起来的#可连接至zookeeper集群中的任意一台zookeeper节点进行以下操作,zkCli......
  • 部署springboot项目到linux服务器,端口访问不了
    部署springboot项目到服务器,端口访问不了看一看之前有没有端口已经占用了ps-ef|grepjava 例如,8000,有项目已经在后台了(例如nohup设置springboot项目系统后台不挂断地运行命令)如果你的新项目的端口是8020或者8030也是不能使用的(这里是我遇到的问题)这时候关......
  • apache2.4禁止IP访问
    如果在apache2.4想禁止使用ip访问,只能通过域名访问https是改这个配置文件conf/extra/httpd-ssl.confhttp是改这个conf/extra/httpd-vhosts.conf将下面这个配置的111.111.111.111修改为你对应的服务器IP复制到配置文件最尾部重启apache服务即可http的根据需要修改端口<Vir......
  • nginx访问日志
    访客日志处理日志模块的官网教程https://nginx.org/en/docs/http/ngx_http_log_module.html创建nginx访问日志日志对于程序员很重要,可用于问题排错,记录程序运行状态,一个好的日志能够给与精确的问题定位。Nginx日志功能需要在nginx.conf中打开相关指令log_format,设置日志格式,......
  • Linux 安装Kafka及远程访问
    下载wget 官网tar-zxvfkafka_2.13-2.5.0.tgz启动kafka和zookeeper编写一个sh文件启动/opt/kafka_2.13-3.0.0/bin/zookeeper-server-start.sh/opt/kafka_2.13-3.0.0/config/zookeeper.properties&sleep5/opt/kafka_2.13-3.0.0/bin/kafka-server-start.sh/opt/kafka_......
  • 使用snap安装Redis并配置外网访问和访问密码
    使用snap安装Redis并配置外网访问和访问密码Redis是一个流行的开源内存数据库,用于处理数据存储和缓存。在本文中,我们将介绍如何使用snap安装Redis,并通过Redis的CLI(命令行界面)来配置外网访问和访问密码。snap是一种用于在Linux系统上安装软件的包管理器,它提供了简单且可靠的软件......