Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible中是否有在远程节点上运行远程命令的临时命令?_Ansible - Fatal编程技术网

Ansible中是否有在远程节点上运行远程命令的临时命令?

Ansible中是否有在远程节点上运行远程命令的临时命令?,ansible,Ansible,我正试图在主节点上执行此操作 ansible all -m shell -a "/bin/ping -c3 `hostname`" 而不是ping远程主机名,而是ping主节点 ansible all -m shell -a "/bin/ping -c3 `hostname`" e、 例如,主节点主机名=主节点 远程节点主机名=从节点 上面的命令执行此操作 /bin/ping -c3 Master (instead of /bin/ping -c3 Slave) 请就如何在Ansible中

我正试图在主节点上执行此操作

ansible all -m shell -a "/bin/ping -c3 `hostname`"
而不是ping远程主机名,而是ping主节点

ansible all -m shell -a "/bin/ping -c3 `hostname`"
e、 例如,主节点主机名=主节点

远程节点主机名=从节点

上面的命令执行此操作

/bin/ping -c3 Master (instead of /bin/ping -c3 Slave)

请就如何在Ansible中实现这一点提出建议。

如果您像这样对
主机名
进行反引用:`hostname`,则该命令将在本地主机上执行。如果您确实想在远程主机上执行它,请使用
inventory\u hostname

尝试:

如果要在目标主机中执行
hostname
,请转义
backquote
,以便本地计算机上的shell不会对其进行解释

ansible all -m shell -a "/bin/ping -c3 \`hostname\`"

如果像这样反引用
hostname
`hostname`,那么它是一个将在本地主机上执行的命令。如果您确实想在远程主机上执行它,请使用
inventory\u hostname

尝试:

如果要在目标主机中执行
hostname
,请转义
backquote
,以便本地计算机上的shell不会对其进行解释

ansible all -m shell -a "/bin/ping -c3 \`hostname\`"
添加到回答中,虽然
inventory\u hostname
是从您的清单文件中获取的,但您可能还需要查看

  • {{ansible\u nodename}
    -系统报告的主机名
  • {{ansible\u hostname}}
    -显示第一个句点(.)之前字符串的非限定主机名
如果您真的想使用
hostname
命令的输出而不是一个简单的事实,您应该在命令中使用单引号,如

ansible all -m shell -a '/bin/ping -c3 `hostname`'
单引号将保留传递给远程主机的确切语法,而当您使用双引号时,表达式将在传递给托管主机之前在主节点上求值

请参阅以供将来参考

另外,请使用
$(command)
语法,而不是
`command`
,请参见添加到回答中,虽然
清单\u主机名
是从清单文件中获取的,但您可能还需要查看

  • {{ansible\u nodename}
    -系统报告的主机名
  • {{ansible\u hostname}}
    -显示第一个句点(.)之前字符串的非限定主机名
如果您真的想使用
hostname
命令的输出而不是一个简单的事实,您应该在命令中使用单引号,如

ansible all -m shell -a '/bin/ping -c3 `hostname`'
单引号将保留传递给远程主机的确切语法,而当您使用双引号时,表达式将在传递给托管主机之前在主节点上求值

请参阅以供将来参考


另外,请使用
$(command)
语法,而不是
`command`
,请参见

ansible all-m shell-a'/bin/ping-c3
主机名
”将命令保持原样。ping:unknown host
hostname
有单引号和双引号的详细信息您确定吗?你的目标系统是什么?在centos6和opensuse上分别命令ansible-i10.0.8.82127.0.1-mshell-a'/bin/ping-c3$(主机名)'在opensuse和centos 6 ansible上使用backticks test comand生成所需结果-i 10.0.8.82127.0.1-m shell-a'echo
hostname
uname-r
'所有127.0.1 | SUCCESS | rc=0>>linux-4xmi:4.4.57-18.3-default 10.0.8.82 | SUCCESS | rc=0>>主机:2.6.32-642.el6.x86 u>我正在centos上运行该命令,两个都没有运行该命令在这里,backticks和$1都不起作用。。“$(hostname)”-采用主主机名而不是远程主机名,并且ansible all-m shell-a'/bin/ping-c3
hostname
'将保留命令的原样。ping:unknown host
hostname
有单引号和双引号的详细信息您确定吗?你的目标系统是什么?在centos6和opensuse上分别命令ansible-i10.0.8.82127.0.1-mshell-a'/bin/ping-c3$(主机名)'在opensuse和centos 6 ansible上使用backticks test comand生成所需结果-i 10.0.8.82127.0.1-m shell-a'echo
hostname
uname-r
'所有127.0.1 | SUCCESS | rc=0>>linux-4xmi:4.4.57-18.3-default 10.0.8.82 | SUCCESS | rc=0>>主机:2.6.32-642.el6.x86 u>我正在centos上运行该命令,两个都没有运行该命令在这里,backticks和$1都不起作用。。“$(主机名)”-采用主主机名而非远程主机名,因此无法使用backquote`some_commad`在远程节点上执行命令是否可以通过Playbook?仅供参考ansible all-m shell-a”/bin/ping-c3\`hostname`”无法使用backquote`some_commad`在远程节点上执行命令。是否可以通过Playbook?仅供参考ansible all-m shell-a“/bin/ping-c3\`hostname\`无法运行