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

  1. 使用$*接收脚本所有参数

  2. for循环遍历hosts文件中的ip地址

  3. 通过ssh $host $cmd 实现目的ip命令

  4. eval命令判断并打印命令执行结果

  5. for循环遍历完hosts则脚本运行结束

3、批量分发脚本原理

  1. $1和$2接收参数文件名和分发路径

  2. for循环遍历hosts文件中的ip地址

  3. 通过scp $1 $host:$2实现分发文件到目的主机

  4. eval命令判断并打印命令执行结果

  5. for循环遍历完hosts则脚本运行结束

二、批处理命令脚本


1、创建 /usr/shell/ 目录

mkdir -p /usr/shell/ && cd /usr/shell/

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

touch /usr/shell/all.sh && chmod 777 /usr/shell/all.sh

3、批处理脚本实现代码

vim /usr/shell/all.sh

#!/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、创建批量分发脚本并赋权

touch /usr/shell/scp.sh && chmod 777 /usr/shell/scp.sh

2、定义批量处理的hosts

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

cat /etc/hosts

vim /usr/shell/hosts

172.18.0.2 hadoop01

172.18.0.3 hadoop02

172.18.0.4 hadoop03

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

vim /usr/shell/scp.sh

#!/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 h o s t : host: host:dir”

echo $exec

if eval $exec; then

echo ‘success’

else

echo “fail”

fi

done

echo “----end th executing of the shell script------”

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

Linux shell脚本实现命令批处理和文件批量分发_第1张图片
Linux shell脚本实现命令批处理和文件批量分发_第2张图片

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
[外链图片转存中…(img-UDapAN8W-1725653515875)]
[外链图片转存中…(img-6DOWiwmf-1725653515876)]

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0

你可能感兴趣的:(linux,运维,服务器)