写一个批量获取主机信息的shell脚本
时间: 2023-10-18 11:14:33 浏览: 46
好的,这个问题可以回答。以下是一个简单的批量获取主机信息的bash脚本:
```bash
#!/bin/bash
# Hosts to get info from
hosts=(
"host1.example.com"
"host2.example.com"
"host3.example.com"
)
# Loop through each host and get info
for host in "${hosts[@]}"
do
echo "Getting info for $host..."
ssh "$host" "uname -a; uptime; df -h"
done
```
这个脚本会连接到每个主机,并运行一些常见的命令(uname、uptime、df),然后打印输出。你可以根据你的需要修改这个脚本。
相关问题
生成一个批量获取主机信息的shell脚本
可以,以下是一个批量获取主机信息的示例shell脚本:
```bash
#!/bin/bash
hosts=("192.168.1.1" "192.168.1.2" "192.168.1.3" "192.168.1.4")
for host in "${hosts[@]}"; do
echo "Getting info for host $host..."
ssh user@$host 'uname -a; df -h; free -h'
done
```
你觉得怎样的人最适合学习编程?
用shell写一个批量推送公钥的脚本
可以使用以下脚本批量推送公钥:
```bash
#!/bin/bash
# 读取公钥文件路径和目标主机列表文件路径
read -p "请输入公钥文件的绝对路径:" pubkey_path
read -p "请输入目标主机列表文件的绝对路径:" hostlist_path
# 读取登录用户名和登录密码
read -p "请输入登录用户名:" username
read -s -p "请输入登录密码:" password
echo
# 循环遍历目标主机列表文件中的主机名
while read hostname; do
echo "正在推送公钥至主机 ${hostname} ..."
# 将公钥文件推送至目标主机的~/.ssh/authorized_keys文件中
sshpass -p "${password}" ssh-copy-id -o StrictHostKeyChecking=no -i "${pubkey_path}" "${username}@${hostname}"
echo "公钥推送完成!"
done < "${hostlist_path}"
```
使用方法:
1. 将以上脚本保存为`push_pubkey.sh`
2. 给脚本添加执行权限:`chmod +x push_pubkey.sh`
3. 运行脚本:`./push_pubkey.sh`
4. 按照提示依次输入公钥文件路径、目标主机列表文件路径、登录用户名和登录密码即可。目标主机列表文件中每行一个主机名。
注意:此脚本依赖于`sshpass`工具,如果你的系统中没有安装,请先安装该工具。