ansible使用shell模块在受控机上执行命令(ansible2.9.5)
一,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)的更多相关文章
- ansible使用script模块在受控机上执行脚本(ansible2.9.5)
一,ansible的script模块的用途 script 模块用来在远程主机上执行 ansible 管理主机上的脚本, 即:脚本一直存在于 ansible 管理主机本地, 不需要手动拷贝到远程主机后再 ...
- ansible用get_url模块在受控机下载文件(ansible2.9.5)
一,ansible的get_url模块用途: get_url模块可以在受控机下载文件 可以理解成从受控端执行wget 下载的url支持:http | https | ftp 三种协议 说明:刘宏缔 ...
- ansible使用setup模块查看受控机的信息(ansible2.9.5)
一,ansible的setup模块的用途: 用来获取主机的信息 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的 ...
- ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)
一,ansible的user/group模块的用途: ansible的user模块用来实现:生成用户.删除用户等用户的管理ansible的group模块用来实现:生成组.删除组等组的管理 说明:刘宏缔 ...
- ansible使用file模块管理受控机的目录与文件(ansible2.9.5)
一,ansible的file模块的用途 file 模块实现对文件的基本操作. 例如: 创建文件或目录 删除文件或目录 修改文件权限等 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https:// ...
- Ansible快速实战指南----多机自动化执行命令、部署神器
1.需求: 需要在多台主机上,发送文件.执行命令,进行快速部署 2.ansible 远程复制文件 例子:在当前节点(20.88.14 ...
- Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...
- shell学习笔记3-后台执行命令
cron 系统调度进程,使用它在每天的某时间或一周.一月的不同时间运行 at 使用它在一个特点的时间允许一些特殊的作业 & 使用它在后台允许一个占用时间不长的进程 Nohup 使用它在后台运行 ...
- ansible通过yum/dnf模块给受控机安装软件(ansible2.9.5)
一,使用yum/dnf模块要注意的地方: 使用dnf软件安装/卸载时,需要有root权限, 所以要使用become参数 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnb ...
随机推荐
- end的用法——print中加end=可以不换行展示
A=['hello','world',1,2,3]for i in A: print('正常输出i的值:',i) #打印出来的是换行展示hello world 1 2 3 print('加入sep后i ...
- mysqli报错注入常见函数
以下均摘自<代码审计:企业级Web代码安全架构>一书 1.floor() select * from test where id=1 and (select 1 from (select ...
- JavaScript 异步编程
博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序 ...
- 学习go的一些笔记
反射 reflect type CfgSt struct{ Match *int64 `ini:"match"` Desc string `ini:"desc" ...
- Jmeter测试工具
jmeter的简单应用 目录 jmeter的简单应用 1.Jmeter 的基本概念 2.我们 为什么 使用 Jmeter 3.Jmeter的作用 4.Jmeter怎么用 5.安装JAVA环境 6.Jm ...
- top、ps -ef、ps aux的区别及内容详解
1.top和ps的区别 ps是静态查看进程--------top是动态(持续监控)进程 ps只是查看进程-----------top还可以监视系统性能,如平均负载,cpu和内存的消耗 2.ps -ef ...
- Prometheus之Exporter开发
Prometheus开发Exporter简介 Exporter 本身是一个http 服务,其指标结果只要符合 Prometheus 规范就可以被 Prometheus 使用. Prometheus中m ...
- 【5】JMicro免费在线消息服务
JMicro是一个用Java语言实现的开源微服务全家桶, 源码地址:https://github.com/mynewworldyyl/jmicro, Demo地址:http://jmicro.cn/. ...
- Excel—使用if(countif())表达式来筛选两个表格中相同的数据
关注微信公众号:CodingTechWork,一起学习进步. 引言 在线上运维的过程中,遇到一个头疼的事情,有一些合作公司的数据直接从平台上down下来是一个excel,然后发到研发手里去数据库中 ...
- 源码上看 .NET 中 StringBuilder 拼接字符串的实现
前几天写了一篇StringBuilder与TextWriter二者之间区别的文章(链接).当时提了一句没有找到相关源码,于是随后有很多热心人士给出了相关的源码链接(链接),感谢大家.这几天抽了点时间查 ...