一,ansible的shell模块和command模块的区别?

shell模块:在远程主机上执行主控端发出的shell/python脚本

command模块:不能调用shell指令,没有bash的环境变量,也不能使用shell的一些操作,在遇到"<",">","|","&"将会终止。

它不支持变量、重定向、管道符等,这些操作需要用shell模块执行.

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,shell模块执行命令的例子:

1,进入指定的目录后执行指令:

# chdir : 指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录下

[liuhongdi@centos8 ~]$ ansible yujian -m shell -a "chdir=/usr/local/soft pwd;"
121.122.123.47 | CHANGED | rc=0 >>
/usr/local/soft

2,检查nginx服务是否在进程中?

用shell可以使用管道符,比如查看远程受控端nginx服务是否启动

说明;用command模块就会报错,因为不支持管道。

这是shell模块和command模块的主要区别

#grep -v grep 不看包含有grep字符串的进程

[liuhongdi@centos8 ~]$ ansible yujian -m shell -a "ps auxfww | grep nginx: | grep -v grep"
121.122.123.47 | CHANGED | rc=0 >>
root 7491 0.0 0.0 50412 3340 ? Ss Mar11 0:00 nginx: master process /usr/soft/openresty/nginx/sbin/nginx
nginx 7492 0.0 0.0 82576 7756 ? S Mar11 0:12 \_ nginx: worker process
nginx 7493 0.0 0.0 81892 5940 ? S Mar11 0:00 \_ nginx: worker process
nginx 7494 0.0 0.0 81892 7184 ? S Mar11 0:00 \_ nginx: worker process
nginx 7495 0.0 0.0 81892 5940 ? S Mar11 0:00 \_ nginx: worker process
nginx 7496 0.0 0.0 81892 5940 ? S Mar11 0:00 \_ nginx: worker process
nginx 7497 0.0 0.0 81892 7056 ? S Mar11 0:00 \_ nginx: worker process
nginx 7498 0.0 0.0 81892 5940 ? S Mar11 0:00 \_ nginx: worker process
nginx 7499 0.0 0.0 81892 5940 ? S Mar11 0:00 \_ nginx: worker process

3,把命令执行结果保存到重定向文件

说明:command模块不支持重定向

[liuhongdi@centos8 ~]$ ansible yujian -m shell -a "chdir=/data/site/think_www git status >> /home/webop/work/gitstatus.txt"
121.122.123.47 | CHANGED | rc=0 >>

登录到受控端,查看生成的结果文件

[root@blog ~]$ cd /home/webop/work
[root@blog work]$ more gitstatus.txt
On branch master
Your branch is up to date with 'origin/master'. nothing to commit, working tree clean

4,常用的一个例子:从受控端使用git发布代码

#warn=no 不理会警告信息

[liuhongdi@centos8 ~]$ ansible yujian -m shell -a "chdir=/data/site/think_www warn=no git pull origin master" --become  --become-method=sudo --become-user=root 

5,常用的一个例子:查看服务器空间使用情况

[liuhongdi@centos8 work]$ ansible yujian -m shell -a "df -h | grep /dev/vd"
121.122.123.47 | CHANGED | rc=0 >>
/dev/vda1 100G 14G 87G 14% /
/dev/vdb1 500G 3.6G 497G 1% /databak

三,查看ansible的版本

[root@centos8 liuhongdi]# ansible --version
ansible 2.9.5

ansible使用shell模块在受控机上执行命令(ansible2.9.5)的更多相关文章

  1. ansible使用script模块在受控机上执行脚本(ansible2.9.5)

    一,ansible的script模块的用途 script 模块用来在远程主机上执行 ansible 管理主机上的脚本, 即:脚本一直存在于 ansible 管理主机本地, 不需要手动拷贝到远程主机后再 ...

  2. ansible用get_url模块在受控机下载文件(ansible2.9.5)

    一,ansible的get_url模块用途: get_url模块可以在受控机下载文件 可以理解成从受控端执行wget 下载的url支持:http | https | ftp   三种协议 说明:刘宏缔 ...

  3. ansible使用setup模块查看受控机的信息(ansible2.9.5)

    一,ansible的setup模块的用途: 用来获取主机的信息 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的 ...

  4. ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)

    一,ansible的user/group模块的用途: ansible的user模块用来实现:生成用户.删除用户等用户的管理ansible的group模块用来实现:生成组.删除组等组的管理 说明:刘宏缔 ...

  5. ansible使用file模块管理受控机的目录与文件(ansible2.9.5)

    一,ansible的file模块的用途 file 模块实现对文件的基本操作. 例如: 创建文件或目录 删除文件或目录 修改文件权限等 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https:// ...

  6. Ansible快速实战指南----多机自动化执行命令、部署神器

                                      1.需求: 需要在多台主机上,发送文件.执行命令,进行快速部署 2.ansible 远程复制文件 例子:在当前节点(20.88.14 ...

  7. Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件

    我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...

  8. shell学习笔记3-后台执行命令

    cron 系统调度进程,使用它在每天的某时间或一周.一月的不同时间运行 at 使用它在一个特点的时间允许一些特殊的作业 & 使用它在后台允许一个占用时间不长的进程 Nohup 使用它在后台运行 ...

  9. ansible通过yum/dnf模块给受控机安装软件(ansible2.9.5)

    一,使用yum/dnf模块要注意的地方: 使用dnf软件安装/卸载时,需要有root权限, 所以要使用become参数 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnb ...

随机推荐

  1. oracle之二redo日志

    redo 日志 4.1 redo (重做) log 的功能:数据recovery4.2 redo log 特征:     1)记录数据库的变化(DML.DDL)     2)用于数据块的recover ...

  2. 安装最新LAMP环境(CentOS7+PHP7.1.5+Mysql5.7)

    安装Apache&Nginx ①.升级一下yum源(不是必须的),升级会花点时间,需要选择的地方都选择都输入“y”即可 yum update ②. 安装Apache yum list |gre ...

  3. Angular用户输入

    用户输入 事件绑定 使用 (event) on-event 概念 ​ 用户操作 -> DOM事件 用户操作 点击链接 按下按钮 输入文字 DOM事件 $event 类型 any 不能推测属性 可 ...

  4. ant在windows环境下安装

    前言: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发. 举个例子说明:平时在写 Java 程序的时候,基本的步骤都是 打 ...

  5. Docker应用安装

    一.安装mysql 1.查看可用的 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags . 可以通过 Sort by 查看其 ...

  6. linux学习(四)Linux 文件基本属性

    一.引言 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限. 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Lin ...

  7. Redis常见的八道面试题

      一.memcached与redis的区别? 1.存储方式不同.memcached把数据全部存在内存之中,断电之后会挂掉,而redis虽然也用到了内存,但是会有部分数据存在硬盘中,保证数据持久性. ...

  8. 目标检测算法(一):R-CNN详解

    参考博文:https://blog.csdn.net/hjimce/article/details/50187029 R-CNN(Regions with CNN features)--2014年提出 ...

  9. JUC并发编程--AQS

    转自: https://www.jianshu.com/p/d8eeb31bee5c 前言 在java.util.concurrent.locks包中有很多Lock的实现类,常用的有Reentrant ...

  10. Python-获取等差数列

    获取等差数列思路 1. 通过range步长 2. 通过切片步长 # 通过 range series = [i for i in range(1, 101, 2)] print(series) # 通过 ...