我在特定目录中有一个文件test_proc.init
。并且在同一目录中还有一个文件,desc.cmd
其内容如下:
set_poc 204 6
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 7
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 8
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 9
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
以下是我想要做的事情:
- 我想要获取文件
sha1sum
的test_proc.init
:sha1sum test_proc.init
。 - 无论该命令的输出是什么
sha1sum
,我都想复制该校验和并更新desc.cmd
文件。
因此,如果新的校验和是e32313118e53b60140d2024dfa7578c3fd89b346
我的desc.cmd
文件将会是这样的:
set_poc 204 6
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 7
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 8
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 9
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
这可以在 ansible 中完成吗?我不确定如何粘贴校验和并更新文件。
- name: Get sha1sum of file
stat:
path: /data/test_proc.init
checksum_algorithm: sha1sum
get_checksum: yes
register: shell_stat
答案1
该命令的输出stat
应该已经包含该文件的 sha:
- name: Get sha1sum of file
stat:
path: /data/test_proc.init
checksum_algorithm: sha1sum
get_checksum: yes
register: sha
然后它可以与类似模块一起使用lineinfile
,或者像这样blockinfile
更新文件:desc.cmd
- name: insert sha
lineinfile:
path: /data/desc.cmd
line: "{{ sha.stat.checksum }}"