【问题标题】:Reboot Linux with SSH command使用 SSH 命令重启 Linux
【发布时间】:2022-04-18 02:49:50
【问题描述】:

我正在将 simple-ssh 与 nodeJS 和 expressJS 一起使用,并且我正在尝试使用 ssh 命令重新启动远程 linux 机器,这是我的代码(它不起作用,但如果我尝试执行一个 ls 命令工作。)请帮忙!

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

【问题讨论】:

  • 您是否也尝试记录标准错误?也许这可能暗示出了什么问题。

标签: node.js ssh


【解决方案1】:

虽然我确定执行命令的用户有足够的权限运行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

【讨论】:

  • 是的,我有特权
  • 您收到了哪些错误消息?如果您的用户具有 sudo 权限,则默认行为是提示输入密码。使用visudo(例如sudo visudo)并允许给定的用户名运行reboot命令尝试设置:username ALL = (root) NOPASSWD: /path/to/reboot后跟另一行Defaults!/path/to/reboot !requiretty如果你需要确定/path/to/reboot使用命令:@ 987654337@
【解决方案2】:

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

【讨论】:

【解决方案3】:

systemctl 重启 -i

是所有linux机器重启条件的命令。

【讨论】:

    【解决方案4】:

    使用命令行重启你的 Linux 电脑:

    sudo reboot
    

    输入您的sudo 密码 等待系统会自动重启

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2021-01-10
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多