mirror of
https://github.com/SkimrMe/funky_tv
synced 2026-01-29 19:15:23 +00:00
77 lines
2.3 KiB
Bash
77 lines
2.3 KiB
Bash
#!/bin/sh
|
|
|
|
if which grub-editenv-bk >/dev/null 2>&1; then
|
|
grub_editenv_cmd=grub-editenv-bk
|
|
elif which grub2-editenv-bk >/dev/null 2>&1; then
|
|
grub_editenv_cmd=grub2-editenv-bk
|
|
else
|
|
grub_editenv_cmd=grub-editenv-bk
|
|
fi
|
|
|
|
curdate=$(date)
|
|
if [ -e /dev/mapper/ventoy -a -d /etc/vtoyboot/editenv ]; then
|
|
$grub_editenv_cmd $* > /etc/vtoyboot/editenv/tmp_stdout 2>/etc/vtoyboot/editenv/tmp_stderr
|
|
code=$?
|
|
if [ $code -eq 0 ]; then
|
|
cat /etc/vtoyboot/editenv/tmp_stdout
|
|
exit 0
|
|
fi
|
|
|
|
newpara=$(echo $* | sed "s#/dev/mapper/ventoy#/dev/sda#")
|
|
echo "[$curdate] oldpara=$* newpara=$newpara" >> /etc/vtoyboot/editenv/match.log
|
|
|
|
id=1
|
|
while [ -n "1" ]; do
|
|
if [ -d /etc/vtoyboot/editenv/$id ]; then
|
|
para=$(head -n1 /etc/vtoyboot/editenv/$id/param)
|
|
if [ "$para" = "$newpara" ]; then
|
|
code=$(cat /etc/vtoyboot/editenv/$id/errcode)
|
|
cat /etc/vtoyboot/editenv/$id/stdout
|
|
if [ $code -ne 0 ]; then
|
|
cat /etc/vtoyboot/editenv/$id/stderr >&2
|
|
fi
|
|
|
|
echo "[$curdate] grub-editenv match history id=$id code=$code" >> /etc/vtoyboot/editenv/match.log
|
|
exit $code
|
|
fi
|
|
else
|
|
break
|
|
fi
|
|
id=$(expr $id + 1)
|
|
done
|
|
|
|
echo "[$curdate] grub-editenv NO match $*" >> /etc/vtoyboot/editenv/match.log
|
|
cat /etc/vtoyboot/editenv/tmp_stdout
|
|
cat /etc/vtoyboot/editenv/tmp_stderr >&2
|
|
exit $code
|
|
else
|
|
[ -d /etc/vtoyboot/editenv ] || mkdir -p /etc/vtoyboot/editenv
|
|
|
|
id=1
|
|
override=0
|
|
while [ -d /etc/vtoyboot/editenv/$id ]; do
|
|
para=$(head -n1 /etc/vtoyboot/editenv/$id/param)
|
|
if [ "$para" = "$*" ]; then
|
|
echo "[$curdate] override $id $*" >> /etc/vtoyboot/editenv/history.log
|
|
override=1
|
|
break
|
|
fi
|
|
id=$(expr $id + 1)
|
|
done
|
|
|
|
if [ $override -eq 0 ]; then
|
|
echo "[$curdate] $*" >> /etc/vtoyboot/editenv/history.log
|
|
fi
|
|
|
|
mkdir -p /etc/vtoyboot/editenv/$id
|
|
echo "$*" > /etc/vtoyboot/editenv/$id/param
|
|
$grub_editenv_cmd $* > /etc/vtoyboot/editenv/$id/stdout 2>/etc/vtoyboot/editenv/$id/stderr
|
|
code=$?
|
|
echo $code > /etc/vtoyboot/editenv/$id/errcode
|
|
|
|
cat /etc/vtoyboot/editenv/$id/stdout
|
|
cat /etc/vtoyboot/editenv/$id/stderr >&2
|
|
exit $code
|
|
fi
|
|
|