ansible的shell模块

作用:在远程机器上执行命名(复杂的命令)

shell模块支持的参数和解释(部分)

chdir 在执行命令之前,通过cd进入该参数指定的目录

creates 定义一个文件是否存在,如果存在则不执行该命令;如果不存在该文件,则执行shell命令

free_form 参数信息中可以输入任何的系统指令,实现远程管理

removes 定义

一个文件是否存在,如果存在该文件,则执行命令;如果不存在,则跳过

 shell模块案例

批量在客户端机器,创建写入文件信息

[root@m01 ~]# ansible change -m shell -a "echo 你真棒>/tmp/heihei.txt"
192.168.200.5 | CHANGED | rc=0 >>

192.168.200.6 | CHANGED | rc=0 >>
在另外俩个主机上查询,存在该文件
[root@rsnc01 ~]# ls /tmp |grep heihei.txt
heihei.txt
[root@nfs01 ~]# ls /tmp |grep heihei.txt
heihei.txt

批量查询进程信息

#现在俩个被管理的主机上创建个vi的编辑任务,放在后台运行
[root@rsnc01 ~]# vi 11.sh &
[1] 3305
[root@nfs01 ~]# vi 11.sh &
[1] 3274
在ansible主机上进行查询
[root@m01 ~]# ansible change -m shell -a "ps -ef|grep vi"
192.168.200.5 | CHANGED | rc=0 >>
root        696      1  0 08:16 ?        00:00:00 /usr/bin/VGAuthService -s
root       3305   1809  0 15:33 pts/0    00:00:00 vi 11.sh
root       3413   3412  0 15:38 pts/1    00:00:00 /bin/sh -c ps -ef|grep vi
root       3415   3413  0 15:38 pts/1    00:00:00 grep vi
192.168.200.6 | CHANGED | rc=0 >>
root        692      1  0 08:16 ?        00:00:00 /usr/bin/VGAuthService -s
root       3274   1807  0 15:33 pts/0    00:00:00 vi 11.sh
root       3369   3368  0 15:38 pts/1    00:00:00 /bin/sh -c ps -ef|grep vi
root       3371   3369  0 15:38 pts/1    00:00:00 grep vi
再进一步的筛选查询
[root@m01 ~]# ansible change -m shell -a "ps -ef|grep vi|grep -v vice|grep -v grep"
192.168.200.5 | CHANGED | rc=0 >>
root       3305   1809  0 15:33 pts/0    00:00:00 vi 11.sh
192.168.200.6 | CHANGED | rc=0 >>
root       3274   1807  0 15:33 pts/0    00:00:00 vi 11.sh
#grep -v +参数,反向查找,只打印不匹配的行,相当于筛选掉带参数的行

 批量远程执行脚本

该需要执行的脚本,必须要求在客户端机器上存在,否则会报错文件不存在,这是shell模块的特点,是因为还有一个专门执行脚本的script模块

注意:脚本必须在客户端机器上存在才行

1.创建文件夹

2.创建sh脚本文件,还要写入脚本内容

3.赋予脚本可执行权限

4.执行脚本

5.忽略warning信息

 

[root@m01 ~]# ansible change -m shell -a "mkdir -p /server/myscripts/;echo 'hostname'>/server/myscripts/hostname.sh;chmod +x /server/myscripts/hostname.sh;bash /server/myscripts/hostname.sh warn=False "
192.168.200.6 | CHANGED | rc=0 >>
nfs01
192.168.200.5 | CHANGED | rc=0 >>
rsnc01

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Ansible ShellAnsible的一个模块,它允许在远程主机上执行命令行命令。使用Ansible Shell,可以轻松地在多个主机上执行命令,而不必登录到每个主机并手动执行命令。此外,Ansible Shell还支持使用变量和模板来动态生成命令,从而使命令更加灵活和可重用。 ### 回答2: Ansible shellAnsible自动化工具中的一个模块,它可以在远程主机上执行shell命令或脚本。它可以用于管理运维任务,例如系统配置,软件部署,测试,文件传输等。 Ansible shell模块采用了Python的subprocess模块来创建一个子进程,然后在该进程中运行所需的bash命令。它支持所有的bash语法和命令,例如管道、重定向、字符转义等。 除了支持基本的bash命令外,它还支持其他的shell脚本,例如Python,Ruby等。 使用Ansible shell模块的好处是可以在远程主机上执行特定的命令而不需要在本地运行命令,这可以大大提高执行命令的效率和准确性。同时,它可以通过Ansible Playbooks来自动化任务并在多个主机同时执行,减少IT管理的工作量和提高效率。 然而,Ansible shell模块也存在一些问题。首先,由于它是在远程主机上运行的,因此它需要有足够的权限才能执行某些敏感的操作。另外,如果命令输出的数据量太大,可能会导致性能问题。 综上所述,Ansible shell模块是一个非常有用的工具,它可以在远程主机上执行命令和脚本,从而减少IT管理的工作和提高生产力。在使用时需要注意权限限制和性能问题。 ### 回答3: Ansible是一种自动化工具,它可以让管理员轻松地自动化IT基础架构管理。Ansible Shell作为Ansible的一个模块之一,是一个非常有用的工具,它可以帮助管理员通过运行命令和脚本自动化部署应用程序和配置设置。 Ansible Shell模块的作用是在目标主机上执行一组命令或一个脚本。它可以在目标主机上直接执行命令,或者将一个脚本从控制端传输到目标主机上执行。使用Ansible Shell模块,管理员可以快速并准确地执行脚本或命令。 Ansible Shell模块还有一些其他的特点,如它可以使用变量和循环控制结构,使得管理员可以轻松地在目标主机上执行大量的命令和脚本。管理员可以利用比较运算符判断执行结果,并通过一些常用的模块来处理文件和目录对象,例如copy和file模块。 然而,Ansible Shell模块也有一些限制。首先,它依赖于目标主机的远程shell命令的可用性。其次,需要管理员在使用时特别小心,确保不会执行不安全的命令,这可能会导致未预料的后果。 总的来说,Ansible Shell模块的使用非常方便,使管理员可以自动化部署和配置基础架构。但它需要管理员有一定的Shell编程知识和对目标主机的深入了解,以确保安全和正确执行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值