找到绕过的方法,就是写一个脚本来包装smartctl,首先原有命令改名,然后在原有位置 /usr/sbin/smartctl 写一个脚本
sudo dpkg-divert --divert /usr/sbin/smartctl.orig --rename /usr/sbin/smartctl
#!/bin/bash
SMARTCTL=/usr/sbin/smartctl.orig
contains_key_d() {
for arg in "$@"; do
if [[ "$arg" == "-d" || "$arg" == -d=* ]]; then
return 0
fi
done
return 1
}
is_dev_sdx() {
for arg in "$@"; do
if [[ "$arg" == /dev/sd* ]]; then
return 0
fi
done
return 1
}
if contains_key_d "$@"; then
exec $SMARTCTL "$@"
elif is_dev_sdx "$@"; then
exec $SMARTCTL -d sat "$@"
else
exec $SMARTCTL "$@"
fi