多台主机修改或写入文件并添加定时任务操作

最近遇到需要实现的简单需求
1.推送到多台主机和写入和修改文件
2.修改文件内容和添加文件内容
3.在指定用户下添加定时任务
最终还是觉得yml脚本比较方便
脚本内容大概如下

[root@ybt yml]# cat ybt.yml 	#yml示例
#playbook复习
---
- hosts: ybt
  remote_user: root
  tasks:
    - name: '写入文件'
      script: chdir=/home/ybt/ ybt.sh
        
    - name: '修改文件内容和添加文件内容'
      shell: sed -i 's/{{ ybt1  }}/{{ ybt2  }}/g'   /home/ybt/ybtfile.txt  

    - name: '添加定时任务'
      cron: name='添加定时任务'  minute=2 job="cat /home/ybtfile.txt >> 1.txt" user=ybt

[root@ybt yml]# cat ybt.sh	#脚本示例
#!/bin/bash 
#添加第一个文件
cat > file <<EOP
这是第一个文件
EOP
#添加第二个文件
cat > ybtfile.txt <<EOP
$1 $2 $3
金川机房
没错金川机房
EOP

执行过程

[root@ybt yml]# ansible-playbook -e "ybt1=金川 ybt2=邮校" ybt.yml

PLAY [ybt] *******************************************************************************************

TASK [Gathering Facts] *******************************************************************************
ok: [192.168.32.130]
ok: [192.168.32.128]

TASK [写入文件] ******************************************************************************************
changed: [192.168.32.128]
changed: [192.168.32.130]

TASK [修改文件内容和添加文件内容] *********************************************************************************
[WARNING]: Consider using the replace, lineinfile or template module rather than running 'sed'.  If
you need to use command because replace, lineinfile or template is insufficient you can add 'warn:
false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this
message.
changed: [192.168.32.128]
changed: [192.168.32.130]

TASK [添加定时任务] ****************************************************************************************
changed: [192.168.32.128]
changed: [192.168.32.130]

PLAY RECAP *******************************************************************************************
192.168.32.128             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.32.130             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

执行结果

[ybt@localhost ~]$ crontab -l
#Ansible: 添加定时任务
2 * * * * cat /home/ybtfile.txt >> 1.txt
[ybt@localhost ~]$ ll
总用量 8
-rw-r--r--. 1 root root 22 4月  26 13:56 file
-rw-r--r--. 1 root root 35 4月  26 13:56 ybtfile.txt
[ybt@localhost ~]$ cat file 
这是第一个文件
[ybt@localhost ~]$ cat ybtfile.txt 
  
邮校机房
没错邮校机房

问题注意点

[root@ybt yml]# cat ybt.sh  #脚本示例
#!/bin/bash 
#添加第一个文件
cat > file.sh <<EOP
$1 $2
这是第一个文件
EOP
#添加第二个文件
cat > ybtfile.sh <<\EOP  #只需要转义\
这些不能消失 "$1 $2 $3"
金川机房
没错金川机房
EOP
[root@ybt yml]# ./ybt.sh 
[root@ybt yml]# cat file.sh #特殊字符$消失
 
这是第一个文件
[root@ybt yml]# cat ybtfile.sh   #特殊字符保留
这些不能消失 "$1 $2 $3"
金川机房
没错金川机房
posted @ 2022-05-25 21:09  ybt&kexiao  阅读(80)  评论(0编辑  收藏  举报