无法使用 SSH 运行一系列命令

无法使用 SSH 运行一系列命令

通过 ssh 登录时,我无法使用几个 sudo 命令。我正在使用以下命令,但它无法正常工作。

ssh hypr1000.opsr.com “ot = sudo virsh 列表 --all |grep running| awk '{print $2}'| tail -2 ;sudo virsh dominfo $ot”

这是返回的错误消息:

error: command 'dominfo' requires <domain> option

我该怎么做才能使这个命令成功运行?

答案1

您基本上是在运行ssh host "var=value; echo $var"。 shell 在ssh收到命令之前执行变量扩展。 因此,实际收到的命令ssh变为:

var=$value; echo 

为了避免 shell 吞噬你的美元,请使用单引号:

ssh host 'var=value; echo $var'

考虑到您的命令,您似乎试图在最后一个命令中使用前一个命令的输出。要成功执行此操作,您必须正确使用命令替换:

ssh 主机'输出=$(sudo virsh list --all | awk "/running/{print \$2}" | tail -2); sudo virsh dominfo $output'

甚至:

ssh 主机'sudo virsh dominfo $(sudo virsh list --all | awk "/running/{print \$2}" | tail -2)'

这假设sudo配置为不要求输入密码,否则您将收到如下错误:

sudo: no tty present and no askpass program specified

相关内容