Shell和命令之间的区别

时间:2019-06-19 08:32:50

标签: ansible

我对Ansible世界是陌生的,任何人都可以帮助我了解Ansible中Shell和Command之间的区别。何时使用shell以及何时使用命令。我知道一个用例

命令模块更安全,因为它不受用户环境的影响。

2 个答案:

答案 0 :(得分:1)

Ansible Shell模块允许您在远程主机上运行任意命令,就像您登录到Shell一样。 Shell和Command模块非常相似,主要区别在于shell模块不会转义命令,从而允许您使用shell运算符,例如重定向(“大于”,“小于”),管道(“ |”)和布尔值运算符(“ &&”,“ ||”)。这确实意味着Shell模块容易受到命令注入/ shell注入的影响,但是在Shell模块中使用变量时,通过使用“ quote”过滤器可以轻松克服这一问题。

参考: Ansible Shell Module Tutorial - Complete Beginner's Guide

答案 1 :(得分:-1)

根据文档:

shell – Execute shell commands on targets

  

几乎与命令模块完全一样,但是通过远程节点上的外壳程序(/ bin / sh)运行命令。

和:

command – Execute commands on targets

  

将不会通过外壳程序处理命令,因此$ HOME之类的变量以及“ <”,“>,” |“,”;“之类的操作和“&”将不起作用。如果需要这些功能,请使用外壳模块。

[已编辑以删除不雅语言]