第2章 cmd命令基础:传输命令(bitsadmin)

Hi~ 我是李小咖,主要从事网络安全技术开发和研究。

本文取自《李小咖·网安技术库》,欢迎一起交流学习🫡:https://imbyter.com


BITS(Background Intelligent Transfer Service)是Windows中用于管理文件传输的一种服务,而bitsadmin命令则是用于管理BITS的命令行工具,能够实现文件的下载传输。


一、BITS服务是什么

BITS (后台智能传送服务) 是一个Windows服务,它可以在前台或后台异步传输文件,为保证其他网络应用程序获得响应而调整传输速度,并在重新启动计算机或重新建立网络连接之后自动恢复文件传输。

在后台所对应的系统服务名为:BITS(显示名为“Background Intelligent Transfer Service”):


二、bitsadmin是什么

Bitsadmin是一个系统自带的命令行工具(C:\Windows\System32\bitsadmin.exe),用于创建、下载或上载文件,以及监视其进度。

因为bitsadmin是一个独立的可执行程序,所以可以在cmd中执行,也可以单独运行这个程序。不过一般为了便于查看bitsadmin执行后的输出结果,所以大多会在cmd中执行。


1. 查看BITS任务

我们可以使用bitsadmin命令来查看当前系统中所有BITS任务的信息。例如,以下命令会列出所有BITS任务的名称、状态、文件大小等信息:

bitsadmin /list /allusers

其中,/allusers参数表示列出所有用户的BITS任务信息。


2. 文件下载

我们可以使用bitsadmin命令来创建一个新的BITS任务,来将web上的图片下载到本地。

E:\>bitsadmin /transfer aaa /download https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png E:\1.png

如上命令,表示创建了一个图片下载的BITS任务,将https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png下载到本地E:\1.png

  • /transfer:表示数据传输作业,名称为aaa;

  • /download:表示类型是下载,后跟web文件路径,以及存放到本地的路径。

如上命令执行时,过程如下:

  • DISPLAY:显示名(即作业名);

  • TYPE:类型(下载);

  • STATE:当前的状态(下载中);

  • PRIORITY:作业的优先级(正常);

  • FILES:目标文件列表;

  • BYTES:传输的进度;

  • TRANSFER RATE:传输速度;

  • TIME REMAINING:剩余时间;

3. 高速下载

  1.   一般使用bitsadmin进行文件下载时,如果不刻意指定优先级,则默认会以中等优先级(即priority参数为normal)进行下载。此时下载任务会根据当前系统数据传输的情况,智能的调配自己传输的速度(在不影响其他进程数据传输速度的情况下)。

      优先级参数/priority有以下四个级别:
    • FOREGROUND

    • HIGH

    • NORMAL

    • LOW

      其中low是最低级别,normal是正常级别,high是高级别,foreground是前台级别(即全速状态)。

      我们可以使用/priority foreground来设置高速下载:

    E:\>bitsadmin /transfer aaa /priority foreground /download https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png E:\1.png

此时我们会发现,速度明显高于之前正常级别下载的时候。

4. 直接下载,不显示进度

如果不关注下载的进度信息,可以添加/rawreturn参数:

E:\>bitsadmin /rawreturn /transfer aaa /download https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png E:\1.png

5. 创建后台下载作业

  创建任务

  使用bitsadmin /create创建后台下载作业:

# 创建一个名为aaa的作业(作业名不能重复创建)
E:\>bitsadmin /create aaa

  创建成功后,会有类似如下的输出,表示创建成功:

  

  添加任务

  作业创建成功后,当前作业是空的,里面还没有任务,需要用/addfile添加新任务:

# /download是缺省参数,可以不写
E:\>bitsadmin /addfile aaa https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png E:\aaa.png

  执行后效果:

  

注意:相较于之前使用 /transfer 的前台单文件下载,后台下载方式可以添加多个文件同时下载,继续添加使用/addfile参数。

# 继续添加其他下载文件
E:\>bitsadmin/addfileaaahttps://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641014906a21b6a39f0896d7.png E:\bbb.png

E:\>bitsadmin/addfileaaahttps://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/64081e68c9e8438484c96d19.png E:\ccc.png

  查看任务

  使用/list参数来查看当前作业信息:

E:\>bitsadmin /list

  

  执行任务

  使用/resume(后跟作业名)来将作业执行起来:

E:\>bitsadmin /resume aaa

  查看下载进度

  执行后,整个下载的过程会在后台进行,前台无进度界面。可以通过/info(后跟作业名)来查看当前下载进度:

E:\>bitsadmin /info aaa

  

还可以通过/verbose来查看更详细的进度情况:

E:\>bitsadmin /info aaa /verbose

  

如果在传输过程中我们发现速度很慢,可以使用/setpriority选项重新设定将指定的作业优先级,这样能即时改变作业的传输速度:

# /setpriority 后先跟作业名,再跟优先级
E:\>bitsadmin /setpriority aaa foreground

  

  完成下载

  使用后台下载的方式,需要我们先使用/info查看任务传输,在传输完成后,要使用/complete来手动将作业设置为“已完成”状态,这样才能将下载好的文件恢复出来:

# /setpriority 后先跟作业名,再跟优先级
E:\>bitsadmin /setpriority aaa foreground

  

在我们未使用/complete设置作业“已完成”时,被下载的文件会在目标目录一直以临时文件的形式存在:

  

直到使用/complete设置“已完成”后,才会恢复显示:

  

  清除作业

  对于使用bitsadmin /complete设置为“完成”状态的任务,会被自动清除。对于未执行下载或下载失败的任务,可以使用/cancel来手动清除:

# /cancel 后跟作业名
E:\>bitsadmin /cancel aaa

  总结一下,后台下载方式:

  流程步骤:

  创建作业(/create)-->添加文件(/addfile)-->开始下载(/resume)-->查看进度(/info)-->完成下载(/complete)


  三、注意事项

  使用bitsadmin进行文件下载时,需要被下载的文件所在的web服务器支持该文件的range请求头响应,否则无法下载。可以使用curl命令来测试目标web服务器是否支持range响应:

# -H表示添加额外请求头
# Range: bytes=0-10,表示请求的是0-10个字节的内容
E:\>curl -H "Range: bytes=0-10" https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641014906a21b6a39f0896d7.png

  备注:实测未能实现使用bitsadmin进行文件上传的功能,有实测成功的同学可以实测后评论区 show 出来🫰👍

  参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值