2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目

游客1 游客组

说明:我们从VPS上传文件到OneDrive网盘的方法很多,包括Rclone挂载,OneIndex程序的上传功能,不过2个在上传的时候都还是有点BUG,前者会出现丢文件的情况,后者也会出现上传失败,都不是很理想,这里博主再介绍个OneDrive上传脚本,几乎不会出现上传问题,很好用,由大佬制作,并将其适用于Aria2的自动上传,这里说下具体操作。

更新

【2018.11.19】OneDrive上传脚本BUG已被萌咖大佬修复,修复了空格处理不当,导致部分带空格的文件夹上传失败,从而影响Aria2上传脚本。
【2018.10.30】
修复Aria2上传脚本BUG,包括修复了不能上传文件夹功能,修复了不能正确上传文件名中包含空格的项目。
【2018.10.29】
优化OneDrive网盘脚本。优化认证步骤。
独家分享萌咖大佬的Aria2自动上传脚本,判断更加细节,支持单文件、文件夹里的单文件、文件夹里的多文件及文件夹上传。超过15G文件停止上传(onedrive限制)。

说明

【2018.11.19】#目前脚本修复的差不多了,博主测试各种带空格的文件夹自动上传都没问题。#如果依然出现有些文件上传不了?出现这种情况的话,大概是文件虽然下载完成了,但一直卡在做种阶段,导致参数传不到自动上传脚本,从而文件夹也上传不了。
解决方法:在配置文件里加入seed-time=0参数(意思是停止做种),再重启Aria2即可。

方法

Github地址:https://github.com/0oVicero0/OneDrive" target="_blank" style="color: rgb(0, 166, 124); text-indent: 0px !important;" _href="https://github.com/0oVicero0/OneDrive">https://github.com/0oVicero0/OneDrive

脚本特性:脚本支持文件夹上传,支持获取文件的匿名直链,且只适用于OneDrive非个人版。

1、安装脚本
安装curl,用于访问API:

#Ubuntu和Debian系统apt-get install -y curl#Centos系统yum install curl -y

运行命令安装脚本:

#为了方便小白,本脚本内置萌咖大佬永久有效的应用参数,可以直接使用,如果你不放心可以自己获取参数,不过可能会遇到很多坑,建议直接使用脚本默认的参数wget --no-check-certificate -qO- "https://raw.githubusercontent.com/0oVicero0/OneDrive/master/OneDrive.sh" |bash

本脚本需要三个参数Client ID、Secret、Reply URL,均需要在/usr/local/etc/OneDrive/onedrive.cfg文件里修改,参数获取看下面,当然你也可以不用管,直接进行步骤3。

2、获取参数
先访问https://manage.windowsazure.com/" target="_blank" style="color: rgb(0, 166, 124); text-indent: 0px !important;" _href="https://manage.windowsazure.com/">Microsoft Azure Management Portal,然后点击左侧菜单栏中的Azure Active Directorg,选择应用注册,再点击页面上方的新应用程序注册。
VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第1张
输入名称如:OneDrive for Linux,应用程序类型选择Web应用/API,填入登陆URL:https://login.microsoftonline.com/" target="_blank" style="color: rgb(0, 166, 124); text-indent: 0px !important;" _href="https://login.microsoftonline.com/">https://login.microsoftonline.com/,再点击创建。
VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第2张
然后点击刚刚创建的应用程序,复制应用程序ID,即脚本需要的Client ID参数,再点击左上角的设置。
VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第3张
然后进行如下修改:
VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第4张

#点击右边的回复URL,将其修改为:https://onedrive.live.com/about/business/,即脚本所需要的Reply URL参数。#点击所需权限,点击Windows Azure Active Directory确认是否已选中Sign in and user profile,如果没有则选中并点击完成。#点击上方的添加,点击选择API,选中Office 365 SharePoint Online,并点击选择。在选择权限中选中Read user files 和Read and write user files,并点击选择。点击完成按钮,并关掉此小窗口。#点击密钥,填入密钥描述,如:OneDrive,选择年限1年,点击保存,再复制密匙,即脚本所需要的Secret参数。

不过这里说下密匙(Secret参数)填写的一个坑,由博主填平。就是当我们获取到带+号的密匙时候,我们需要使用编码符号,把+改成%2B,然后再填入脚本里,不然最后会出现Something went wrong, here is the API response的错误,导致验证失败。

3、运行账号认证程序
运行命令onedrive -a,将返回的网址复制到浏览器打开,再登陆你的OneDrive for Business账号,登陆成功后复制地址栏中的地址,粘贴到SSH客户端里,敲回车键即可。
VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第5张
如果返回以下字段:It seems like we have a refresh token, so we are ready to go,那就恭喜你,设置成功!

使用

1、使用命令

onedrive --help #####################################################################Usage: onedrive [OPTIONS] file1 [file2...]
       onedrive-d folder
 
Options:
  -d, --debug        Enable debug mode
  -a, --authorize    Run authorization process
  -f, --folder       Upload files into this remote folder
  -c, --creat        Creat remote folder."
                     Directory names are separated with a slash, e.g.
                     rootFolder/subFolder
                     Do NOT use a trailing slash!
  -h, --help         Show this help
  -r, --rename       Rename the files during upload
                     For each file you specify you MUST also specify
                     the remote filename as the subsequent parameter
                     Be especially careful with globbing!
  -s, --silent       Silent mode for use in crontab scripts.
                     Return only exit code.
  -ls,--list         Show the itmes in this directory.
  -l, --link         Show the file share link.      
#####################################################################

2、命令示范
如果我们要上传/root文件夹里面的moerats.txt,使用命令:

#此命令默认将moerats.txt文件上传到OneDrive根目录onedrive '/root/moerats.txt'#此命令会将/root文件夹和里面的子文件夹和文件一起上传onedrive-d '/root'

如果我们想直接查看OneDrive网盘目录的文件,使用命令:

#此命令只查看根目录文件onedrive -l#如果我们要查看根目录root文件夹里的文件onedrive -l /root

VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传 开源项目 第6张

Aria2自动上传

上传代码如下:

#!/bin/bashGID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640"RemoteDIR="";
LocalDIR="/home/www/download/";  #Aria2下载目录,记得最后面加上/if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fiif [[ "$FileNum" -le '0' ]]; then exit 0; fiif [[ "$#" != '3' ]]; then exit 0; fifunction LoadFile(){
  IFS_BAK=$IFS
  IFS=$'
'
  if [[ ! -d "$LocalDIR" ]]; then return; fi
  if [[ -e "$File" ]]; then
    if [[ $(dirname "$File") == $(readlink -f $LocalDIR) ]]; then
      ONEDRIVE="onedrive";    else
      ONEDRIVE="onedrive-d";    fi
    FileLoad="${File/#$LocalDIR}"
    while true
      do
        if [[ "$FileLoad" == '/' ]]; then return; fi
        echo "$FileLoad" |grep -q '/';        if [[ "$?" == "0" ]]; then
          FileLoad=$(dirname "$FileLoad");        else
          break;        fi;      done;    if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi
    if [[ -n "$RemoteDIR" ]]; then
      Option=" -f $RemoteDIR";    else
      Option="";    fi
    EXEC="$(command -v $ONEDRIVE)";    if [[ -z "$EXEC" ]]; then return; fi
    cd "$LocalDIR";    if [[ -e "$FileLoad" ]]; then
      ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1)      if [[ -z "$ItemSize" ]]; then return; fi
      if [[ "$ItemSize" -ge "$MaxSize" ]]; then
        echo -ne "33[33m$File 33[0mtoo large to spik.
";        return;      fi
      eval "${EXEC}${Option}" '"${FileLoad}"';      if [[ $? == '0' ]]; then
        rm -rf "$FileLoad";      fi
    fi
  fi
  IFS=$IFS_BAK}
LoadFile;


最后于 2019/03/06 18:11:39 被管理员编辑 ,原因:

TAGS OneDrive 开源项目 aria2

站长窝论坛版权声明 1、本帖标题:VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客1在站长窝论坛《交流综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (10)
返回
发新帖