限制ansible控制台输出中的行长度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了限制ansible控制台输出中的行长度相关的知识,希望对你有一定的参考价值。
在控制台中运行ansible-playbook
时,可以调整控制台窗口的大小以限制控制台输出的行长度。 ansible使用fcntl.ioctl
获取TIOCGWINSZ
,当它找到tty os.isatty(0)
例如:(复制自/ansible/utils/display.py)
def _set_column_width(self):
if os.isatty(0):
tty_size = unpack('HHHH',
fcntl.ioctl(0, TIOCGWINSZ, pack('HHHH', 0, 0, 0, 0)))[1]
else:
tty_size = 0
self.columns = max(79, tty_size - 1)
像man
这样的工具提供了一个环境变量MANWIDTH
来提供这个,而无需调整控制台窗口的大小。
如何在不调整控制台窗口大小的情况下调整控制台输出的大小?
答案
检查ansilbes os.isatty(0)
检查stdin是否打开,所以解决方案只是重定向stdin,当调用命令时,例如,我做了:
ansible-playbook -v -i dev --check --diff playbook.yml 0</dev/null
注意:这不限制模块的输出,但这是另一个故事,我想。
编辑:在函数_set_column_width
中可以看到,当没有tty(stdin关闭)时,输出默认为79 char行长度。
以上是关于限制ansible控制台输出中的行长度的主要内容,如果未能解决你的问题,请参考以下文章
CCCC L1-039. 古风排版图形输出/循环控制行列/模拟/细节