首页 > 系统相关 >ansible 常用模块 shell

ansible 常用模块 shell

时间:2024-04-30 09:11:36浏览次数:14  
标签:shell name cmd builtin ansible command 模块

shell 模块说明

shell 模块用于在目标主机上执行命令,类似于在命令行中直接输入命令。这个模块允许你执行任何命令,但是要注意命令的安全性和可重复性。

shell 模块语法

- name: Execute shell command
  ansible.builtin.shell:
    cmd: <command>
    chdir: <directory>     # 可选,指定命令的工作目录
    creates: <file>        # 可选,如果文件存在,则不执行命令
    removes: <file>        # 可选,如果文件不存在,则执行命令
    warn: <yes|no>         # 可选,默认为 yes,当命令返回非零退出代码时是否给出警告
  register: <result_variable>  # 可选,用于存储命令执行结果的变量名

shell 模块参数说明

cmd: 要执行的命令。可以是单个命令,也可以是多个命令以及管道、重定向等复杂的命令。
chdir: 可选参数,指定命令执行时的工作目录。
creates: 可选参数,如果指定的文件已经存在,则不执行命令。
removes: 可选参数,如果指定的文件不存在,则执行命令。
warn: 可选参数,默认为 yes,当命令返回非零退出代码时是否给出警告。
register: 可选参数,用于存储命令执行结果的变量名。

shell 模块示例

简单的执行命令

- name: Run a shell command
  ansible.builtin.shell:
    cmd: ls -l

使用变量和管道执行命令

- name: Use variables and pipes in shell command
  ansible.builtin.shell:
    cmd: cat /var/log/messages | grep error

指定工作目录执行命令

- name: Execute command in a specific directory
  ansible.builtin.shell:
    cmd: ./run_script.sh
    chdir: /path/to/script/directory

检查文件是否存在后执行命令

- name: Only run command if file does not exist
  ansible.builtin.shell:
    cmd: create_file.sh
    creates: /path/to/file

检查文件是否不存在后执行命令

- name: Run command if file does not exist
  ansible.builtin.shell:
    cmd: remove_file.sh
    removes: /path/to/file

忽略命令返回的非零退出代码

- name: Run a command and ignore non-zero return code
  ansible.builtin.shell:
    cmd: command_that_may_fail.sh
    warn: no
    

使用 register 存储命令执行结果 

- name: Get users with /bin/bash shell excluding specified users
    ansible.builtin.shell:
      cmd: |
        getent passwd | awk -F: '$NF=="/bin/bash" {print $1}'
    register: bash_users
    changed_when: false

- name: Set password expiry for users with /bin/bash shell
    command: chage -M 90 {{ item }}
    with_items: "{{ bash_users.stdout_lines }}"
    register: change_users

参考文档

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/shell_module.html#ansible-collections-ansible-builtin-shell-module

标签:shell,name,cmd,builtin,ansible,command,模块
From: https://www.cnblogs.com/wangguishe/p/18163975

相关文章

  • shell 命令专栏总结
    一、菜鸟教程1、只读变量readonly使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。#!/bin/bashmyUrl="https://www.google.com"readonlymyUrlmyUrl="https://www.runoob.com"/bin/sh:NAME:Thisvariableisreadonly.2、单引号与双引号的区别......
  • 贪吃蛇之食物(苹果)产生模块设计
    贪吃蛇之食物(苹果)产生模块设计1. 设计目标初始化后,产生食物坐标(24,10),然后判断蛇头的坐标与食物的坐标是否相同,若相同,代表食物被吃掉,然后用随机数产生新的食物坐标。2. 区域划分游戏的基本单位block还是用16*16像素,屏幕四周用1个block宽度的边框代表墙,食物用一个block表示大小......
  • 21-Shell编程
    21.1正则表达式21.1.4字符集和单词“单词”指的是两侧由非单词字符分隔的字符串。非单词字符指的是字母、数字、下划线以外的任何字符。21.1.5字符类POSIX正则表达式中的字符类类匹配字符[[:alnum:]]文字、数字字符[[:alpha:]]字母字符[[:lower:]]小写......
  • linux修改shell,以及安装zsh配置oh-my-zsh.md
    查看当前shellecho$SHELL查看系统中有哪些shellcat/etc/shells修改shell,输入要切换的shell,例/bin/zshchsh-s/bin/zsh安装zshyuminstall-yzshoh-my-zsh克隆zshgitclonehttps://github.com/robbyrussell/oh-my-zsh.git~/.oh-my-zshgithub拉不下来的话去gitee......
  • rust模块管理示例1
    1、创建如下rust工程不用管其中代码的作用是什么,只要知道有一个main.rs和四个模块s1、s2、s3、s4即可。2、s1模块使用了Rust2015的模块格式,即:需要创建s1文件夹,在s1下创建功能文件hello.rs及名为mod.rs的模块定义文件。s1/hello.rspubfnsay_hello(){println!("hellofr......
  • 应急响应-webshell查杀
    简介靶机账号密码rootxjwebshell1.黑客webshell里面的flagflag{xxxxx-xxxx-xxxx-xxxx-xxxx}2.黑客使用的什么工具的shellgithub地址的md5flag{md5}3.黑客隐藏shell的完整路径的md5flag{md5}注:/xxx/xxx/xxx/xxx/xxx.xxx4.黑客免杀马完整路径md5flag步骤#1.1......
  • 揭秘Python中的JSON数据格式与Requests模块
    From: https://mp.weixin.qq.com/s/QgGyn2efYtVKI65RwXoiEA------------------------------------------------------------------------------------importpytestimportjsonimportrequestsfromrequests.authimportHTTPBasicAuthfromrequests.adaptersimportHTTPA......
  • BOSHIDA 如何选择适合自己需求的DC电源模块?
    BOSHIDA如何选择适合自己需求的DC电源模块?在选择适合自己需求的DC电源模块时,需要考虑一些关键因素,以确保选择的模块能够满足电源要求并具有良好的性能。下面是一些值得考虑的因素: 1.电压输出范围:首先,要确定所需的电源电压范围。不同的应用需要不同的电压输出,因此需要选择能......
  • C#的基于.net framework的Dll模块编程(四) - 编程手把手系列文章
          这次继续这个系列的介绍: 一、命名空间的起名;对于C#来说,一般命名空间的建议是:公司名(或个人名称).产品名.分类名,比如我这边是用的这个:Lzhdim.LPF.Helper,意思是个人名Lzhdim,加上LPF为平台名,加上Helper分类为帮助类,其它的更长的请读者自己添加。  ......
  • 模块的基础知识点
    一:模块的定义模块:就是一系列功能的集合体,分为三大类1.内置(就是解释器里自带的)2.自定义:可以是任何语言写的(py文件本身就是一个模块,文件名叫xx.py,模块名就叫xx)3.第三方:既不是自带的,也不是自己写的,是别人的直接拿过来ps:模块分为四种形式......