我正在使用带有nodeJS和expressJS的simple-ssh,并且尝试通过ssh命令重新引导远程linux计算机,这是我的代码(它不起作用,但是如果我尝试执行一个ls命令,可以。)请帮忙!
ssh.exec('shutdown -r now', {
out: function(stdout) {
console.log(stdout)}}).start();
答案 0 :(得分:0)
我还没有尝试过ssh.exec,但是除非您以root用户身份登录,否则只能使用sudo调用shutdown。
答案 1 :(得分:0)
虽然我确定执行命令的用户具有足够的特权来运行ls
,但他们是否有足够的reboot
?检查日志!
编辑:帖子经过了修改,以在下面包含我的答案。在OP确认他们有足够的烫发后,我在对此答案的评论中提供了它:
给出的答复是您的用户具有sudo
特权,请注意sudo
的默认行为是提示输入密码。
要使用visudo
编辑器(例如sudo visudo
)允许给定的用户名在没有密码提示的情况下运行reboot
命令,请尝试添加以下内容行到您的配置:
username ALL = (root) NOPASSWD: /path/to/reboot
Defaults!/path/to/reboot !requiretty
您的用户名将不再提示,并且您对ssh.exec()
的呼叫应可以正常工作。对于您需要以其他用户/ root身份运行的任何其他命令,您可以遵循类似的模式。
如果需要确定特定系统的 / path / to / reboot ,请使用以下命令:sudo which reboot
答案 2 :(得分:0)
systemctl reboot -i
是所有linux机器重启条件的命令。