signature=64c2360954fd1970819616e99bb39516,签名常见问题

#! /us/bin/envy python

#Author: hanli

#Update: 2018-09-29

from optparse import OptionParser

import urllib, urllib2

import datetime

import base64

import hmac

import sha

import os

import sys

import time

class Main():

# Initial input parse

def __init__(self,options):

self.ak = options.ak

self.sk = options.sk

self.ed = options.ed

self.bk = options.bk

self.fi = options.fi

self.oj = options.objects

self.left = '\033[1;31;40m'

self.right = '\033[0m'

self.types = "application/x-www-form-urlencoded"

self.url = 'http://{0}.{1}/{2}'.format(self.bk,self.ed,self.oj)

# Check client input parse

def CheckParse(self):

if (self.ak and self.sk and self.ed and self.bk and self.oj and self.fi) != None:

if str(self.ak and self.sk and self.ed and self.bk and self.oj and self.fi):

self.PutObject()

else:

self.ConsoleLog("error","Input parameters cannot be empty")

# GET local GMT time

def GetGMT(self):

SRM = datetime.datetime.utcnow()

GMT = SRM.strftime('%a, %d %b %Y %H:%M:%S GMT')

return GMT

# GET Signature

def GetSignature(self):

mac = hmac.new("{0}".format(self.sk),"PUT\n\n{0}\n{1}\n/{2}/{3}".format(self.types,self.GetGMT(),self.bk,self.oj), sha)

Signature = base64.b64encode(mac.digest())

return Signature

# PutObject

def PutObject(self):

try:

with open(self.fi) as fd:

files = fd.read()

except Exception as e:

self.ConsoleLog("error",e)

try:

request = urllib2.Request(self.url, files)

request.add_header('Host','{0}.{1}'.format(self.bk,self.ed))

request.add_header('Date','{0}'.format(self.GetGMT()))

request.add_header('Authorization','OSS {0}:{1}'.format(self.ak,self.GetSignature()))

request.get_method = lambda:'PUT'

response = urllib2.urlopen(request,timeout=10)

fd.close()

self.ConsoleLog(response.code,response.headers)

except Exception,e:

self.ConsoleLog("error",e)

# output error log

def ConsoleLog(self,level=None,mess=None):

if level == "error":

sys.exit('{0}[ERROR:]{1}{2}'.format(self.left,self.right,mess))

else:

sys.exit('\nHTTP/1.1 {0} OK\n{1}'.format(level,mess))

if __name__ == "__main__":

parser = OptionParser()

parser.add_option("-i",dest="ak",help="Must fill in Accesskey")

parser.add_option("-k",dest="sk",help="Must fill in AccessKeySecrety")

parser.add_option("-e",dest="ed",help="Must fill in endpoint")

parser.add_option("-b",dest="bk",help="Must fill in bucket")

parser.add_option("-o",dest="objects",help="File name uploaded to oss")

parser.add_option("-f",dest="fi",help="Must fill localfile path")

(options, args) = parser.parse_args()

handler = Main(options)

handler.CheckParse()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值