一,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

最新文章

  1. .Net控件经验集合
  2. JQUERY添加、删除元素、eq()方法;
  3. 每天一个linux命令(9):nl命令
  4. easyui form submit 不提交
  5. 使用isInEditMode解决可视化编辑器无法识别自定义控件的问题
  6. Win7 &amp; Win 8系统更新失败的解决
  7. 利用Gson进行String和对象的转换
  8. Hadoop基准测试(转载)
  9. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_1
  10. 《Java从入门到放弃》入门篇:hibernate中的多表对应关系
  11. eclipse集成dorado5插件
  12. [福大软工] W班 团队第一次作业—团队展示成绩公布
  13. xp开机黑屏故障分析
  14. Java 集合系列(三)—— LinkedList
  15. js比较两个单独的数组或对象是否相等
  16. 运行Office 2007安装程序提示:&quot;找不到Office.zh-cn\OfficeMUI.xml&quot;(转载)亲测
  17. DES加密算法—实现(C语言)
  18. Nginx memcached应用层反向代理
  19. MogonDB安装及配置
  20. DBUtils (30)

热门文章

  1. 记一次 node 项目重构改进
  2. 二、loadrunner参数化连接数据库
  3. [剑指Offer]57-和为s的数字
  4. Git进阶之路:配置git同时推送github和gitee仓库
  5. Java 审计之SSRF篇
  6. PJzhang:vulnhub靶机sunset系列SUNSET:TWILIGHT
  7. 用华为HMS ML kit人体骨骼识别技术,Android快速实现人体姿势动作抓拍&amp;nbsp;
  8. Vue+Java+Base64实现条码解析
  9. C# NX二次开发环境搭建
  10. Docker:四、Docker进阶 Windows Docker IIS 部署