在远程机器上使用 MUSSH 执行 bash 脚本
$ mussh -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
sudo: unable to resolve host hostname
[email protected]: sudo: no tty present and no askpass program specified
如果我直接 ssh 其中一台机器并执行脚本,一切都会正常进行。
答案1
您可以告诉mussh
要求使用带有值的选项ssh
分配终端,例如,-o
RequestTTY
mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
如果你ssh
直接使用,你可以使用它的-t
选项,但mussh
用于-t
不同的目的(并且不通过那到ssh
):
-t
强制伪 tty 分配。这可用于在远程计算机上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t
选项强制 tty 分配,即使 ssh 没有本地 tty。
RequestTTY
指定是否为会话请求伪终端。该参数可能是以下之一:no
(切勿请求 TTY),yes
(当标准输入是 TTY 时,始终请求 TTY),force
(始终请求 TTY)或auto
(打开登录会话时请求 TTY)。此选项镜像-t
和-T
标志 SSH(1)。
进一步阅读:
答案2
好的,我已经解决了这个问题! (下班后和战斗)
这是完整的工作代码[https://github.com/aurelien-git/MAS]
解决方案是不使用 RequestTTY
但要在 /root/.ssh/authorized_keys 中拥有authorized_keys
现在命令可以正常加载了
mussh -a -i /home/aurelien/.ssh/id_rsa -d -H mas-hostfile -C 'update.sh' -m2
以及更多 ;-)