简介

cowsay是一款有趣的ascii图案输出工具,通过它可以方便的输出一头说话的牛牛(马?):

# cowsay hello frankming
_________________
< hello frankming >
-----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| || # cowsay work, work. ready to work.
____________________________
< work, work. ready to work. >
----------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

用法

简约而不简单,这款工具的可配置性相当高,cowsay不光有牛,通过cowsay -l命令能查到所有可选的动物,随后通过-f参数指定想要的动物,比如说不想要牛了,换成羊:

# cowsay -f sheep ready to work.
________________
< ready to work. >
----------------
\
\
__
UooU\.'@@@@@@`.
\__/(@@@@@@@@@@)
(@@@@@@@@)
`YY~~~~YY'
|| ||

-e eye_string-T tongue_string能够指定牛的眼睛和嘴巴,不过限制前两个字符生效:

# cowsay -e xx -T 'L|' ready to work.
________________
< ready to work. >
----------------
\ ^__^
\ (xx)\_______
(__)\ )\/\
L| ||----w |
|| ||

-bdgpstwy 则是一系列眼睛/嘴巴的预设定值,使牛变成borg(赛博牛)、dead(死牛)、greedy(贪婪牛)、paranoia(妄想牛)、stoned(石化牛)、tired(累牛)、wired(精神牛)、youthful(年轻牛)。例如死牛:

# cowsay -d work to die.
______________
< work to die. >
--------------
\ ^__^
\ (xx)\_______
(__)\ )\/\
U ||----w |
|| ||

-W column则是设置一行所能包含字符数的最大值,默认为40个字符,如果超过设定值就会换行:

# cowsay -W 6 ready to work.
_______
/ ready \
| to |
\ work. /
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

最后,-n参数表示不转义换行符等特殊字符,注意该参数后面禁止追加任何其他参数,只能使用标准输入模式输入“话语”,最后使用Ctrl^d表示结束:

# cowsay -n
ready
to
work.
# 输入Ctrl^d
_______
/ ready \
| to |
\ work. /
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

和ansible结合

比较神奇的是,cowsay工具能够和ansible无缝衔接,在安装cowsay后,不修改任何东西,ansible中每个task的输出都变成牛说的话:

# ansible-playbook -i inventory/hosts.ini playbooks/setup.yml
< TASK [pre_deploy : set fact myIp] >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| || ok: [localhost]
_________________________________________
< TASK [pre_deploy : set fact masterNode] >
-----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| || ok: [localhost]
___________________________________
< TASK [pre_deploy : debug servers] >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

查一查ansible配置,发现有几个配置是关于cowsay的,可谓是官方钦定了:

# cowsay模板白名单,设为空表示启用所有所有cowsay模板
ANSIBLE_COW_ACCEPTLIST=[]
# cowsay程序路径
ANSIBLE_COW_PATH=
# cowsay模板,默认为default牛,random表示随机,或指定一个模板
ANSIBLE_COW_SELECTION=
# 是否禁用cowsay,默认为false
ANSIBLE_NOCOWS=

值得一提的是ANSIBLE_NOCOWS配置项,ansible官方的说明如下,其中的why和i_am_no_fun,意思是禁用cowsay的都是无趣的人,令人莞尔一笑。

# ansible-config list|less
ANSIBLE_NOCOWS:
default: false
description: If you have cowsay installed but want to avoid the 'cows' (why????),
use this.
env:
- name: ANSIBLE_NOCOWS
ini:
- key: nocows
section: defaults
name: Suppress cowsay output
type: boolean
yaml:
key: display.i_am_no_fun

最后,看看这个似曾相识的界面。

参考文档

cowsay(1): configurable speaking/thinking cow - Linux man page (die.net)

Cowsay and Ansible | michaelheap.com

cowsay和ansible的更多相关文章

  1. ansible自动化运维

    ansible 系统架构 ansible简介 ansible是新出现的自动化运维工具,ansible是一个配置管理和应用部署工具,基于Python开发,集合了众多运维工具(puppet.cfengin ...

  2. ansible配置文件详解

    # ansible配置文件配置 配置项介绍 , 配置文件ansible.cfg, 运行playbook时,默认时在yaml文件所在路径寻找,然后再去/etc/ansible/下寻找 [defaults ...

  3. 初探ansible

    Ansible 基于ssh的自动化运维工具 ansible 配置文件详解 ansible.cfg 文件 文件默认放置在/etc/ansible下,ansible读取配置文件的顺序是: 当前命令执行目录 ...

  4. w9 Ansible批量管理与维护

    Ansible是2013年推出的一种通用自动化工具,可用于配置管理或工作流程自动化.配置管理是一种“基础架构代码”实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行什么守护进程.工作流 ...

  5. ansible环境部署及常用模块总结 - 运维笔记

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  6. Ansible playbooks

    Playbook是Ansible的配置,部署和编排语言. 他们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤. 如果Ansible modules是您workshop的工具,则playb ...

  7. Ansible配置文件

    官方配置文件文档 Ansible安装完成之后默认配置文件为:/etc/asnible/ansible.cfg Ansible配置文件内容: cat ansible.cfg # config file ...

  8. Ansible 小手册系列 二十(经常遇到的问题)

    (1). 怎么为任务设置环境变量? - name: set environment shell: echo $PATH $SOME >> /tmp/a.txt environment: P ...

  9. 2、Ansible配置文件详解

    0.配置文件 两个核心文件:ansible.cfg和hosts文件,默认都存放在/etc/ansible目录下. ansible.cfg:主要设置一些ansible初始化的信息,比如日志存放路径.模块 ...

随机推荐

  1. 【MySQL】从入门到精通6-MySQL数据类型与官方文档

    上期:[MySQL]从入门到精通5-一对多-外键 这个是官方文档链接,是世界上最全面的MySQL教学了,所有问题都可以在这里找到解决方法. https://dev.mysql.com/doc/ htt ...

  2. django_day11_项目相关

    django_day11_项目相关 新增和编辑 路由 url(r'^category_add/$', views.category_change, name='category_add'), url( ...

  3. django 通过MQTT连接阿里云

    Django MQTT 连接阿里云 目录 Django MQTT 连接阿里云 目录 一.安装库 1.安装Python对接mqtt协议库,paho-mqtt 二. 设备认证,一机一密型接入 三.问题 1 ...

  4. JAVA反序列化漏洞修复解决方法

    MyObject类建立了Serializable模块,而且重新写过了readObject()变量,仅有建立了Serializable模块的类的目标才能够被实例化,沒有建立此模块的类将无法使他们的任意状 ...

  5. 基于 Gitea 服务端渲染的 Jupyter Notebooks

    本指南将向您展示如何通过配置外部渲染器来使 Gitea 呈现 Jupyter Notebooks.当然,你还可以根据本指南来为你的 Gitea 实例配置其他类型的文档渲染器,甚至是二进制文件!相信Gi ...

  6. Eclipse配置Tomcat搭建java Web (JSP)开发环境

    配置Tomcat服务 1.打开窗口-首选项-Server-Runtiome Environments 2.点击ADD,选择对应的Tomcat版本,点击下一步 路径选择Tomcat解压后的文件夹目录,点 ...

  7. vue2.x引入threejs

    @ 目录 vue2.x引入threejs npm安装 使用指定版本: 其他插件 实例 强调 vue2.x引入threejs npm安装 npm install three 使用指定版本: npm in ...

  8. 如何0到1构建DevOps?

    从0到1构建DevOps,首先得弄清楚这个DevOps的受众群体,它的用途到底是什么,解决什么问题,比如Android Studio是为了解决Android应用的开发,3UCS xPlus是为了解决应 ...

  9. Linux+Proton without Steam玩红警3指南

    首先你需要Proton5.13 without Steam,使用说明和下载链接看这里https://www.cnblogs.com/tubentubentu/p/16716612.html 然后在/e ...

  10. vulnhub靶场之THE PLANETS: EARTH

    准备: 攻击机:虚拟机kali.本机win10. 靶机:THE PLANETS: EARTH,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnh ...