gpt4 book ai didi

linux - bash 脚本 - 循环中的 2 个变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:35 25 4
gpt4 key购买 nike

我有一个包含以下内容的 ip_details.txt 文件;

Peer "ATBBB010.domain.com:1111;transport=tcp" ConnectAddress="10.184.88.29,10.184.88.30" LocalPort="0"
Peer "ATBBB020.domain.com:1111;transport=tcp" ConnectAddress="10.184.88.61,10.184.88.62" LocalPort="0"
Peer "CHBBB010.domain.com:1111;transport=tcp" ConnectAddress="10.161.144.5,10.161.144.6" LocalPort="0"
Peer "CHBBB020.domain.com:1111;transport=tcp" ConnectAddress="10.161.144.21,10.161.144.22" LocalPort="0"
Peer "DABBB010.domain.com:1111;transport=tcp" ConnectAddress="10.160.130.5,10.160.130.6" LocalPort="0"
Peer "DABBB020.domain.com:1111;transport=tcp" ConnectAddress="10.160.130.21,10.160.130.22" LocalPort="0"
Peer "ATCCC010.domain.com:1111;transport=tcp" ConnectAddress="10.199.88.29,10.199.88.30" LocalPort="0"
Peer "ATCCC020.domain.com:1111;transport=tcp" ConnectAddress="10.199.88.61,10.199.88.62" LocalPort="0"
Peer "CHCCC010.domain.com:1111;transport=tcp" ConnectAddress="10.161.155.5,10.161.155.6" LocalPort="0"
Peer "CHCCC020.domain.com:1111;transport=tcp" ConnectAddress="10.161.155.21,10.161.155.22" LocalPort="0"
Peer "DACCC010.domain.com:1111;transport=tcp" ConnectAddress="10.199.130.5,10.199.130.6" LocalPort="0"
Peer "DACCC020.domain.com:1111;transport=tcp" ConnectAddress="10.199.130.21,10.199.130.22" LocalPort="0"

我目前使用这 2 个脚本/命令来 ping 特定类型节点的 IP 地址。

先Ping BBB节点IP(逗号分隔符前的IP);

for i in `cat ip_details.txt | grep BBB | awk '{print $3}' | cut -d= -f2 | cut -d, -f1 | tr -d '[="=]'`; do ping -I eth0 -c 3 $i >> /dev/null ; [ $? != 0 ] && echo $i || echo "Ping to $i Good"; done

Ping BBB节点第二个IP(逗号分隔符后的IP);

for i in `cat ip_details.txt | grep BBB | awk '{print $3}' | cut -d= -f2 | cut -d, -f2 | tr -d '[="=]'`; do ping -I eth0 -c 3 $i >> /dev/null ; [ $? != 0 ] && echo $i || echo "Ping to $i Good"; done

我得到如下;

Ping to 10.184.88.29 Good
Ping to 10.184.88.61 Good
.
.

同样,我为 CCC 节点使用 grep CCC。

我需要一个脚本来按节点类型或两种类型一起 ping 这些 IP 地址,并获得这样的输出;

Ping from <hostname> to ATBBB010 IP1 <ip address> is Good
....
....
....

Ping from <hostname> to ATBBB010 IP2 <ip address> is Good
....
....
....

如果ping不通;

Ping from <hostname> to ATBBB010 IP1 <ip address> failed
.....
.....

Ping from <hostname> to ATBBB010 IP2 <ip address> failed
.....
.....

最佳答案

尝试以下操作:

#!/usr/bin/env bash

msgPrefix="Ping from $HOSTNAME to"
prevNode=
while read node ip; do
[[ "$node" == "$prevNode" ]] || i=1
ping -I eth0 -c 3 "$ip" >/dev/null && status='is good' || status='failed'
echo "$msgPrefix $node IP$i $ip $status"
((++i)); prevNode=$node
done < <(awk -F'"|\\.domain\\.com|,' '{ print $2, $5 }' ip_details.txt)

关于linux - bash 脚本 - 循环中的 2 个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com