位置参数
循环IP比较
批量传参
传参文件/root/Need-delete-list
192.168.1.1:43928:test:/root/test1:/root/test2
192.168.1.2:43928:test1:/root/test1:/root1/test2
.....
脚本一:批量传参,按参数选择主机,一个一个参数循环执行
本脚本作用把批量传参,循环切割个一个个参数,传给特定主机,执行脚本二
vim /root/clean-all.sh
#!/bin/bash
#V_IP ip
#V_PORT 端口
#V_NAME 名字
#V_DATA 数据安装目录
#V_DIR 软件安装目录
for LIST in `cat /root/Need-delete-list` ##循环截取/root/Need-delete-list每一行
do
echo $LIST > /root/tmp-list ##循环截取/root/Need-delete-list每一行内容覆盖输入 /root/tmp-list
V_IP=`cut /root/tmp-list -d : -f 1` ##循环获取IP
V_PORT=`cut /root/tmp-list -d : -f 2` ##循环获取端口
V_NAME =`cut /root/tmp-list -d : -f 3` ##循环获取名字
V_DATA=`cut /root/tmp-list -d : -f 4` ##循环获取数据安装目录
V_DIR=`cut /root/tmp-list -d : -f 5` ##循环获取软件安装目录
for ip_list in `cat /root/iplist20221207` #判断Need-delete-list中IP输入是否正确
do
if [ $ip_list = $V_IP ] #Need-delete-list中IP在iplist20221207中
then
echo "$V_NAME $V_PORT $V_DATA $V_DIR" >/root/clean_list ##生成clean-one.sh的传参文件clean_list
scp /root/clean_list $V_IP:/root &>/dev/null
ssh $V_IP "cd /root; chmod 744 clean-one.sh; ./clean-one.sh ` cat clean_list` " &> /dev/null
###执行./clean-one.sh 以 `cat clean_list`
rm -rf /root/clean_list
sleep 1
break ###V_IP从上外下比对iplist20221207文件中IP,当相等了,退出本次循环,不再对比
##类如从上到下192.168.1.1、192.168.1.2、192.168.1.3 ,当V_IP=192.168.1.2,从上外下对比,当存在“break” ,对比了192.168.1.2=192.168.1.2,就不在对比192.168.1.3 ?= 192.168.1.2。反之会比较。
elif [ $ip_list = `tail -1 /root/iplist20221207` ] ##单次循环比较取值取到最后一个
then
echo "$V_IP input ERROR!!!!! in /root/Need-delete-list "
else
echo “xxx” &> /dev/null ##其他情况不需要输出
fi
done
sleep 1
done
脚本二:位置参数执行脚本
vim /root/clean.sh
#!/bin/bash
V_NAME=$1
V_PORT=$2
V_DATA =$3
V_DIR=$4
echo $V_NAME
echo $V_PORT
echo $V_DATA
echo $V_DIR
版权声明:本文为博主原创文章,未经博主允许不得转载。
位置参数 循环IP比较 批量传参 多台按需主机
- 上一篇:多台主机批量执行操作
- 下一篇:修改shell中变量传参默认分割符(IFS)



