我正在尝试通过PHP脚本运行shell注释。我想先将su转换为用户,然后运行sudo命令。我试过了:
echo mypassword | (su -c "sudo reboot" user2)
它不起作用,因为它需要两个密码,而我只传递了一个密码。我查看了许多其他帖子,下面的解决方案对我不起作用,因为我没有当前用户的sudo密码。我需要先更改用户a,然后再做一个sudo。我能得到一些帮助吗?
echo mypassword | sudo -s ... Not work...
我知道这是一种不好的做法。我只需要它来重新启动服务器,因为端口22意外关闭。我无法通过ssh进入服务器进行任何操作。。
这是从PHP端重新启动服务器的一次性使用,因为我现在无法联系管理员重新启动服务器。我完全理解缺点。。。请不要提出缺点。
由于这是一次性的事情,请尝试使用以下内容。它生成了一个sudo环境(用于当前用户(,在该环境中调用sudo reboot
。
#! /bin/bash
read -sp "pass? " pass
expect 2>&1 <<-EOF
spawn sudo reboot
expect "*: " { send "${pass}r" }
expect eof
catch wait result
exit [lindex $result 3]
EOF
exit $?
您可以按如下方式调用它来实现自动化。
$ ./test.sh <<-EOF
notreallymypassword
EOF
注意:虽然我认为它有效,但我还没有测试过。