在管理端创建一个 shell 脚本

[root@localhost ~]$ cat /tmp/test.sh 
#!/bin/bash
echo "hello world"

把脚本分发到客户端

[root@localhost ~]$ ansible 192.168.1.123 -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

远程执行脚本,使用 shell 模块

[root@localhost ~]$ ansible 192.168.1.123 -m shell -a "/tmp/test.sh"
192.168.1.123 | CHANGED | rc=0 >>
hello world

执行本地脚本

ansible web -m script -a '/root/m.sh'                # 执行本地的文件,即管控机上的脚本
ansible web -m script -a 'removes=/root/m.sh /root/m.sh'    # 用来判断被管控机上是不是存在文件,如果存在,存在就执行,不存在就不执行
ansible web -m script -a 'creates=/root/a.sh /root/m.sh'    #用来判断被管控机上是不是存在文件,如果存在,就不执行

将文件批量传送到目的端

ansible-doc -s copy: backup     # 备份,以时间戳结尾src           # 源文件
dest       # 目的地址
group      # 文件的属组
mode      # 文件的权限 r 4 w 2 x 1
owner      #文件的属主

通过md5码来判断是否需要复制

ansible web -m copy -a 'src=/root/m.sh dest=/tmp/a.sh'               # 复制本地文件的到远程主机
ansible web -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755'          # 修改文件的权限
ansible web -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755 owner=ryan'   # 修改文件的属主
ansible web -m copy -a 'src=/etc/init.d dest=/tmp/ mode=755 owner=ryan'      # 复制本地目录到远程主机,如果改变文件的属性,则文件夹内的文件也会被改变
ansible web -m copy -a 'src=/etc/init.d/ dest=/tmp/ mode=755 owner=ryan'       # 复制本地目录内的所有文件到远程主机
ansible web -m copy -a "content='白云深处有人家\n' dest=/tmp/b.txt"         # 直接将文本内容注入到远程主机的文件中
最后修改:2021 年 09 月 17 日 04 : 37 PM
如果觉得我的文章对你有用,请随意赞赏