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

Linux bash脚本-循环中的2个变量,linux,bash,awk,Linux,Bash,Awk,我有一个文件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 "CHBBB01

我有一个文件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"
Ping to 10.184.88.29 Good
Ping to 10.184.88.61 Good
.
.
我目前使用这两个脚本/命令ping特定类型节点的IP地址

Ping BBB节点的第一个IP(逗号分隔符之前的IP)

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

我得到如下结果:

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"
Ping to 10.184.88.29 Good
Ping to 10.184.88.61 Good
.
.
类似地,我为CCC节点grep CCC

我需要一个脚本,将每个节点类型或两种类型的IP地址ping在一起,并获得如下输出:

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

Ping from <hostname> to ATBBB010 IP2 <ip address> is Good 
....
....
....
从Ping到ATBBB010 IP1很好
....
....
....
从IP2到ATBBB010的Ping是好的
....
....
....
如果ping失败

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

Ping from <hostname> to ATBBB010 IP2 <ip address> failed
.....
.....
从Ping到ATBBB010 IP1失败
.....
.....
从Ping到ATBBB010 IP2失败
.....
.....
尝试以下操作:

#!/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)
#/usr/bin/env bash
msgPrefix=“从$HOSTNAME Ping到”
前置节点=
同时读取节点ip;做
[[“$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

它不起作用。我得到
code
[root@Linux1temp]#./testPing awk:warning:escape sequence
\.被视为普通的
'用法:ping[-LRUbdfnqrvVaA][c count][i interval][w deadline][p pattern][s packetsize][t ttl][i接口或地址][M mtu discovery hint][s sndbuf t timestamp选项][-Q tos][hop1…]从Linux1到ATBBB010 IP1 10.184.88.29的目标Ping失败用法:Ping[-LRUbdfnqrvVaA][c计数][i间隔][w截止日期][p模式][s包大小][t ttl][i接口或地址]“
code
Re
awk
警告:将
-F
选项参数中的
实例加倍,就像我刚才在更新中所做的那样。Re
ping
失败:我只是忘记了IP地址操作数:append
“$IP”
,就像我刚才在更新中所做的那样。如果答案解决了您的问题,请通过单击大复选标记接受它(✓) 在它旁边,也可以选择向上投票(向上投票需要至少15个信誉点)。如果您发现其他答案有帮助,请向上投票。接受和向上投票有助于未来的读者。请参阅。如果您的问题尚未完全回答,请提供反馈。