前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux shell脚本实现命令批处理和文件批量分发

Linux shell脚本实现命令批处理和文件批量分发

作者头像
静谧星空TEL
发布2022-05-10 14:47:34
4K0
发布2022-05-10 14:47:34
举报

目录

一、批处理脚本介绍

1、批处理脚本介绍

2、批处理命令脚本原理

3、批量分发脚本原理

二、批处理命令脚本

1、创建 /usr/shell/ 目录

2、创建批处理脚本并赋权

3、批处理脚本实现代码

三、批量分发文件脚本

1、创建批量分发脚本并赋权

2、定义批量处理的hosts

2、批量分发文件脚本实现

四、批处理脚本命令

1、批量处理脚本命令

2、批量分发脚本命令

一、批处理脚本介绍

1、批处理脚本介绍

  1. 命令批处理脚本:/usr/shell/all.sh
  2. 文件批量分发脚本:/usr/shell/scp.sh

2、批处理命令脚本原理

  1. 读取/usr/shell/hosts文件中的ip列表
  2. 使用$*接收脚本所有参数
  3. for循环遍历hosts文件中的ip地址
  4. 通过ssh host cmd 实现目的ip命令
  5. eval命令判断并打印命令执行结果
  6. for循环遍历完hosts则脚本运行结束

3、批量分发脚本原理

  1. 1和2接收参数文件名和分发路径
  2. for循环遍历hosts文件中的ip地址
  3. 通过scp 1 host:
  4. eval命令判断并打印命令执行结果
  5. for循环遍历完hosts则脚本运行结束

二、批处理命令脚本

1、创建 /usr/shell/ 目录

代码语言:javascript
复制
mkdir -p /usr/shell/ && cd /usr/shell/

2、创建批处理脚本并赋权

代码语言:javascript
复制
touch /usr/shell/all.sh && chmod 777 /usr/shell/all.sh

3、批处理脚本实现代码

代码语言:javascript
复制
vim /usr/shell/all.sh
代码语言:javascript
复制
#!/bin/bash
echo "------start execyting the shell script------"
# awk 读取hosts文件的第一部分ip地址
hosts=$(cat /usr/shell/hosts | awk '{print $1}')
# 传递的指令(参数)
cmd=$*
# for循环读取文件
for host in  ${hosts[*]}
do
    exec="ssh $host $cmd"
    echo $exec
    if eval $exec; then
        echo 'success'
    else
        echo "fail"
    fi
done
echo "----end th executing of the shell script------"

三、批量分发文件脚本

1、创建批量分发脚本并赋权

代码语言:javascript
复制
touch /usr/shell/scp.sh && chmod 777 /usr/shell/scp.sh

2、定义批量处理的hosts

这里的hosts是批处理代码从需要读取的hosts,想批处理哪台服务器就写哪个host 

代码语言:javascript
复制
cat /etc/hosts
代码语言:javascript
复制
vim /usr/shell/hosts
代码语言:javascript
复制
172.18.0.2 hadoop01
172.18.0.3 hadoop02
172.18.0.4 hadoop03

2、批量分发文件脚本实现

代码语言:javascript
复制
vim /usr/shell/scp.sh
代码语言:javascript
复制
#!/bin/bash
echo "------start execyting the shell script------"
# awk 读取hosts文件的第一部分ip地址
hosts=$(cat /usr/shell/hosts | awk '{print $1}')
# 传递的第一个参数,文件名称
file=$1
# 传递的第二个参数,目录路径
dir=$2
# for循环读取文件
for host in  ${hosts[*]}
do
    exec="scp $file $host:$dir"
    echo $exec
    if eval $exec; then
        echo 'success'
    else
        echo "fail"
    fi
done
echo "----end th executing of the shell script------"

四、批处理脚本命令

1、批量处理脚本命令

语法格式

/usr/shell/all.sh [命令]

语法示例

代码语言:javascript
复制
/usr/shell/all.sh date

2、批量分发脚本命令

语法格式

/usr/shell/scp.sh [当前系统需要copy的文件名] [所有系统需要copy的目的路径]

语法示例 

代码语言:javascript
复制
/usr/shell/scp.sh /home/test.txt /home/root/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、批处理脚本介绍
    • 1、批处理脚本介绍
      • 2、批处理命令脚本原理
        • 3、批量分发脚本原理
        • 二、批处理命令脚本
          • 1、创建 /usr/shell/ 目录
            • 2、创建批处理脚本并赋权
              • 3、批处理脚本实现代码
              • 三、批量分发文件脚本
                • 1、创建批量分发脚本并赋权
                  • 2、定义批量处理的hosts
                    • 2、批量分发文件脚本实现
                    • 四、批处理脚本命令
                      • 1、批量处理脚本命令
                        • 2、批量分发脚本命令
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档