我在函数的帮助下创建了一个别名sudo,以绕过stdin上的手动密码输入。 sudoers文件中的更改是我不允许做的。
myfunction() { if [ $1 == vi ] then /usr/bin/sudo $* else echo "Password@123" | /usr/bin/sudo -S $* fi } alias sudo=myfunction
它运行正常,直到我运行需要stdin输入的命令,但在这里我无法输入yes或no。
sudo apt-get remove wicd Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: wicd 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 47.1 kB disk space will be freed. Do you want to continue [Y/n]? Abort.
任何可以使我的别名来解决此问题的解决方案。
答案 0 :(得分:1)
您可以使用sudo -v
("验证")进行密码验证,然后只要您在5分钟内运行其他sudo
命令,它就不会提示为了密码。顺便说一下,如果任何参数包含空格,通配符或其他未引用引用可能会混淆的内容,则应使用"$@"
而不是$*
。
myfunction() {
echo "Password@123" | /usr/bin/sudo -S -v
/usr/bin/sudo "$@"
}