前言

相较于使用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. 揭秘Karmada百倍集群规模多云基础设施体系

    摘要:本文结合Karmada社区对大规模场景的思考,揭示Karmada稳定支持100个大规模集群.管理超过50万个节点和200万个Pod背后的原理 本文分享自华为云社区<Karmada百倍集群规 ...

  2. 2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

    2022-10-22:以下go语言代码输出什么?A:moonfdd1:B:编译错误:C:运行时 panic. package main import "fmt" func main ...

  3. 2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754。

    2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754.给定一个整数num,判断它是不是某个数的step sum? 福大大 答案2021 ...

  4. 2021-11-01:寻找重复数。给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数

    2021-11-01:寻找重复数.给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设 nums 只有 一个重复的整数 ...

  5. ES 数据没了?谁动了我的数据?

    背景 我们在使用 Elasticsearch 的时候,可能会遇到数据"丢"了的情况.有可能是数据没成功写入 ES 集群,也可能是数据被误删了. 针对数据被误删,有没有好的解决办法呢 ...

  6. AntV L7 快速入门示例

    1. 引言 L7 地理空间数据可视分析引擎是一种基于 WebGL 技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用.L7 引擎支持多种数据源和数据格式,包括 GeoJSON.CSV ...

  7. JUC同步锁原理

    JUC同步锁原理 1.锁的本质 1.什么是锁? ​ 通俗来讲,锁要保证的就是原子性,就是一个代码块不允许多线程同时执行,就是锁.从生活的角度上来说,就比如你要去上厕所,当你在上厕所期间,你会把门锁上, ...

  8. Java类加载原理中为何要设计双亲委派机制

    首先,给大家演示两个示例代码,我们自定义一个与Java核心类库中java.lang.String类名相同的代码: package java.lang; /** * 自定义java.lang.Strin ...

  9. MVC 模式和三层架构

    1. MVC 模式 ‍ MVC 模式和三层架构是一些理论的知识,将来我们使用了它们进行代码开发会让我们代码维护性和扩展性更好. ‍ MVC 是一种分层开发的模式,其中: M:Model,业务模型,处理 ...

  10. NextJS项目的部署以及多环境的实现

    背景 开发了个Next项目,将部署过程记录一下.另外由于项目准备了两个服务器分别作为开发自测的开发环境和交付给客户的生产环境使用:因此也介绍一下NextJS项目中多环境的配置. 项目结构 计划是让Ng ...