签到成功

知道了

CNDBA社区CNDBA社区

批量传参、位置参数、按需主机执行shell

2022-12-28 14:17 1069 0 原创 shell
作者: QYwang

位置参数
循环IP比较
批量传参

https://www.cndba.cn/QYwang/article/116410

传参文件/root/Need-delete-listhttps://www.cndba.cn/QYwang/article/116410https://www.cndba.cn/QYwang/article/116410

https://www.cndba.cn/QYwang/article/116410
https://www.cndba.cn/QYwang/article/116410
https://www.cndba.cn/QYwang/article/116410

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

脚本二:位置参数执行脚本https://www.cndba.cn/QYwang/article/116410https://www.cndba.cn/QYwang/article/116410

https://www.cndba.cn/QYwang/article/116410
https://www.cndba.cn/QYwang/article/116410

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比较 批量传参 多台按需主机

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
QYwang

QYwang

关注
  • 9
    原创
  • 0
    翻译
  • 0
    转载
  • 0
    评论
  • 访问:15260次
  • 积分:50
  • 等级:注册会员
  • 排名:第43名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ