通过 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