В настоящее время я пытаюсь получить информацию о моих учетных записях хостинга файлов. Поскольку я храню много своих резервных копий на разных учетных записях. Я использую megatools для запроса информации об учетной записи, которую я затем анализирую в массив. Затем массив выравнивается, используя \ n для необработанного ввода.
Сценарий работает замечательно, но он не создает допустимый JSON. Я не уверен, что мне не хватает, чтобы сделать его действительным. Заранее спасибо за помощь.
Сценарий
function join_by { local IFS="$1"; shift; echo "$*"; }
while IFS='' read -r line || [[ -n "$line" ]]; do
IFS=, read -ra array <<< "$line"
nickname=${array[0]}
user=${array[1]}
pass=${array[2]}
data=($(megadf --username=$user --password=$pass))
data[${#data[@]}]+="$nickname"
stats=$(join_by $'\n' ${data[@]})
echo $stats | jq --slurp --raw-input 'split("\n")[:-1] | map([ split(" ")[] ]) | map({
nick: .[6],
total: .[1],
used: .[3],
free: .[5]
})' >> /opt/stats/json/accounts.json
done < .accounts
вывод json
[
{
"nick": "alt",
"total": "53687091200",
"used": "7885201595",
"free": "45801889605"
}
]
[
{
"nick": "main",
"total": "214748364800",
"used": "87240914483",
"free": "127507450317"
}
]
Что должно быть
[
{
"nick": "alt",
"total": "53687091200",
"used": "7885201595",
"free": "45801889605"
},
{
"nick": "main",
"total": "214748364800",
"used": "87240914483",
"free": "127507450317"
}
]
.accounts
nickname,user,pass