限制bash脚本发出的cURL请求数量的速率

阿伦

我编写了bash脚本来计算文件的哈希值(当给定了文件路径时),并查询文件哈希值中的一个,以从API服务中获取该哈希值的结果(使用进行解析jq)。

#Scanner.sh

#!/bin/bash

for i in $(find $1 -type f);do
    md5_checksum=$(md5sum $i|cut -d' ' -f 1)
    sha1_checksum=$(sha1sum $i|cut -d' ' -f 1)
    sha256_checksum=$(sha256sum $i|cut -d' ' -f 1)
    json_result="$(curl --silent -H 'Authorization:Basic XXXX' 'https://XXXXX.com/api/databrowser/malware_presence/query/sha1/'$sha1_checksum'?format=json&extended=true'| jq -r '.rl.malware_presence.name,.rl.malware_presence.level' | awk -vORS=, '{print $1}' |sed 's/,$/\n/')"
    echo "$md5_checksum,$sha1_checksum,$sha256_checksum,$json_result"
done


#Result : 
c63a1576e4b416e6944a1c39dbdfc3b4,fd55dfdd9a432e34ce6c593cd09a48f457f7aab6,e2d1c1975c2406f60f1c0fe5255560c2cd06434e669933536a86296a2eb70020,Malware,5

现在,处理一个文件并获得一个文件哈希(10秒)的结果花费了太多时间。我如何每秒发送5个请求并更快地获得结果?

有什么建议吗?

劳伦特

您可以将代码放入函数中,然后在后台运行它,如下所示:

    runCurl() {
        md5_checksum=$(md5sum $1|cut -d' ' -f 1)
        sha1_checksum=$(sha1sum $1|cut -d' ' -f 1)
        sha256_checksum=$(sha256sum $1|cut -d' ' -f 1)
        json_result="$(curl --silent -H 'Authorization:Basic XXXX' 'https://XXXXX.com/api/databrowser/malware_presence/query/sha1/'$sha1_checksum'?format=json&extended=true'| jq -r '.rl.malware_presence.name,.rl.malware_presence.level' | awk -vORS=, '{print $1}' |sed 's/,$/\n/')"
        echo "$md5_checksum,$sha1_checksum,$sha256_checksum,$json_result"
    }

    for i in $(find $1 -type f);do
        runCurl $i &
    done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章