我有这个:
su $username -c ./script.sh问题是在脚本中我有“sudo”命令,他们说我
sudo: no tty present and no askpass program specified怎么做才对?
UPD:我需要sudo和su。我需要做的是以用户$username的身份运行脚本,并能够以root的身份在脚本中运行某些命令(例如,pacman -S)。
解决方案:在运行脚本之前,我向/etc/sudoers添加了NOPASSWD选项,并在脚本完成后使用sed删除该条目。
发布于 2014-03-03 16:13:08
首先将设置为脚本
尝试:
#!/bin/bash
echo "hello"
su - <your-user> -c /path/to/script.sh
echo "good bye"更新:
您应该找到一种方法来强制bash使用伪tty。
强制伪分配。这可以用于在远程计算机上执行基于屏幕的任意程序,这是非常有用的,例如在实现菜单服务时。多个-t选项强制分配tty,即使ssh没有本地tty。
如果用户不是sudoers,则执行以下步骤:
这就是你在/etc/sudoers中需要做的
# User privilege specification
root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL您还可以这样做:如果密码有密码,您可以通过管道传送密码:
echo "yourpassword" | sudo -S或
您可以运行以下脚本:
#!/usr/bin/expect -f
spawn sudo -s <<EOF
expect "assword for username:"
send -- "user-password\r"
expect eof你也可以这样做:
sudo -kS bash - << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOFhttps://stackoverflow.com/questions/22151361
复制相似问题