ansible模块command/shell

刚开始很困惑,不管是fetch,copy,file,blockinifle,lineinfile,find,replace模块都不能直接看到我要去查找或修改的文件以及内容,那么command模块就可以轻松实现了

command模块

command模块可以帮助我们在远程主机上执行命令

注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如"<", ">", "|", ";" 和 "&" 这些符号,如果你需要这些功能,可以参考后面介绍的shell模块,还有一点需要注意,如果远程节点是windows操作系统,则需要使用win_command模块。

此处我们介绍一些command模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。

free_form参数 :必须参数,指定需要远程执行的命令,需要说明一点,free_form参数与其他参数并不相同,在之前的模块示例中,如果想要使用一个参数,那么则需要为这个参数赋值,举个例子,之前的示例模块中,大多都有path参数,当我们需要指定要操作的文件时,通常需要对path参数赋值,比如,path=/testdir/test,表示我们想要操作/testdir/test文件,但是free_form参数则不同,"free_form"并不是一个"实际存在"的参数名,比如,当我们想要在远程主机上执行ls命令时,我们并不需要写成"free_form=ls" ,这样写反而是错误的,因为并没有任何参数的名字是free_form,当我们想要在远程主机中执行ls命令时,直接写成ls即可,这就是free_form参数的含义,因为command模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为free_form,如果你还是不明白,看下面的小示例就行了。

chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。

creates参数 :看到creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果/testdir/test文件存在,就不执行我们指定的命令。

removes参数 :与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果/testdir/tests文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件

示例如下:

ansible jack6-2 -m command -a "chdir=/tmp cat test"

[root@jack7-1 ~]# ansible jack6-2 -m command -a "chdir=/tmp creates=.test echo hellp"
jack6-2 | SUCCESS | rc=0 >>
skipped, since .test exists
[root@jack7-1 ~]# ansible jack6-2 -m command -a "chdir=/tmp removes=.test echo hello"
jack6-2 | CHANGED | rc=0 >>
hello

creates存在就不执行,返回存在
removes不存在就不执行,返回不存在

shell

shell模块
shell模块可以帮助我们在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。

学习此模块之前,请先参考本文中的command模块。

此处我们介绍一些shell模块的常用参数。

free_form参数 :必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考command模块。

chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。

creates参数 :使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command模块中的解释。

removes参数 :使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考command模块中的解释。

executable参数:默认情况下,shell模块会调用远程主机中的/bin/sh去执行对应的命令,通常情况下,远程主机中的默认shell都是bash,如果你想要使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应的命令,指定shell文件时,需要使用绝对路径。

shell模块中chdir、creates、removes参数的作用与command模块中的作用都是相同的,此处不再举例。

ansible jack6-2 -m shell -a ‘chdir=/tmp echo "I miss you" >> test‘

ansible jack6-2 -m shell -a ‘chdir=/tmp ls -a | grep .test‘

ansible模块command/shell

上一篇:KAL1 LINUX 官方文档之kali开发---生成 更新的Kali ISO


下一篇:KAL1 LINUX 官方文档之kali开发---实时构建自定义的Kali ISO