playbook与交互式

简介:

假设被管理机器上有一个实验脚本,内容如下:

1
2
3
#/bin/bash
read  -p  "请输入一句话:"  yahoo
echo  $yahoo >>  /root/123 .txt

这个脚本很基础,我们先随便实验一下,如图。

wKiom1frs_zhXk8YAAA3c6vceAI538.png

现在来到ansible主机,写一个简单的yaml来看一下是否会有交互的环节,yaml如下:

1
2
3
4
5
---
- hosts: all
   tasks:
         - name: 启动 test .sh
           shell: sh  /root/test .sh

启动这个playbook,效果如图:

wKiom1frtbPSBwTtAADkh4owzRk503.jpg

可见,根本就没有让我们填写“请输入一句话”的机会。而返回到被控制端,打开123.tst看见的效果是这样的:

wKiom1frthGwm9EDAAAecm6MImc271.png

可见ansible-playbook会默认往交互环节里输入一个回车,着尼玛就很坑了啊,因为大批量机器需要一起执行一个有交互环节的脚本是一个很常见的事儿,遇到这种问题肿么办?


答曰,提前把“那句话写好”,比如我们要输入的那句话是“快使用双截棍,哼哼哈兮”,那么把playbook改成这样:

1
2
3
4
5
---
- hosts: all
   tasks:
         - name: 启动 test .sh
           shell:  echo  "快使用双截棍,哼哼哈兮"  |  sh  /root/test .sh

最简单粗暴的方法就是用shell的思维去解决这个问题。效果如图:

wKiom1frtwCglozYAAAotpuOSuU961.png


那么这是交互一次的情况,如果是交互多次的情况怎么办?比如现在是这样的一个脚本:

1
2
3
4
5
6
7
#/bin/bash
read  -p  "输入一个球员名字:"  yahoo
read  -p  "输入他的球队:"  alibaba
read  -p  "输入他的球衣号码以及场上位置:"  youku
echo  $yahoo >>  /root/123 .txt
echo  $alibaba >>  /root/123 .txt
echo  $youku >>  /root/123 .txt

这样还能一次性输入吗?很多人认为可以在playbook里输入 shell:echo "dirk\nMAVS\n41+pf" | sh /root/test.sh。其实这样是不对的,这样的输入效果只能是第一行是"dirknMAVSn41+pf",然后后两行是空的。


那么这样的情况怎么办?


要么先把东西写好,比如有一个abc.txt,

1
2
3
"dirk"
"mavs"
"41PF"

然后再把playbook改成这样:

1
2
3
4
5
---
- hosts: all
   tasks:
         - name: 启动 test .sh
           shell:  sh  /root/test .sh <  /root/abc .txt

执行一下看效果:

wKiom1fruk-CxNkEAAAPdog2zTE037.png


要么就是shell:echo -e "dirk\nMAVS\n41+pf" | sh /root/test.sh。


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1857505


相关文章
|
运维 监控 Cloud Native
|
7月前
|
人工智能 开发工具 开发者
Codex 的两种使用方式:为什么很多人一开始就用错了?
Codex 有两种模式:命令模式(一次性调用,适合脚本/快速任务)和交互模式(类AI员工,支持上下文、连续迭代与工程化操作)。新手常混淆用法,实则前者是“调用AI”,后者才是“雇佣AI”。推荐日常开发优先使用交互模式。
4287 7
|
6月前
|
存储 人工智能 安全
AI 智能体的标准开发流程
AI智能体开发强调自主性与闭环控制,2026年已普遍采用ADLC架构。涵盖目标建模、工具集成、记忆设计、多智能体编排、安全评估及持续进化六大环节,实现可控、可信、可进化的“数字员工”。
|
9月前
|
人工智能 数据中心
从技术热度到产品心智,豆包为何全面反超 DeepSeek?
AIWW数据显示,2025年12月起,豆包全网关注度稳定超越DeepSeek,且领先优势持续扩大。相较DeepSeek的技术驱动路径,豆包依托字节流量、多模态升级和任务执行能力,实现产品化突破,反映用户心智与行业格局的深层变迁。
1167 1
|
域名解析 弹性计算 网络协议
阿里云ipv6设置,免费将ipv4网站升级为ipv6
阿里云ipv6设置,免费将ipv4网站升级为ipv6,网站ipv6设置
3451 0
|
Linux
CentOS 7 安装WireShark,桌面版
CentOS 7 安装WireShark,桌面版
1817 0
|
关系型数据库 MySQL 网络安全
DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)
“Access denied for user ''@'ip' (using password: YES)”错误通常与MySQL用户权限配置或网络设置有关。通过检查并正确配置用户名和密码、用户权限、MySQL配置文件及防火墙设置,可以有效解决此问题。希望本文能帮助您成功连接MySQL数据库。
3882 4
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
2109 0
|
安全 Linux Shell
SSH服务器拒绝密码登录的解决方法
SSH服务器拒绝密码登录的解决方法
6040 2
|
人工智能 安全 数据安全/隐私保护
真香,一分钟N个谷歌邮箱注册成功,抓紧上车
真香,一分钟N个谷歌邮箱注册成功,抓紧上车

热门文章

最新文章