远程ssh多个主机使用使用上一步的脚本实现方法
时间: 2024-03-23 07:37:32 浏览: 84
shell脚本实现ssh-copy-id批量自动发送公钥到远程主机
可以使用一个包含多个主机IP地址的文本文件,然后在shell脚本中使用循环来遍历每个IP地址并进行ping测试和判断。具体实现步骤如下:
1. 创建一个文本文件,例如ip_list.txt,其中包含多个主机IP地址,每行一个:
```
192.168.1.1
192.168.1.2
192.168.1.3
```
这里以三个IP地址为例。
2. 创建一个shell脚本,例如ping_test.sh,用于执行ping测试和判断:
```
#!/bin/bash
while read ip
do
ping -c 5 $ip > result.txt
packet_loss=$(grep -oP '\d+(?=% packet loss)' result.txt)
if [ $packet_loss -eq 0 ]
then
echo "$ip: 目标主机通"
else
echo "$ip: 目标主机不通"
fi
done < ip_list.txt
```
这里使用while循环来遍历ip_list.txt文件中的每个IP地址,并执行ping测试和判断。在循环中,首先使用ping命令进行测试,并将测试结果保存到result.txt文件中。然后,使用grep命令提取packet loss信息,并将其存储到变量packet_loss中。最后,根据packet_loss判断目标主机是否通,并输出结果。
3. 在本地机器上使用ssh命令连接到远程主机,并执行ping_test.sh脚本:
```
ssh user@remote_host 'bash -s' < ping_test.sh
```
这里需要将user和remote_host替换为实际的用户名和远程主机IP地址。
完整的脚本如下所示:
```
#!/bin/bash
while read ip
do
ping -c 5 $ip > result.txt
packet_loss=$(grep -oP '\d+(?=% packet loss)' result.txt)
if [ $packet_loss -eq 0 ]
then
echo "$ip: 目标主机通"
else
echo "$ip: 目标主机不通"
fi
done < ip_list.txt
```
需要注意的是,这里需要确保本地机器可以通过ssh连接到远程主机,并且在远程主机上安装了必要的软件和依赖库(例如grep命令)。同时,也需要根据具体情况进行修改和调整。
阅读全文