暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

5、shell模块

761

相信在上一篇文章中,大家都会使用command模块批量在远程主机上执行命令了,这里讲到的shell模块功能与command模块使用方法类似,有很多刚开始学习的小伙伴就开始有疑问了,既然都差不多,何必再多学一个呢?在此,我们通过一个列子来说明为什么有了command模块还需要shell模块。
栗子1:使用ansible查看磁盘的根目录大小。
如下:执行df-h正常

[root@myserver ~]# ansible test -m command -a 'df -h' 139.198.39.28 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/vda1 50G 13G 34G 28% / devtmpfs 909M 0 909M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 105M 815M 12% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0
复制

但是,只需要根目录,使用管道进行过滤时

[root@myserver ~]# ansible test -m command -a 'df -h|grep /' 139.198.39.28 | FAILED | rc=1 >> df: invalid option -- '|' Try 'df --help' for more information.non-zero return code
复制

栗子2:查看远程主机/data/mysql/目录下以mysql开头的文件

[root@myserver ~]# ansible test -m command -a 'ls -al /data/mysql/mysql*' 139.198.39.28 | FAILED | rc=2 >> ls: cannot access /data/mysql/mysql*: No such file or directorynon-zero return code
复制

如果使用shell模块查看

[root@myserver ~]# ansible test -m shell -a 'ls -al /data/mysql/mysql*' 139.198.39.28 | CHANGED | rc=0 >> -rw-r----- 1 mysql mysql 180 Feb 17 16:23 /data/mysql/mysql-bin.000001 -rw-r----- 1 mysql mysql 499 Feb 17 16:59 /data/mysql/mysql-bin.000002 -rw-r----- 1 mysql mysql 220 Feb 17 17:11 /data/mysql/mysql-bin.000003 -rw-r----- 1 mysql mysql 220 Feb 17 17:13 /data/mysql/mysql-bin.000004 -rw-r----- 1 mysql mysql 220 Feb 17 17:16 /data/mysql/mysql-bin.000005 -rw-r----- 1 mysql mysql 220 Feb 17 21:59 /data/mysql/mysql-bin.000006 -rw-r----- 1 mysql mysql 220 Feb 17 22:00 /data/mysql/mysql-bin.000007 -rw-r----- 1 mysql mysql 220 Feb 17 22:15 /data/mysql/mysql-bin.000008 -rw-r----- 1 mysql mysql 220 Feb 18 12:34 /data/mysql/mysql-bin.000009 -rw-r----- 1 mysql mysql 244 Feb 19 11:40 /data/mysql/mysql-bin.000010 -rw-r----- 1 mysql mysql 1167 Feb 22 17:02 /data/mysql/mysql-bin.000011 -rw-r----- 1 mysql mysql 197 Feb 24 11:32 /data/mysql/mysql-bin.000012 -rw-r----- 1 mysql mysql 348 Feb 24 11:32 /data/mysql/mysql-bin.index -rw-r----- 1 mysql mysql 171 Feb 17 16:53 /data/mysql/mysqld-auto.cnf -rw-r----- 1 mysql mysql 25165824 Feb 24 11:32 /data/mysql/mysql.ibd
复制

完美显示。
使用command模块不能显示的原因是因为command模块不支持/,*,&等特殊符号,学完这个模块后,用shell模块代替command吧,因为shell模块比command更好,当然,需要将shell模块修改为默认模块,修改/etc/ansible/ansible.cfg文件的module_name选项,如:

module_name = shell
复制

测试

[root@myserver ~]# ansible test -a 'df -h |grep /' 139.198.39.28 | CHANGED | rc=0 >> /dev/vda1 50G 13G 34G 28% / devtmpfs 909M 0 909M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 105M 815M 12% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0
复制

此时,shell已经是默认模块了。赶紧动手试试吧~~~

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论