我正在尝试使用 ssh 重新启动 Teltonika RTU950。
我可以通过 ssh 以 root 身份登录,然后重新启动路由器。但是,如果我尝试通过 ssh 发送重启命令,它就不起作用。
ssh root@routerip 'reboot'
这将返回错误:
ash: reboot: not found
我尝试使用 shutdown -r 代替。还尝试使用绝对路径。总是给我同样的错误。
需要注意的是,错误说:ash:
而不是bash:
。
路由器在 linux 操作系统上运行。uname 给出:
Linux Teltonika-RUT950.com 3.18.44 #1
知道是什么原因造成的吗?
尝试输入重启或关机命令的完整路径。例如,如果重新启动的完整路径是 /sbin/reboot,则运行
ssh root@routerip /sbin/reboot
当您以 root 身份登录时,您的 shell 是什么?
如果确实是 bash,那么您可以尝试:
ssh root@routerip /bin/bash -c "/sbin/reboot"
请注意,从安全角度来看,通过 SSH 启用 root 登录是一个坏主意。您应该检查供应商文档以查看是否可以解决该问题。
ssh -t root@device 重启
用于 -t 标志的 man ssh
原因是没有 -t 标志,您将获得非登录 shell 和不同的 PATH。除此之外,即使给出完整路径,reboot 命令也可能检测到它是以非交互方式运行的。