• Stars
    star
    980
  • Rank 46,701 (Top 1.0 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 10 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Shell Tools for Qiniu Cloud

qshell

LICENSE ut-check Go Report Card GitHub release codecov GoDoc

简介

qshell 是利用 七牛文档上公开的 API 实现的一个方便开发者测试和使用七牛 API 服务的命令行工具。该工具设计和开发的主要目的就是帮助开发者快速解决问题。目前该工具融合了七牛存储、CDN、以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,比如 b64decode,就是用来解码七牛的 URL 安全的 Base64 编码用的,所以这是一个面向开发者的工具,任何新的被认为适合加到该工具中的命令需求,都可以在 ISSUE列表 里面提出来,我们会尽快评估实现,以帮助大家更好地使用七牛服务。

下载

该工具使用 Go 语言编写而成,当然为了方便不熟悉 Go 或者急于使用工具来解决问题的开发者,我们提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,我们把这些二进制打包放到一个文件里面,请大家根据下面的说明各自选择合适的版本来使用。

更新日志 查看

支持平台 链接
Windows X86 下载
Windows amd64 下载
Windows arm 下载
Linux X86 下载
Linux amd64 下载
Linux arm 下载
Linux arm64 下载
Mac OS(10.12以上) amd64 下载
Mac OS arm64 下载

安装

该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。

Linux 和 Mac 平台

(1)权限 如果在 Linux 或者 Mac 系统上遇到 Permission Denied 的错误,请使用命令 chmod +x qshell 来为文件添加可执行权限。这里的 qshell 是上面文件重命名之后的简写。

(2)任何位置运行 对于 Linux 或者 Mac,如果希望能够在任何位置都可以执行,那么可以把 qshell 所在的目录加入到环境变量 $PATH 中去。假设 qshell 命令被解压到路径 /home/jemy/tools 目录下面,那么我们可以把如下的命令写入到你所使用的 bash 所对应的配置文件中,如果是 /bin/bash,那么就是 ~/.bashrc 文件,如果是 /bin/zsh,那么就是 ~/.zshrc 文件中。写入的内容为:

export PATH=$PATH:/home/jemy/tools

保存完毕之后,可以通过两种方式立即生效,其一为输入 source ~/.zshrc 或者 source ~/.bashrc 来使配置立即生效,或者完全关闭命令行,然后重新打开一个即可,接下来就可以在任何位置使用 qshell 命令了。

Windows平台

(1)闪退问题 本工具是一个命令行工具,在 Windows 下面请先打开命令行终端,然后输入工具名称执行,不要双击打开,否则会出现闪退现象。

(2)任何位置运行 如果你希望可以在任意目录下使用 qshell,请将 qshell 工具可执行文件所在目录添加到系统的环境变量中。由于 Windows 系统是图形界面,所以方便一点。假设 qshell.exe 命令被解压到路径 E:\jemy\tools 目录下面,那么我们把这个目录放到系统的环境变量 PATH 里面。

windows-qshell-path-settings.png

qshell 使用

  1. 添加密钥和账户名称

该工具有两类命令,一类需要鉴权,另一类不需要。

需要鉴权的命令都需要依赖七牛账号下的 AccessKey, SecretKeyName。所以这类命令运行之前,需要使用 account 命令来添加 AccessKeySecretKeyNameName 是用户可以自定义的字符串,用来唯一表示 AccessKey/SecretKey 账户,qshell 会对添加的每一个账户信息加密保存,可以使用自命令 user 进行切换,切换账户的时候,需要使用账户唯一标识 Name

$ qshell account <Your AccessKey> <Your SecretKey> <Your Name>

其中 name 表示该账号的名称, 如果 ak, sk, name 首字母是"-", 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项:

$ qshell account -- <Your AccessKey> <Your SecretKey> <Your Name>

可以连续使用 qshell account 添加账号 ak, sk, name 信息,qshell 会保存这些账号的信息, 可以使用 qshell user 命令列举账号信息,在各个账号之间切换, 删除账号等。 如果使用的 2.3.0 之前的版本 account 命令记录的账户信息,需要先使用 qshell user clean 清楚保存的账户信息,然后使用 qshell account 命令重新记录账户信息。

也可以使用 qshell 的配置文件添加 access_key和secret_key 信息,具体配置方法参考下面配置文件一节。

  1. 添加完账户后,就可以使用 qshell 上传,下载文件了

注:

  • v2.7.0 到 v2.9.2 不支持取消过期时间配置(expire 和 batchexpire 命令),如果过期天数配置为 0 会立即删除文件。 v2.10.0 开始,过期天数配置为 0 时为取消过期时间配置。

账户管理

qshell 支持多种方式的账户管理:

  1. 使用 qshell account 记录账户信息到本地的数据库
  2. 使用 qshell -C 配置文件的方式来设置账户信息
  3. 有的 qshell 子命令支持通过 --access-key, --secret-key 选项来设置 ak/sk 信息

那么有可能上面三种方式都提供了账户的信息,因此这三种方式有个优先级(从高到低): 3 > 2 > 1

也就是说,如果命令行提供了ak/sk那么使用命令行的信息;如果没有提供就使用配置文件中的信息,如果配置文件没有提供ak/sk, 那么会去本地数据库查找当前的用户。

使用 qshell user 子命令可以用来管理记录的多账户信息。

  1. qshell user ls 可以列举账户下所有的账户信息
  2. qshell user cu 可以用来切换账户
  3. qshell user cu 不携带 的话会切换到最近的上个账户;比如我在 A 账户做完操作后,使用 qshell user cu B 到了 B 账户,那么使用 qshell user cu 可以切回到 A 账户.
  4. qshell user lookup 查找用户是否在本地数据库中

是使用 qshell account 记录的时候的 名字,这个名字可以任意指定。

开启命令的自动补全

linux上,使用bash

在 centos 上,需要安装 bash-completion 包,默认该包没有安装

$ yum install bash-completion -y

给当前的 bash 加入自动补全, 运行命令

$ source <(qshell completion bash)

也可以把这个配置加入 bash 的启动文件中,这样到 bash 启动的时候,会自动加载 qshell 的补全配置:

$ echo "source <(qshell completion bash)" >> ~/.bashrc

Mac上,使用zsh 把如下代码加入 zsh 的启动文件中 ~/.zshrc, 然后 source ~/.zshrc

if [ $commands[qshell] ]; then
  source <(qshell completion zsh)
fi

命令选项

该工具还有一些有用的选项参数如下:

参数 描述
--doc 查看命令使用手册
-d 设置是否输出 DEBUG 日志,如果指定这个选项,则输出 DEBUG 级别的日志
-D 设置是否输出更加详细的 DEBUG 日志,如果指定这个选项,则输出详细的 DEBUG 级别的日志
-h 打印命令列表帮助信息,遇到参数忘记的情况下,可以使用该命令
-v 打印工具版本,反馈问题的时候,请提前告知工具对应版本号
-C qshell配置文件, 其配置格式请看下一节
-L 使用当前工作路径作为qshell的配置目录

配置文件

  1. 配置文件格式支持 json,用户可按需进行配置,配置文件分两层:
  • 全局配置:需要在家目录下创建文件名为 .qshell.json 的 json 文件,此配置对 qshell 中的所有账号生效(qshell 当前账号可以通过 qshell user cu 命令进行切换)。
  • 账号配置:在 qshell 用户目录下( ${家目录}/.qshell/users/${qshell 账号名}/ )创建文件名为 .qshell.json 的 json 文件,此配置仅对当前目录所属的 qshell 账号生效;账号配置优先级大于全局配置。
  1. 配置文件可以配置 use_https 和 host 相关信息:
  • use_https:qshell 请求是否使用 https。
  • host 配置:如 io host, up host, uc host, api host, rs host, rsf host;除 uc host 外,其他 host 要么不配置,要么全配置。
    • 公有云可以不配置 host;
    • 私有云:如果私有云支持 uc 查询 bucket 所在区域信息(/query api),那么仅配置 uc host 即可;如果不支持则必须配置所有 host。

注: qshell 某些命令的配置和文件的配置会有重合,此时优先级如下:

qshell 命令配置 > 账号配置 > 全局配置

通过 -C/-L 选项指定配置文件,实际是指定账号配置。

配置例子:

  1. 默认官方的列举空间的文件使用的是 rsf.qiniu.com 域名,如果因为某种原因,比如私有存储,需要替换使用 rs-test.qiniu.com 这个域名的话,那么只需要 在家目录下创建文件名字为 .qshell.json 的配置文件,文件内容为
{
    "hosts": {
        "rsf": "rs-test.qiniu.com"
    }
}

如果想要更改io host为io-test.qiniu.com 的话,只需要继续在上面的 hosts 中添加,如下:

{
    "hosts": {
        "rs": "rs-test.qiniu.com",
        "io": "io-test.qiniu.com"
    }
}

同理如果全部修改的话

{
    "use_https": false,
    "hosts": {
        "rs": "rs-test.qiniu.com",
        "io": "io-test.qiniu.com",
        "uc": "uc-test.qiniu.com",
        "api": "api-test.qiniu.com",
        "up": "up-test.qiniu.com",
        "rsf": "rsf-test.qiniu.com"
    }
}
  1. 如果不想使用 qshell account ak sk name 的方式记录密钥信息,也可以在配置文件中指定 ak, sk
{
   "access_key": "",
   "secret_key": ""
}

这样 qshell 会优先使用配置文件中配置的 ak/sk 信息,如果在这个配置文件中没有找到密钥信息,那么会去 qshell account 记录的本地数据库寻找.

命令列表

  • v2.7.0 及以上版本,命令列表及命令使用详细文档说明,支持直接使用 qshell 自助查看。
    • qshell -h,显示支持命令列表
    • qshell <子命令> --doc 查看详细命令使用说明
  • 查看工具版本号请使用命令 qshell -v

账号设置命令

命令 类别 描述 详细
account 账号 设置或显示当前用户的 AccessKeySecretKey 文档
user 账号 列举账号信息,在各个账号之间切换, 删除账号 文档

存储相关命令

命令 类别 描述 详细
mkbucket 创建 创建存储空间 文档
bucket 查看 查看存储空间信息 文档
batchdelete 删除 批量删除七牛空间中的文件,可以直接根据 listbucket 的结果来删除 文档
delete 删除 删除七牛空间中的一个文件 文档
batchchgm 修改 批量修改七牛空间中文件的MimeType 文档
chgm 修改 修改七牛空间中的一个文件的MimeType 文档
batchchtype 修改 批量修改七牛空间中的文件的存储类型 文档
chtype 修改 修改七牛空间中的一个文件的存储类型 文档
batchexpire 修改 批量修改七牛空间中的文件的生存时间 文档
expire 修改 修改七牛空间中的一个文件的生存时间 文档
batchcopy 拷贝 批量复制七牛空间中的文件到另一个空间 文档
copy 拷贝 复制七牛空间中的一个文件 文档
batchmove 移动 批量移动七牛空间中的文件到另一个空间 文档
move 移动 移动或重命名七牛空间中的一个文件 文档
batchrename 重命名 批量重命名七牛空间中的文件 文档
rename 重命名 重命名七牛空间中的文件 文档
batchrestorear 解冻 批量解冻七牛空间中的归档/深度归档存储类型文件 文档
restorear 解冻 解冻七牛空间中的归档/深度归档存储类型文件 文档
batchstat 查询 批量查询七牛空间中文件的基本信息 文档
stat 查询 查询七牛空间中一个文件的基本信息 文档
chlifecycle 修改 修改七牛空间中一个文件的生命周期 文档
batchchlifecycle 修改 批量修改七牛空间中文件的生命周期 文档
buckets 查询 获取当前账号下所有的空间名称 文档
domains 查询 获取指定空间的所有关联域名 文档
listbucket 列举 列举七牛空间里面的所有文件 文档
listbucket2 列举 列举七牛空间里面的所有文件 文档
batchforbidden 禁用 批量修改文件可访问状态 文档
forbidden 禁用 修改文件可访问状态 文档
fput 上传 以文件表单的方式上传一个文件 文档
rput 上传 以分片上传的方式上传一个文件 文档
qupload 上传 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(配置式) 文档
qupload2 上传 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(命令式) 文档
qdownload 下载 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步(配置式) 文档
qdownload2 下载 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步(命令式) 文档
get 下载 下载存储空间中的文件 文档
fetch 抓取 从Internet上抓取一个资源并存储到七牛空间中 文档
batchfetch 抓取 从Internet上抓取一个资源并存储到七牛空间中 文档
sync 抓取 从Internet上抓取一个资源并存储到七牛空间中,适合大文件的场合 文档
abfetch 抓取 异步抓取网络资源到七牛存储空间 文档
m3u8delete m3u8 根据流媒体播放列表文件删除七牛空间中的流媒体切片 文档
m3u8replace m3u8 修改流媒体播放列表文件中的切片引用域名 文档
batchsign 其他 批量根据资源的公开外链生成资源的私有外链 文档
dircache 其他 输出本地指定路径下所有的文件列表 文档
prefetch 其他 更新七牛空间中从源站镜像过来的文件 文档
privateurl 其他 生成私有空间资源的访问外链 文档

CDN 相关的命令

命令 描述 详细
cdnrefresh 批量刷新cdn的访问外链或目录 文档
cdnprefetch 批量预取cdn的访问外链 文档

工具类命令

命令 描述 详细
b64encode base64编码工具,可选是否使用UrlSafe方式,默认UrlSafe 文档
b64decode base64解码工具,可选是否使用UrlSafe方式,默认UrlSafe 文档
urlencode url编码工具 文档
urldecode url解码工具 文档
ts2d 将timestamp(单位秒)转为UTC+8:00中国日期,主要用来检查上传策略的deadline参数 文档
tms2d 将timestamp(单位毫秒)转为UTC+8:00中国日期 文档
tns2d 将timestamp(单位100纳秒)转为UTC+8:00中国日期 文档
d2ts 将日期转为timestamp(单位秒) 文档
ip 根据淘宝的公开API查询ip地址的地理位置 文档
unzip 解压zip文件,支持UTF-8编码和GBK编码 文档
reqid 七牛自定义头部X-Reqid解码工具 文档
qetag 根据七牛的qetag算法来计算文件的hash 文档
saveas 实时处理的saveas链接快捷生成工具 文档
func 封装 Go 语言的模板功能,使用此模板验证 qshell 回调函数逻辑 文档

音视频处理相关命令

命令 类别 描述 详细
pfop 提交 提交异步音视频处理请求 文档
prefop 查询 查询七牛数据处理的结果 文档

签名类命令

命令 类别 描述 详细
token 其他 计算upToken, Qbox token, Qiniu Token 文档

其他存储类工具

命令 类别 描述 详细
alilistbucket 列举 列举阿里OSS空间里面的所有文件 文档
awslist 列举 列举亚马逊的存储空间 文档
awsfetch 抓取 从亚马逊存储迁移数据到七牛存储 文档

问题反馈

如果您有任何问题,请写在ISSUE列表里面,我们会尽快回复您。

More Repositories

1

js-sdk

Qiniu Cloud JavaScript SDK
JavaScript
1,378
star
2

logkit

Very powerful server agent for collecting & sending logs & metrics with an easy-to-use web console.
Go
1,350
star
3

qmgo

Qmgo - The Go driver for MongoDB. It‘s based on official mongo-go-driver but easier to use like Mgo.
Go
1,297
star
4

php-sdk

Qiniu Resource (Cloud) Storage SDK for PHP
PHP
810
star
5

goc

A Comprehensive Coverage Testing System for The Go Programming Language
Go
796
star
6

httptest

Qiniu httptest utilities
Go
635
star
7

android-sdk

Qiniu Resource (Cloud) Storage SDK for Android
Java
626
star
8

nodejs-sdk

Qiniu Resource (Cloud) Storage SDK for Node.js
JavaScript
587
star
9

java-sdk

Qiniu Resource (Cloud) Storage SDK for Java
Java
549
star
10

python-sdk

Qiniu Resource (Cloud) Storage SDK for Python
Python
543
star
11

happy-dns-objc

dns library for objective c
Objective-C
491
star
12

iconv

Golang bindings to libiconv - Convert string to requested character encoding
Go
474
star
13

objc-sdk

Qiniu Resource (Cloud) Storage Objective-C SDK for Mac/iOS
Objective-C
436
star
14

arch

极客时间专栏《许式伟的架构课》相关的源代码:冯诺伊曼结构
Go
407
star
15

cerl

CERL2.0 - Erlang Model for C++
C++
376
star
16

gobook

The Go Programming Language
Go
362
star
17

py

Golang bindings to the CPython C-API
Go
319
star
18

qetag

qetag
Erlang
316
star
19

happy-dns-android

dns library for android
Java
293
star
20

QSunSync

七牛云文件同步图形化工具-Windows版本
C#
271
star
21

api.v7

Qiniu SDK for Golang (v7.x)
Go
264
star
22

csharp-sdk

Qiniu Resource (Cloud) Storage SDK for C#
C#
176
star
23

qpaint

极客时间专栏《许式伟的架构课》相关的源代码:QPaint (画图程序)
JavaScript
170
star
24

ruby-sdk

Qiniu Resource (Cloud) Storage SDK for Ruby
Ruby
164
star
25

kodo-browser

Kodo Browser 为七牛对象存储(Kodo)提供类似 Windows 资源管理器的功能。用户可以很方便的浏览文件,上传下载文件,支持断点续传等。
TypeScript
159
star
26

iOS-netdiag

Network Diagnosis for iOS
Objective-C
144
star
27

android-netdiag

Network Diagnosis for Android
Java
136
star
28

go-sdk

golang sdk
Go
136
star
29

webhook

Github.com webhook tools
Go
131
star
30

checkstyle

checkstyle for go
Go
128
star
31

legacy-ios-sdk

Qiniu Resource (Cloud) Storage SDK for iOS
Objective-C
103
star
32

QStreaming

A simplified, lightweight ETL pipeline framework for build stream/batch processing applications on top of Apache Spark
Scala
101
star
33

audio

Audio support for Go language.
Go
79
star
34

api.v6

Qiniu Resource (Cloud) Storage SDK for Golang (v6.x)
Go
68
star
35

c-sdk

Qiniu Resource (Cloud) Storage SDK for C/C++
C
63
star
36

x

Extension of Go standard library
Go
62
star
37

http

Extension module of golang http service
Go
61
star
38

qfetch

七牛资源批量抓取工具,根据指定URL列表抓取资源并存储到七牛云空间。
Go
59
star
39

qplayer-sdk

七牛播放器SDK支持点播,直播,首开快,延迟低,接口简单,易于使用。
Java
57
star
40

qiniutest

Qiniu httptest tool: qiniutest
Go
37
star
41

builder

TypeScript
34
star
42

text

Qiniu Text Processing Libraries for Go
Go
34
star
43

ip17mon-java

17mon ip库查询
Java
33
star
44

formstate-x

Manage state of form with ease.
TypeScript
33
star
45

developer.qiniu.com

developer center
JavaScript
32
star
46

mockhttp.v1

mockhttp is a unit test tool that allow you test web services without listening port
Go
29
star
47

form-upload

Form upload demo for Qiniu Cloud Storage
Python
28
star
48

happy-dns-java

dns query client for java
Java
27
star
49

qiniu-logging-plugin

轻松输出Java应用日志到七牛云大数据日志平台
Java
26
star
50

rust-sdk

Generic Qiniu Resource Storage SDK
Rust
26
star
51

dart-sdk

Qiniu Resource (Cloud) Storage SDK for Dart
Dart
23
star
52

sdkspec

Qiniu Resource (Cloud) Storage SDK Specification
23
star
53

pandora-go-sdk

Go
21
star
54

doxygen.io

http://doxygen.io/ - Doxygen as Service
Go
19
star
55

go_dep_search

golang dependency search tool
Go
19
star
56

typed-less-modules

🎁 Generate type definitions (.d.ts) for CSS Modules using LESS
TypeScript
18
star
57

QiniuLiveWX

七牛直播、播放、连麦最简微信小程序demo
JavaScript
17
star
58

mockhttp.v2

mockhttp is a unit test tool that allow you test web services without listening port
Go
16
star
59

qlive

七牛直播命令行工具
Go
15
star
60

objc-DownloadSDK

Qiniu DownloadSDK for iOS
Objective-C
14
star
61

dyn

Package for dynamic programming
Go
12
star
62

reviewbot

reviewbot - establish software engineering best practices and efficiently promote them within the organization.
Go
12
star
63

pandora-java-sdk

Pandora Java SDK 多种方式灵活接入Pandora 大数据平台
Java
11
star
64

goplus-dt

Data Technology base of the Go+ language
Go
9
star
65

pandora-docs-old

CSS
9
star
66

kirk

Go
9
star
67

c-sdk-for-windows

Qiniu Resource (Cloud) Storage Windows SDK for C/C++
C
8
star
68

qwebtesttool

七牛本地网络环境检测图形界面。
C#
8
star
69

pandora-docs

pandora 文档站
JavaScript
7
star
70

php5.3-sdk

七牛云存储 php5.3 sdk(已经过时,请使用 php-sdk)
PHP
7
star
71

version

Go
6
star
72

qfetch-m3u8

qfetch m3u8专用版本,可以把m3u8和其引用的ts文件直接抓取到七牛云存储空间中
Go
6
star
73

openacc

Open Account System
6
star
74

api

Qiniu Resource (Cloud) Storage SDK for Golang
6
star
75

pandora-js-sdk

浏览器端使用的Pandora 大数据客户端打点SDK
JavaScript
6
star
76

deprecated-js-sdk

Qiniu Resource Storage SDK for JavaScript(deprecated)
JavaScript
6
star
77

docs.qiniu.com

CSS
5
star
78

eslint-config

ESLint config for Qiniu
JavaScript
5
star
79

php5-sdk

七牛云存储 PHP SDK,兼容 PHP 5.3 以下版本(已经过时,请使用 php-sdk)
PHP
5
star
80

httpping

http ping for test service
Go
5
star
81

link-c-sdk

qnlinking
C
5
star
82

QNLiveKit_Android

qlive-sdk是七牛云推出的一款互动直播低代码解决方案sdk。只需几行代码快速接入互动连麦pk直播。
Kotlin
5
star
83

cpp-sdk

Qiniu Resource Storage C++ SDK
C
4
star
84

objc-netinfo

Get NetworkInfo
Objective-C
4
star
85

pandora-python-sdk

Python
4
star
86

apidoc

Qiniu Resource (Cloud) Storage API Documents
4
star
87

kubernetes-csi-driver

CSI Plugin for Kubernetes, Support Qiniu Cloud Storage.
Go
4
star
88

qiniulab

C#
3
star
89

stack-go

七牛云主机服务 Go SDK
Go
3
star
90

Android-Universal-Image-Loader-HappyDns

Android-Universal-Image-Loader and happy dns
Java
3
star
91

kodo-enterprise-image

Shell
3
star
92

pfop

七牛持久化数据处理请求服务工具
Go
3
star
93

pandora-python-sdk.v2

SDK for Pandora 2.0
Python
3
star
94

raven

TypeScript
3
star
95

api-specs

Qiniu API Specs by YAML
3
star
96

pandora-php-sdk

PHP
3
star
97

pandora-nodejs-sdk

JavaScript
3
star
98

wp-sdk

Windows Phone SDK for Qiniu Cloud Storage API[不再维护]
C#
3
star
99

pandora-c-sdk

C/C++ SDK for Pandora Platform
C
2
star
100

rust-download-sdk

七牛下载 Rust SDK,负责下载完整或部分七牛对象。该 SDK 主要服务于专有云场景,对于普通的公有云 / 私有云场景,建议使用 https://github.com/qiniu/rust-sdk
Rust
2
star