Don't restart with sudo(8) if it's not available

Some environments, like system containers, have no reason to have
sudo(8) installed. In these environments restart.sh will silently fail
because /usr/bin/sudo does not exist to execute, so test that sudo
exists and don't try to use it otherwise.

Note also that hardcoding sudo's path is wrong: it can be installed in
other places. On FreeBSD, for example, it is /usr/local/bin/sudo when
installed from ports.
This commit is contained in:
AJ Jordan 2020-11-29 03:48:56 -05:00
parent ce82932c9a
commit 2911dfc37d
No known key found for this signature in database
GPG Key ID: 26794034633DBBC0
2 changed files with 16 additions and 4 deletions

10
debian/bin/restart.sh vendored
View File

@ -34,13 +34,19 @@ else
fi
fi
if type sudo >/dev/null 2>&1; then
sudo_command=sudo
else
sudo_command=
fi
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
case $cmd in
'systemctl')
echo "sleep 0.5; /usr/bin/sudo systemctl start jellyfin" | at now
echo "sleep 0.5; $sudo_command systemctl start jellyfin" | at now
;;
'service')
echo "sleep 0.5; /usr/bin/sudo service jellyfin start" | at now
echo "sleep 0.5; $sudo_command service jellyfin start" | at now
;;
'sysv')
echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now

View File

@ -34,13 +34,19 @@ else
fi
fi
if type sudo >/dev/null 2>&1; then
sudo_command=sudo
else
sudo_command=
fi
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
case $cmd in
'systemctl')
echo "sleep 0.5; /usr/bin/sudo systemctl start jellyfin" | at now
echo "sleep 0.5; $sudo_command systemctl start jellyfin" | at now
;;
'service')
echo "sleep 0.5; /usr/bin/sudo service jellyfin start" | at now
echo "sleep 0.5; $sudo_command service jellyfin start" | at now
;;
'sysv')
echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now