我正在嘗試讀取一個檔案,其中每一行都是一個 CVE ID。對于每個 CVE,我想進行 curl 以獲取其嚴重性,然后將結果存盤在一個新的 CSV 檔案中,格式為 cve-id,cve-severity。
下面是我正在使用的腳本,它可以正確讀取 ID,但不能正確呼叫 curl。當我運行它時,它只會為每個 curl 呼叫輸出空值。
我嘗試使用反引號而不是 $(),但結果相同。我在這里做錯了什么?
#!/bin/bash
filename="cves.csv"
while read line
do
echo "$line"
cve_result=$(curl -s "https://cve.circl.lu/api/cve/${line}")
echo "$cve_result"
done < $filename
還嘗試了這些變體,所有結果都相同(空):
cve_result=$(curl -s "https://cve.circl.lu/api/cve/${line}")
cve_result=`curl -s "https://cve.circl.lu/api/cve/${line}"`
cve_result=$(curl -s "https://cve.circl.lu/api/cve/$line")
cve_result=`curl -s "https://cve.circl.lu/api/cve/$line"`
cve_result=$(curl -s https://cve.circl.lu/api/cve/$line)
cve_result=`curl -s https://cve.circl.lu/api/cve/$line`
以下是 CSV 檔案的示例:
CVE-2014-0114
CVE-2014-9970
CVE-2015-1832
CVE-2015-2080
CVE-2015-7521
uj5u.com熱心網友回復:
您的代碼對我有用(即,每次curl呼叫都會提取一堆資料)。
如果我將我的 (linux) 檔案轉換為包含 windows/dos 行結尾 ( \r\n),則curl呼叫不會生成任何內容。
在這一點上,我猜你的輸入檔案有 windows/dos 行結尾(你可以通過運行來驗證,你應該在每行的末尾head -2 cves.csv | od -c看到序列)。\r \n
假設這是您的問題,那么您需要洗掉\r字符;幾個選項:
dos2unix cves.csv- 只需運行一次,因為這將更新檔案curl ... ${line//$'\r'/}"- 使用引數替換去除\r
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515333.html
標籤:重击壳卷曲
