网上都是aria2下载自动上传onedrive的脚本,苦于搜不到transmission的相关脚本

通过一位大佬的根据剩余空间自动清理transmission种子和数据的脚本,突发灵感

照猫画虎,初次接触shell脚本,看不懂的一通乱查,经过多次测试,终于成功了,特分享一下,当然可能 有一些不知道的bug...

当然估计会有更好的方法...

trans_autoupload.sh

1 #! /bin/bash2

3 # transmission远程 登陆用户名4 USERNAME="***"

5

6 # transmission 远程 登陆密码7 PASSWORD="***"

8

9 # transmission download 目录10 DLDIR="/var/lib/transmission/Downloads"

11 # 上传到 onedrive 的目录12 RemoteDIR="Study/Bay"

13 # 日志文件输出目录14 LOG_PATH="/root/log/trans_autoupload.log"

15 # 日期格式化16 DATA_TIME=$(date +"%y-%m-%d %H:%M:%S")17

18 #====================================================================

19 functionupFile(){20 NAME=$@ #因为参数可能带空格,需要看成一个用$@,否则只能取空格前面的字符串21 if [[ -e "$DLDIR/$NAME" ]]; then#判断文件是否存在22 #判断文件所在目录绝对路径(dirname)是否等于 $DLDIR23 if [[ $(dirname "$DLDIR/$NAME") == $(readlink -f $DLDIR) ]]; then

24 #等于的话,执行的命令25 echo "$NAME 是文件"

26         #判断是否存在上传成功的标记文件27 if [[ -e "$DLDIR/$NAME.isupload" ]];then

28 echo "已上传"

29 return30 fi

31 echo "还未上传..上传中.."

32 #echo $RemoteDIR "---" \""$DLDIR/$NAME"\"

33 eval "onedrive -f $RemoteDIR" \'"$DLDIR/$NAME"\' #这里使用 eval 后面指令,注意后面地址/文件名可能有空格,$DLDIR/$NAME需要加上' ',用到了 转义 \' \'

34 if [[ $? == '0' ]]; then

35 cd "$DLDIR"

36 touch "$NAME.isupload"#上传成功后创建标记文件,供下次脚本运行判断37 echo $DATA_TIME $NAME "上传成功" >> $LOG_PATH 2>&1

38 fi

39 else

40 Folder=${NAME%%/*}41 echo "$Folder 是文件夹"42 if [[ -e "$DLDIR/$Folder.isupload" ]];then43 echo "已上传"44 return45 fi46 echo "还未上传...上传中..."47 #echo \"$DLDIR/$Folder\"48 eval "onedrive-d -f $RemoteDIR" \'"$DLDIR/$Folder"\'49 if [[ $? == '0' ]]; then50 cd "$DLDIR"51 touch "$Folder.isupload";52 echo $DATA_TIME $Folder "上传成功" >> $LOG_PATH 2>&153 fi54 fi55 fi56 }57 function Start(){58 for i in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep 100% | grep Done | awk '{print $1}' | grep -v ID`59 do60 echo $DATA_TIME "$i"61 transmission-remote --auth $USERNAME:$PASSWORD -t $i -f |grep -v '#'|grep 100% | awk '{for (i=2; i<7; i++){$i=""} print $0}'|while read ID NAME62 do63 #echo $DLDIR/$NAME64 upFile $NAME #把获取的$NAME传给 upFile函数65 break;66 done67 done68 }69 Start

其中:

transmission-remote --auth $USERNAME:$PASSWORD -l | grep 100% | grep Done | awk '{print $1}' | grep -v ID

transmission-remote --auth $USERNAME:$PASSWORD -l 是获取transmission的所有种子列表,如下:列表

ID Done Have ETA Up Down Ratio Status Name

67 100% 1.05 GB Done 0.0 0.0 4.9 Idle 1080.mp4

68

69

Sum: 22.43 GB 4350.0 830.0

| grep 100% | grep Done | 筛选出进度100%的的那一行

|grep -v ID   不选中ID的行 ,实际上面的命令就以及排除了ID的那一行和sum那一行| awk '{print $1}'   以空格为分隔,分为N列,$1是取第一列

最后就获取了所有完成的种子的  ID

transmission-remote --auth $USERNAME:$PASSWORD -t $i -f |grep -v '#'|grep 100% | awk '{for (i=2; i<7; i++){$i=""} print $0}'|while read ID NAME

-t 种子ID -f  获取的是次ID种子的所有文件信息,如下

liu lang di qiu.mp4 (1 files):

# Done Priority Get Size Name

0: 100% Normal Yes 2.46 GB liu lang di qiu.mp4

ps:种子文件可能是文件夹包含多个文件的,里面的文件就不止一个了,Name也变成了 文件夹/文件名的格式

同理筛选  出只有信息的那一行,(其实一个grep 100%就搞定了),

|awk 命令的意思是,从第2列到第6列(还是以空格分1是0: 2是100% 3是Normal 4是Yes 5是2.46  6是GB   7是liu)赋值为空,然后$0是取所有,

发现awk会把含空格的文件名分开来,这里用for in的话文件名就获取不到了,这里找解决方案找了很久,终于发现用

|while read ID NAME  就解决了  同样以空格分隔,第一个空格前 读到ID变量,后面的都读到NAME变量里面,这样就获取了所有的文件名

下面就是用 onedrive 文件  和 onedrive-d 文件夹 命令 上传就行了

自动从mysql下载到onedrive_centos7 自动上传 transmission 下载完成的文件 到 onedrive脚本...相关推荐

  1. Linux自动备份MySQL数据库脚本代码

    Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...

  2. 手动备份MySQL数据库_8种手动和自动备份MySQL数据库的方法

    作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的.本文就为大家介绍几种适用于企业的数据备份方法. 使用MySQLDump进行MySQL备份 mysqldu ...

  3. Elasticsearch安装及自动同步mysql数据库数据

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch安装及自动同步mysql数据库数据 1           环境: CentOS  6.4  x64 ...

  4. MySQL数据库5.5.25a版本下载与安装

    文章目录 一.MySQL数据库5.5.25a版本下载 1.MySQL数据库下载地址 1.MySQL数据库其他版本下载 二.MySQL数据库安装 1.打开下载好的MySQL数据库安装包 2.点击Next ...

  5. mysql反删除恢复软件下载_MySQL Recovery(MySQL恢复软件)下载 v4.1官方版-下载啦

    MySQL Recovery是一个强大好用的mysql数据库修复工具,与其他类似的程序相比,该软件具有更多更好的恢复功能,帮助用户更好地恢复MySQL数据,恢复的数据库有多种导出模式,可以同时打开多个 ...

  6. FTP服务器文件自动上传、下载(bat)

    FTP服务器文件自动上传.下载(bat) 1.FTP自动上传 #上传脚本bat,将攻击机的文件上传到靶机,并清理痕迹 @echo Off echo open 192.168.203.133>&g ...

  7. python数据字典ppt_Python3自动生成MySQL数据字典的markdown文本的实现

    为啥要写这个脚本 五一前的准备下班的时候,看到同事为了做数据库的某个表的数据字典,在做一个复杂的人工操作,就是一个字段一个字段的纯手撸,那速度可想而知是多么的折磨和锻炼人的意志和耐心,反正就是很耗时又 ...

  8. mysql数据万能导入工具下载_mysql数据导入工具下载 - 数据导入工具(EMS Data Export for MySQL) v3.7.0多语特别版下载 - 第九软件网...

    EMS Data Export for MySQL多语特别版是一款交叉平台的数据库导入工具,可以快速地从MS Excel 97-2007, MS Access, DBF, XML, TXT, CSV, ...

  9. mysql 多久备份一次_教你如何通过一次单击自动备份mysql数据库

    备份mysql一直是很多朋友的头疼,特别是根据时间段备份,今天我将教你如何每天备份一个mysql数据库文件. 1 首先创建一个批处理文件,将以下代码保存为.bat文件,文件名最好是英文.注意以下路径, ...

  10. mysql删除七天_自动备份mysql并删除7天前备份

    1.远程连接服务器 2.下载备份脚本文件 3.编辑脚本文件 windows: 用记事本打开bkupmysql.bat set dbuser=root                        #设 ...

最新文章

  1. JAVA条件表达式的陷阱
  2. 如何停止一个正在运行的线程?
  3. Spring Security——自定义认证错误提示信息及自适应返回格式解决方案
  4. uva 816(经典bfs例子)
  5. java的abstract的意思_java – spring中的abstract =“true”是什么意思?
  6. 计算机系统基础:总线结构知识笔记
  7. Codeforces - 102222C - Caesar Cipher
  8. 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是( )...
  9. 苏炳添成为小米代言人
  10. mxnet导入图像数据
  11. 中国工业行业分类英文翻译
  12. 驾照科二科三训练总结
  13. 2017云计算与IT风向标—— 移动、转型、整合
  14. hash+跳表,玩转Redis有序集合
  15. HTTP请求的TCP瓶颈分析
  16. 设计模式之装饰器(第一篇)
  17. 【前端】javascript实现导航栏筋斗云效果特效
  18. 假设某台式计算机的内存容量为256,计算机二级试题与答案
  19. c语言小写A对应数字,C语言ascII与数字转化的问题,值得新手看看
  20. 2018-05-18 docker supervisord进程管家

热门文章

  1. python-jieba库
  2. 二阶系统的时间响应及动态性能(时域分析)
  3. 二阶系统根轨matlab,自控-二阶系统Matlab仿真.doc
  4. H3C/ 华为 路由交换基础知识官方 PPT
  5. 阿里云物联网平台mqtt测试工具
  6. day19三大神器和scv文件
  7. 取整的计算机语言符号,word取整符号
  8. android 毕业设计论文总结报告,android课程设计报告.doc
  9. sql 注射 nbsi分析
  10. 一种雷达和电子海图图像叠加方法