Вы можете попробовать редактор файловой системы, например debugfs(8)
. Это тонкая, детальная работа. Но я очень сомневаюсь, что вы сможете это исправить, если fsck(8)
не может/не хочет исправить проблему, то она, вероятно, очень серьезная (или, по крайней мере, запредельная).
Сделайте резервную копию содержимого файловой системы. Затем вы можете получить его копию в файл с помощью dd(1)
и повозиться с копией. Если вам удастся все исправить, воспроизведите команды на оригинале.
Или просто сделайте резервную копию и переформатируйте.
Проверьте носитель, если он хоть немного сомнительный, выбросьте его. Данные, которые вы храните на нем, гораздо ценнее.
Можно было обойтись и обычным башом:
json=$(
sh MACscript.sh | {
pairs=()
while read interface; read ether; do
pairs+=("\"$interface\":\"$ether\"")
done
IFS=,
echo "{${pairs[*]}}"
}
)
echo "$json"
выходы
{"eth0":"11:1d:11:11:11:1d","lo":"00:00:00:00:00:00"}
вы можете использовать различные способы получения значений json. bash, python, perl,.....
Вы можете найти полезные сообщения об этом на этом веб-сайте. однако вот пример:
arr1=($( ls /sys/class/net))
arr2=($( cat /sys/class/net/*/address ))
vars1=(${arr1[@]})
vars2=(${arr2[@]})
len=${#arr1[@]}
printf "{\n"
printf "\t"'"data"'":[\n"
for (( i=0; i<len; i+=1 ))
do
printf "\t{ "'"{#interface}"'":\"${vars1[i]}\",\t"'"{#address}"'":\"${vars2[i]}\"
}"
if [ $i -lt $((len-1)) ] ; then
printf ",\n"
fi
done
printf "\n"
printf "\t]\n"
printf "}\n"
echo
выход:
{
"data":[
{ "{#interface}":"eth0", "{#address}":"00:50:56:a9:c0:81" },
{ "{#interface}":"lo", "{#address}":"00:00:00:00:00:00" }
]
}
и вы можете использовать этот веб-сайт для проверки вашего JSON:https://codebeautify.org/online-json-editor