每天一个小脚本,第二天

本文档介绍了一个Shell脚本,用于获取指定网段内的在线主机IP,并提供选项获取其MAC地址。通过ping测试主机可达性并统计在线主机数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每天一个小脚本,今天第二天
Shell
需求:
获取所有在线主机的IP地址

#!/bin/bash
#
read -p "输入网段:" ip

num1=$(echo $ip|cut -d "." -f1)
num2=$(echo $ip|cut -d "." -f2)
num3=$(echo $ip|cut -d "." -f3)
ip_all=${num1}.${num2}.${num3}

declare -a num

a=0
for i in $(seq 83);
do
    ping ${ip_all}.$i -c 1 -w 1 &> /dev/null
    if [ $? == 0 ];
    then
   		 echo "主机${ip_all}.${i}在线"
		((a+=1))
		 num[$i]=$i
    fi
done
echo "一共在线主机$a台"

getMac(){

while true;
do
	read -p  "是否获取在线主机的MAC地址(Y/N)" choice

	choice=${choice^}

	case $choice in 
		Y)
			for j in ${num[*]};
			do
				mac=$(arping -c 1 -w 1 ${ip_all}.${j}|awk -F [ '/Unicast/ {print $2}'|awk -F ] '{print $1}')
				echo "主机ip:${ip_all}.${j} 主机mac:$mac"
			done
			exit 100
		;;
		N)
			echo "拜拜!!!"
			exit 100
		;;
		*)
			echo "选择错误!!"
			continue
		;;
	esac
done
}

link(){
	 read -p "连接主机的ip:" ip
     read -p "输入用户名:" user
	 while true;
	 do
	 	stty -echo
	 	read -p "输入密码:" pass1
	 	read -p "再次输入密码:" pass2
		stty echo
		if [ $pass1 == $pass2 ];
		then
	 		sshpass  -p $pass1 ssh  ${user}@${ip}
			break
		else
			continue
		fi
	 done

}

cat << eof
------主机操作-----
1.获取Mac地址
2.连接主机
eof


read -p "请选择:" num

case $num in
	1)
		getMac

	;;
	2)
		link
		exit 100
	
	;;
	*)
		echo "选择错误!!!"
		exit 100
	;;

esac

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值