Ansible—— 11. shell模块

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

1. 常用参数

free_form:required,指定需要远程执行的命令。
chdir: 指定工作目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
creates:指定一个文件,当指定的文件存在时,就不执行对应命令。
removes:使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令。
executable:指定 shell 文件,需要使用绝对路径。通 常情况下,远程主机中的默认shell都是bash,如果你想要使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应 的命令,指定shell文件时,需要使用绝对路径。

2. 示例
#使用shell模块可以在远程服务器上执行命令,它支持管道与重定向等符号。
[root@ansible-manager ~]# ansible host1 -m shell -a "chdir=/testdir echo mytest > test"
[root@ansible-manager ~]# ansible host1 -m shell -a "chdir=/testdir ls"
[root@ansible-manager ~]# ansible host1 -m shell -a "chdir=/testdir cat test"

如果执行的命令需要csh解析,那么可以指定使用csh在远程主机上执行对应的命令,使用csh的语法定义了一个数字类型的变量TestNum,然后将TestNum变量的值重定向到了/testdir/TestNumFile,在bash中,@符号不能用于定义变量, 所以,可以使用executable指定需要的shell类型。

[root@ansible-manager ~]# ansible test70 -m shell -a 'executable=/bin/csh @ TestNum=666 ; echo $TestNum > /testdir/TestNumFile'

————Blueicex 2020/2/2 18:06 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值