当前位置: 首页 > news >正文

wget批量调用shell脚本

前言

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

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

IP服务说明
192.168.0.20nginx提供http服务
192.168.0.20ansibleansible控制节点
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'

相关文章:

  • Missing Semester计算机教育中缺失的一课:Vim
  • 【力扣 简单 C】141. 环形链表
  • LeetCode 第72题:编辑距离(巧妙的动态规划方法)
  • MCP前后端技术研究和应用实践
  • 中科院医学1区Top:解放军医学院利用多组学+网络药理学+转录组测序联合解析苗药七角生白胶囊抗白细胞减少症的分子机制
  • DataHub 架构设计与核心工作原理
  • Python----OpenCV(图像的绘制——绘制直线,绘制矩形,绘制圆形,绘制多边形)
  • win11修改DNS
  • python基础与数据类型
  • 【和春笋一起学C++】(十九)C++函数新特性——对象的引用作为函数参数
  • springAI 大模型应用开发
  • WooCommerce独立站商城的最大优势
  • PCB设计杂谈之一
  • C# 中的Async 和 Await 的用法详解
  • Python应用八股文
  • Java大模型开发入门 (10/15):连接外部世界(下) - 端到端构建完整的RAG问答系统
  • 高效同步Linux服务器文件技巧
  • 计算机网络-自顶向下—第二章应用层-重点复习笔记
  • vue3+ts实现全屏效果
  • 力扣面试150题--添加与搜索单词 - 数据结构设计
  • 如何用织梦做网站详细教程/抖音推广佣金平台
  • 北京江苏省住房和城乡建设厅网站/seo排名推广
  • 海外网站开发/武汉seo外包平台
  • web程序设计 asp.net实用网站开发/社群营销策略有哪些
  • wordpress无法更改语言/北京网站优化步骤
  • 定州市住房和城乡建设局 网站/怎么理解搜索引擎优化