#!/bin/bash
read -p "输入域名: " qq
run=`virsh list|grep "$qq*"`
#echo -ne "共有`echo "$run"|wc -l`个虚拟机在运行.\n"
#echo "$run "
for i in `echo "$run" | awk '{ print $2 }'`;do
mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
ip=`arp -ne |grep "$mac" |awk '{printf $1}'`
printf "%-30s %-30s\n" $i $ip
done > ip.txt
#cat -n test.txt
iplist=(`cat -n ip.txt |awk -F" " '{print $3}'`)
#echo $iplist
cat -n ip.txt
read -p "输入数字: " action
case $action in
1)
ssh ${iplist[0]}
clear
;;
2)
ssh ${iplist[1]}
clear
;;
3)
ssh ${iplist[2]}
clear
;;
4)
ssh ${iplist[3]}
clear
;;
5)
ssh ${iplist[4]}
clear
;;
6)
ssh ${iplist[5]}
clear
;;
7)
ssh ${iplist[6]}
clear
;;
8)
ssh ${iplist[7]}
clear
;;
9)
ssh ${iplist[8]}
clear
;;
10)
ssh ${iplist[9]}
clear
;;
esac
read -p "输入域名: " qq
run=`virsh list|grep "$qq*"`
#echo -ne "共有`echo "$run"|wc -l`个虚拟机在运行.\n"
#echo "$run "
for i in `echo "$run" | awk '{ print $2 }'`;do
mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
ip=`arp -ne |grep "$mac" |awk '{printf $1}'`
printf "%-30s %-30s\n" $i $ip
done > ip.txt
#cat -n test.txt
iplist=(`cat -n ip.txt |awk -F" " '{print $3}'`)
#echo $iplist
cat -n ip.txt
read -p "输入数字: " action
case $action in
1)
ssh ${iplist[0]}
clear
;;
2)
ssh ${iplist[1]}
clear
;;
3)
ssh ${iplist[2]}
clear
;;
4)
ssh ${iplist[3]}
clear
;;
5)
ssh ${iplist[4]}
clear
;;
6)
ssh ${iplist[5]}
clear
;;
7)
ssh ${iplist[6]}
clear
;;
8)
ssh ${iplist[7]}
clear
;;
9)
ssh ${iplist[8]}
clear
;;
10)
ssh ${iplist[9]}
clear
;;
esac
批量SSH登录虚拟机
本文介绍了一种通过Shell脚本批量获取虚拟机IP并SSH登录的方法。该脚本首先读取用户输入的域名前缀,然后查找正在运行的虚拟机,并获取这些虚拟机的MAC地址及对应的IP地址。最后将列出的虚拟机及其IP地址保存到文件中,并允许用户选择特定的虚拟机进行SSH登录。
601

被折叠的 条评论
为什么被折叠?



