ssh批量登录查询服务器信息
需求:有100台服务器需要查询网卡名称及速率(如有其它需求在此基础上进行更改即可),通过自动化脚本实现
本例用两台服务器测试
准备好服务器的ip地址,ip.txt,每行一个ip,如下
步骤一:
本地测试
vim sh.sh
#!/bin/bash
echo 本机ip地址:`hostname -I |awk '{print$1}'`
IF=`sudo ip a |awk '/:/{print$2}' | sed "s/://g" | grep -E 'en'`
echo 网卡名
for i in $IF
do
echo $i
sudo ethtool $i | grep Speed
done
本机验证:
步骤二:
通过ssh自动登录,批量查询
vim test.sh
#!/bin/bash
for i in `cat ip.txt`
do
sshpass -p "1" scp -o "StrictHostKeyChecking no" sh.sh root@$i:~/ #将sh.sh传输到每一台服务器
sshpass -p "1" ssh -o "StrictHostKeyChecking no" root@$i "sh sh.sh" #依次登录服务器执行sh.sh
done >test.txt #将结果保存到本地test.txt
步骤三:
执行sh test.sh验证
cat test.txt查看结果
注释:
hostname -I |awk '{print$1}' #打印ip地址
sudo ip a |awk '/:/{print$2}' | sed "s/://g" | grep -E 'en' #查看网卡名称,只查询含有en的网卡
sshpass -p 意思为指定密码为1,-o "StrictHostKeyChecking no" #表示去除scp或ssh时出现yes/no询问