首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash数组从文件循环IP地址

使用bash数组从文件循环IP地址
EN

Stack Overflow用户
提问于 2021-11-08 02:41:25
回答 1查看 787关注 0票数 1

我有一个文件,其中我给出了所有的IP地址。该文件如下所示:

代码语言:javascript
复制
[asad.javed@tarts16 ~]#cat file.txt
10.171.0.201
10.171.0.202
10.171.0.203
10.171.0.204
10.171.0.205
10.171.0.206
10.171.0.207
10.171.0.208

我一直试图通过以下操作循环IP地址:

代码语言:javascript
复制
launch_sipp () {
        readarray -t sipps < file.txt
        for i in "${!sipps[@]}";do
                ip1=(${sipps[i]})
                echo $ip1
                sip=(${i[@]})
                echo $sip
        done

但是,当我试图访问数组时,我只得到最后一个IP地址,即10.171.0.208。这就是我试图访问同一个函数launch_sipp()的方式

代码语言:javascript
复制
local sipp=$1
echo $sipp
Ip=(${ip1[*]})
echo $Ip

目前,我在同一个脚本中有IP地址,还有其他正在使用这些IP的功能:

代码语言:javascript
复制
launch_tarts () {
        local tart=$1
        local ip=${ip[tart]}

        echo "    ----  Launching Tart $1  ----  "
        sshpass -p "tart123" ssh -Y -X -L 5900:$ip:5901 tarts@$ip <<EOF1
        export DISPLAY=:1
        gnome-terminal -e "bash -c \"pwd; cd /home/tarts; pwd; ./launch_tarts.sh exec bash\""
        exit
EOF1
}

kill_tarts () {
        local tart=$1
        local ip=${ip[tart]}

        echo "    ----  Killing Tart $1  ----   "
        sshpass -p "tart123"  ssh -tt -o StrictHostKeyChecking=no tarts@$ip <<EOF1
        . ./tartsenvironfile.8.1.1.0
        nohup yes | kill_tarts mcgdrv &
        nohup yes | kill_tarts server &
        pkill -f traf
        pkill -f terminal-server
        exit
EOF1
}

ip[1]=10.171.0.10
ip[2]=10.171.0.11
ip[3]=10.171.0.12
ip[4]=10.171.0.13
ip[5]=10.171.0.14

case $1 in
        kill) function=kill_tarts;;
        launch) function=launch_tarts;;
        *) exit 1;;
esac

shift

for ((tart=1; tart<=$1; tart++)); do
       ($function $tart) &
       ips=(${ip[tart]})
       tarts+=(${tart[@]})
done
wait

如何将不同的I列表用于为文件创建的不同用途的函数?

EN

回答 1

Stack Overflow用户

发布于 2021-11-08 16:06:20

纯巴什:

代码语言:javascript
复制
#!/bin/bash
while read ip; do
    echo "$ip"
    # ...
done < file.txt

或平行地:

代码语言:javascript
复制
#!/bin/bash
while read ip; do
    (
        sleep "0.$RANDOM" # random execution time
        echo "$ip"
        # ...
    ) &
done < file.txt
wait
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69878165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档