Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用SSH命令重新启动Linux_Node.js_Ssh - Fatal编程技术网

Node.js 使用SSH命令重新启动Linux

Node.js 使用SSH命令重新启动Linux,node.js,ssh,Node.js,Ssh,我正在将简单ssh与nodeJS和expressJS一起使用,我正在尝试使用ssh命令重新启动远程linux机器,这是我的代码(它不工作,但如果我尝试执行一个可以工作的ls命令),请帮助 ssh.exec('shutdown -r now', { out: function(stdout) { console.log(stdout)}}).start(); 我没有尝试ssh.exec,但除非您以root用户身份登录,否则只能使用sudo调用shutdown。虽然我确定执行命令的用户有

我正在将简单ssh与nodeJS和expressJS一起使用,我正在尝试使用ssh命令重新启动远程linux机器,这是我的代码(它不工作,但如果我尝试执行一个可以工作的ls命令),请帮助

ssh.exec('shutdown -r now', {
out: function(stdout) {
     console.log(stdout)}}).start();

我没有尝试ssh.exec,但除非您以root用户身份登录,否则只能使用sudo调用shutdown。

虽然我确定执行命令的用户有足够的权限运行
ls
,但他们是否有足够的
重新启动
?检查日志

编辑:修改后的帖子将我的答案包含在下面。在OP确认他们有足够的烫发次数后,我在对此答案的评论中提供了这一信息:

如果您的回复是您的用户具有
sudo
权限,请注意
sudo
的默认行为是提示输入密码

要使用
visudo
编辑器(例如
sudo visudo
)允许给定用户名在没有密码提示的情况下运行
reboot
命令,请尝试在配置中添加以下行:

username ALL = (root) NOPASSWD: /path/to/reboot 
Defaults!/path/to/reboot !requiretty 
不再提示您的用户名,您对
ssh.exec()
的调用应该可以正常工作。对于需要作为另一个用户/根用户运行的任何其他命令,您可以遵循类似的模式


如果需要确定特定系统的/path/to/reboot,请使用以下命令:
sudo which reboot

是的,我有权限您收到了哪些错误消息?如果用户具有sudo权限,则默认行为是提示输入密码。使用
visudo
(例如
sudo-visudo
)并允许给定用户名运行
reboot
命令,请尝试以下设置:
username-ALL=(root)NOPASSWD:/path/to/reboot
,后跟另一行
默认值/路径/到/重新启动!requirety
如果需要确定
/path/to/reboot
请使用命令:
sudo哪个重新启动
这有帮助吗?这也应该有所帮助。你也试过记录stderr了吗?也许这暗示了问题所在。