前言

相较于使用playbook,个人更习惯于编写shell脚本。如果需要多台服务器执行某一任务,可以将脚本放在某个http服务目录下,比如nginx,然后通过ansible的shell模块让服务器通过wget执行远程脚本。

本文以 ansible + nginx + shell脚本为例。

IP 服务 说明
192.168.0.20 nginx 提供http服务
192.168.0.20 ansible ansible控制节点
192.168.0.21 目标主机

nginx配置

nginx的配置比较简单,大致如下,根据自身所需修改配置。

server {
listen 80;
server_name 192.168.0.20;
charset utf-8;
location /res {
alias /home/res;
autoindex on;
autoindex_format html;
autoindex_exact_size off;
autoindex_localtime on;
}
}

shell脚本

/home/res目录下随便写个shell脚本。为了避免有些服务器的bash路径不是/bin/bash,这里通过环境变量引用bash解释器。

#!/usr/bin/env bash

df -h
  • 测试
# q后面是大写字母O, 不是数字0
sh -c "$(wget http://192.168.0.20/res/test.sh -qO -)"

正常情况下会输出当前服务器的分区存储情况。

ansible调用

ansible all -m shell -a 'sh -c "$(wget http://192.168.0.20/res/test.sh -qO -)"'

其它

  • 如果没有nginx,也可以用python的标准库临时创建一个http服务,毕竟绝大部分linux发行版都内置python。比如:
# 在脚本文件所在目录创建http服务, 指定12345端口
# 如果使用python 2, 命令为 python -m SimpleHTTPServer 12345
python3 -m http.server 12345
ansible all -m shell -a 'sh -c "$(wget http://192.168.0.20:12345/test.sh -qO -)"'
  • 才发现ansible还有个执行脚本的script模块,主要作用就是把管理节点的脚本分发到被管理节点然后执行。具体帮助文档可见ansible-doc script。示例如下:
# /tmp/test.sh 是管理节点上的shell脚本
ansible all -m script -a '/tmp/test.sh'

[ansible]wget批量调用shell脚本的更多相关文章

  1. 【原】Gradle调用shell脚本和python脚本并传参

    最近由于项目自动化构建的需要,研究了下gradle调用脚本并传参的用法,在此作个总结. Pre build.gradle中定义了$jenkinsJobName $jenkinsBuild两个Jenki ...

  2. 调用shell脚本,IP处理

    //调用shell脚本,IP处理 package com.letv.sdns.web.utils; import org.slf4j.Logger; import org.slf4j.LoggerFa ...

  3. java classpath批量设置shell脚本

    java classpath批量设置shell脚本   注意:linux bash jar文件之间的分隔符是':'    export JAR_HOME=path to directory which ...

  4. C程序调用shell脚本共有三种方法

    C程序调用shell脚本共有三种法子 :system().popen().exec系列函数call_exec1.c ,内容为:system() 不用你自己去产生进程,它已经封装了,直接加入自己的命令e ...

  5. Java 调用 shell 脚本详解

    这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...

  6. python调用shell脚本时需要切换目录

    最近遇到了一个问题,就是python代码调用shell脚本时,发现输入输出的文件,总是和自己预想的有偏差,但是单独在linux下执行命令的时候,却没有错误.后来发现是相对路径的问题,因为执行pytho ...

  7. python调用shell脚本

    # coding=utf-8   //设置文本格式import os            //导入os方法print('hello')n=os.system('/home/csliyb/kjqy_x ...

  8. Centos下使用php调用shell脚本

    我们在实际项目中或许会遇到php调用shell脚本的需求.下面就用简单案例在Centos环境下实践 准备 查看php.ini中配置是否打开安全模式 //php.ini safe_mode = //这个 ...

  9. Android应用程序如何调用shell脚本(一)

    转自: Android应用程序如何调用shell脚本(一) 一般来说, Android 下的应用程序可以“直接”得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限 ...

  10. 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码传参数 ...

随机推荐

  1. STL------sort三种比较算子定义

    sort的三种比较算子的定义方式 例:一道细碎的细节模拟题: http://newoj.acmclub.cn/contests/1258/problem/3 1932: 2018蓝桥杯培训-STL应用 ...

  2. 文心一言 VS chatgpt (1)-- 算法导论1.1

    1.给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子. 文心一言: 现实生活中需要排序的一个例子: 在一个商店里,顾客需要购买一些商品.他们需要按照价格从低到高排序,以便更容易地找 ...

  3. 2022-07-13:给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。 每一步,你可以从下标 i 跳到下标 i + 1 、i - 1 或者 j : i + 1 需满足:i +

    2022-07-13:给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0). 每一步,你可以从下标 i 跳到下标 i + 1 .i - 1 或者 j : i + 1 需满足:i + ...

  4. Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

    本篇参考:https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_sale ...

  5. ICLR 2017-RL2: Fast Reinforcement Learning via Slow Reinforcement Learning

    Key GRUs+TRPO+GAE 解决的主要问题 现有RL方法需要手动设置特定领域的算法 DRL学习的过程需要大量的试验牺牲了高样本复杂度(每个task需要数万次经验),相比人来说,这是由于缺乏先验 ...

  6. boot-admin 项目数据库缺省字段设计之最佳实践

    数据库(Database)中的缺省字段(也称为默认字段),就是在一般情况下,每个数据表(Table)必须包含的字段(Field),这类字段用于满足特定的数据需求,字段值的填充或更改一般遵照一定的逻辑要 ...

  7. Java网络编程----通过实现简易聊天工具来聊聊NIO

    前文我们说过了BIO,今天我们聊聊NIO.NIO 是什么?NIO官方解释它为New lO,由于其特性我们也称之为,Non-Blocking IO.这是jdk1.4之后新增的一套IO标准.为什么要用NI ...

  8. 生成式预训练Transformer在机器翻译中的应用与挑战

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 6. 结论与展望 机器翻译是人工智能领域的重要应用之一,而生成式预训练Transforme ...

  9. 前端Vue自定义精美悬浮菜单按钮fab button 可设置按钮背景颜色 菜单按钮展开条目

    前端Vue自定义精美悬浮菜单按钮fab button 可设置按钮背景颜色 菜单按钮展开条目,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugi ...

  10. HCL实验:4.同一vlan位于不同交换机上的通信

    拓扑图 SW1配置 SW2配置 SW3配置 VLAN 1 PC1 PING PC5 VLAN 2 PC 2 PING PC 6 VLAN 3 PC4 PING PC8 怀疑是模拟器的问题---- 不知 ...