示例脚本:
sudo su admin
ls /usr/bin
exit
当我用以下方式运行它时:
biske@comp1:~$ ./script
然后提示符变为:
admin@comp1:/home/biske$
当我输入 exit 时,它实际上会打印出以下几行:
exit bin games include lib lib32 local sbin share src
我想要输出而不需要用户输入任何内容。
sudo su
我认为通过向该命令输入密码可以解决问题。
有办法吗?
答案1
sudo su user
会进入一个新的 shell。这是在非交互式脚本中你最不想做的事情。抱歉,我的意思是这是在脚本中你最不想做的事情后将密码硬编码到其中!请避免这样做。
最好跳过su
并单独使用 sudo:
sudo -u admin -- ls /usr/bin
或者如果失败了,只需确保您的脚本以 root 身份运行,并使用此块:
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
然后就完全不需要在脚本内部进行交互了。您的脚本可以做sudo -u... command
任何事情而不需要更改密码。