Ubuntu设置IP和hostname的shell脚本

本文分享了一个用于在Linux系统中通过Shell脚本快速配置静态IP地址的方法。该脚本能够帮助用户设置本机IP、DNS、网关及子网掩码,并允许用户自定义这些参数。

以前有段时间经常新配虚拟机搭环境,于是写了个shell脚本提示性输入配置,今天翻到了发上来.

#!/bin/bash
# By Swire "idoop@msn.cn"
if [[ $(whoami) == "root" ]];then
echo "当前执行权限: root"
else
echo "当前用户:" $(whoami)
echo "请使用管理员权限执行脚本."
exit
fi

while read -p "是否设置本机静态IP,退出输入:n,设置IP输入:y  [y|n]" yn
do
	if [[ ${yn} == [Nn] ]];then
		exit
	elif [[ ${yn} == [Yy] ]];then
		while read -p "输入本机IP地址,如192.168.1.9 :" ip
		do
			read -p "将设置ip地址为${ip},请确认[y|n]:" yn
			if [[ ${yn} == [Yy] ]];then
				read -p "输入DNS, 如:119.29.29.29 (Default:119.29.29.29):" dns
				read -p "输入网关,如192.168.1.1 (Default:192.168.1.1):" gateway
				read -p "输入掩码,如255.255.255.0 (Default:255.255.255.0):" mask
				
				echo "IP: "${ip}
				echo "DNS:"${dns:-"119.29.29.29"}
				echo "网关:"${gateway:-"192.168.1.1"}
				echo "掩码:"${mask:-"255.255.255.0"}
				read -p "以上配置是否正确?若是写错请按n重新配置. 请确认[y|n]:" yn
				if [[ ${yn} == [Yy] ]];then
					#设置DNS
					sed -i "/exit/i\nameserver ${dns:-"119.29.29.29"}" /etc/rc.local
					sed -i "/127.0.0.1/i\127.0.0.1 ${ip//./-}" /etc/hosts
					#重写interfaces设置IP
					echo 'source /etc/network/interfaces.d/*' > /etc/network/interfaces
					echo 'auto lo' >> /etc/network/interfaces
					echo 'iface lo inet loopback' >> /etc/network/interfaces
					echo 'auto ens160' >> /etc/network/interfaces
					echo 'iface ens160 inet static' >> /etc/network/interfaces
					echo 'address '${ip} >> /etc/network/interfaces
					echo 'gateway '${gateway:-"192.168.1.1"} >> /etc/network/interfaces
					echo 'netmask '${mask:-"255.255.255.0"} >> /etc/network/interfaces
				else
					continue
				fi
			else
				continue
			fi

			read -p "是否将${ip//./-}作为hostname?请确认[y|n]:" yn
			if [[ ${yn} == [Yy] ]];then
				hostnamectl set-hostname ${ip//./-}
			else 
				read -p "请手动输入hostname: " hname
				read -p '确认以"'${hname}'"为hostname [y|n]:' yn
				if [[ ${yn} == [Yy] ]];then
					hostnamectl set-hostname ${hname}
				fi
			fi
			read -p '需要重启生效,是否重启 [y|n]: ' yn
			if [[ ${yn} == [Yy] ]];then
				reboot
			fi
			exit
		done
	fi
done

转载于:https://my.oschina.net/idoop/blog/1377489

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值