写一个脚本 使16台服务器挂载16个不同ip
时间: 2023-12-13 16:03:48 浏览: 246
以下是一个简单的 Bash 脚本,可以将 16 台服务器分别挂载 16 个不同的 IP 地址:
```bash
#!/bin/bash
# 定义 IP 地址数组
ips=(192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16)
# 循环遍历服务器,挂载 IP 地址
for ((i=0; i<${#ips[@]}; i++)); do
ssh user@server$i "mount -t nfs ${ips[$i]}:/remote/path /local/path"
done
```
你可以将其中的 `user` 和 `server` 替换为你实际的用户名和服务器名,以及将 `/remote/path` 和 `/local/path` 替换为你实际的远程和本地路径。顺便提一下,这个脚本需要在每台服务器上都执行一遍。
相关问题
让这个脚本在一台完成16台挂载
如果你希望只在一台服务器上运行这个脚本,然后自动完成 16 台服务器的挂载,你可以在这台服务器上安装并配置 SSH 公钥认证,这样就可以在脚本中使用 SSH 免密登录其他服务器。
以下是一个修改后的脚本示例:
```bash
#!/bin/bash
# 定义服务器列表
servers=("server1" "server2" "server3" "server4" "server5" "server6" "server7" "server8" "server9" "server10" "server11" "server12" "server13" "server14" "server15" "server16")
# 定义 IP 地址数组
ips=(192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16)
# 循环遍历服务器,挂载 IP 地址
for ((i=0; i<${#servers[@]}; i++)); do
ssh ${servers[$i]} "mount -t nfs ${ips[$i]}:/remote/path /local/path"
done
```
在这个脚本中,我们使用 `servers` 数组来存储服务器名,使用 SSH 免密登录方式连接到其他服务器。如果你还没有设置 SSH 免密登录,请参考相关文档进行配置。需要注意的是,这个脚本需要在具备 SSH 免密登录权限的服务器上运行。
一台服务器挂载一个地址 不可以挂载同一个地址
是的,你说得对。如果你想要在一台服务器上挂载多个目录,你需要确保每个挂载点都是唯一的。
以下是一个修改后的 Bash 脚本示例,用于在一台服务器上挂载多个地址:
```bash
#!/bin/bash
# 定义挂载点数组和 IP 地址数组
mount_points=("/mnt/remote1" "/mnt/remote2" "/mnt/remote3" "/mnt/remote4")
ips=("192.168.1.1" "192.168.1.2" "192.168.1.3" "192.168.1.4")
# 循环遍历挂载点和 IP 地址,挂载远程目录
for ((i=0; i<${#mount_points[@]}; i++)); do
ssh user@server "mount -t nfs ${ips[$i]}:${mount_points[$i]} ${mount_points[$i]}"
done
```
在这个脚本中,我们使用一个数组 `mount_points` 来存储挂载点路径,使用数组 `ips` 来存储远程服务器的 IP 地址。在循环中,我们将每个挂载点和对应的 IP 地址传递给 SSH 命令,挂载远程目录。
需要注意的是,在每个挂载点路径前加上了不同的路径名称,以确保每个挂载点在服务器上的路径是唯一的。如果你想要挂载的目录已经存在于服务器上,请确保使用不同的挂载点路径。
阅读全文