Ini sangat mudah dilakukan:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "example@unixlinux.online"
Ketika pengguna saat ini bukan root, jalankan ulang skrip melalui sudo .
Perhatikan bahwa saya menggunakan sudo di sini bukan su . Ini karena memungkinkan Anda mempertahankan argumen. Jika Anda menggunakan su , perintah Anda harus su -c "$0 example@unixlinux.online" yang akan merusak argumen Anda jika memiliki spasi atau karakter shell khusus.
Jika shell Anda adalah bash, Anda dapat menghindari panggilan eksternal ke whoami :
(( EUID != 0 )) && exec sudo -- "$0" "example@unixlinux.online"
Anda juga dapat memeriksa UID:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
Anda dapat memanggil skrip itu sendiri dan memeriksa:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...
File swap yang tumbuh secara dinamis di Debian
Login SSH tidak berfungsi menggunakan kunci Tanpa Kata Sandi?