ansible使用shell模块在受控机上执行命令(ansible2.9.5)
2023-09-14 08:59:33 时间
一,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
相关文章
- python常见模块_ collections
- Cocoapods多模块开发
- 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多
- 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器
- Linux Shell脚本自动化编程实战-shell变量(一)
- 【Python五篇慢慢弹(4)】模块异常谈python
- goconvey测试模块
- Linux Shell脚本自动化编程实战-shell变量(一)
- ansible command和shell模块的对比:shell模块可以打印环境变量
- 各种语言里获取当前模块的方法:ABAP,ABSL,C,nodejs
- JS:crypto-js模块实现数据加密解密
- Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
- 求教:在SpringBoot框架下基于MAVEN的多模块项目,怎么进行DAO层的单元测试?
- MYSQL提权之反弹SHELL——数据库提权属于webshell到管理员的纵向提权,本质还是利用udf提权,无非是在mysql自定义函数中使用了反弹shell而已
- 基于 Verilog HDL 设计真彩图的灰度处理模块
- Python PyWin32 模块
- Shell脚本的学习心得和知识总结(三)| shell语句
- ansible常用模块之shell模块(五)
- ansible的get_url模块
- Python:T6 Python模块应用(含答案)