centos一键修改ip脚本

一键修改ip脚本

###环境

centos 7.6

需求

1. 配置静态ip
2.配置dhcp模式
3.修改之前确认是否修改,如果不修改需要恢复原IP信息
4.判断用户输入的IP是否正确,如果不正确,让其循环输入,直到正确为止

###脚本

#!/bin/bash
# 2020-07-18-15:47:18
# ipaddr change v2
# by bubble_xu
################################
NETWORK_PATH="/etc/sysconfig/network-scripts"
#if execute user root
if [ ! $UID -eq 0 ];then
	echo -e "\033[31muser must be root!\033[0m"
	exit
fi
#choose one network device
DEVICE_LIST=`ifconfig|grep flags|grep -v lo|cut -d":" -f1`
PS3=`echo -e "\033[32mplease choose one network device:\033[0m"`
select device in $DEVICE_LIST
do
	if [ ! -z $device ];then
		echo -e "\033[33m-----you choose to config $device-------\033[0m"
		break
	fi
	echo -e "\033[31minvalid option\033[0m"
done

#create network file
function config_network(){
	mode=$1
	cat>$NETWORK_PATH/ifcfg-${device}<<-EOF
	TYPE="Ethernet"
	PROXY_METHOD="none"
	BROWSER_ONLY="no"
	BOOTPROTO="$mode"
	DEFROUTE="yes"
	IPV4_FAILURE_FATAL="no"
	IPV6INIT="yes"
	IPV6_AUTOCONF="yes"
	IPV6_DEFROUTE="yes"
	IPV6_FAILURE_FATAL="no"
	IPV6_ADDR_GEN_MODE="stable-privacy"
	NAME="$device"
	UUID="$uuid"
	DEVICE="$device"
	ONBOOT="yes"
	EOF
	if [ $mode == "static" ];then
		cat>>$NETWORK_PATH/ifcfg-${device}<<-EOF
		IPADDR=$ipaddr
		NETMASK=$netmask
		GATEWAY=$gateway
		DNS1=114.114.114.114
		DNS2=8.8.8.8
		EOF
	fi
}
#backup network device file
if [ -f /$NETWORK_PATH/ifcfg-$device ];then
	uuid=`grep UUID $NETWORK_PATH/ifcfg-${device} |sed 's/UUID=//g;s/"//g'`
	mv $NETWORK_PATH/ifcfg-$device $NETWORK_PATH/ifcfg-${device}.bak
elif [ -f /$NETWORK_PATH/ifcfg-${device} ];then
	uuid=`grep UUID $NETWORK_PATH/ifcfg-${device}.bak |sed 's/UUID=//g;s/"//g'`
fi
#choose mode,ipaddr,netmask,gateway
while true
do
    read -p "please input network mode(static|dhcp):" mode
    if [ $mode == "static" ];then
		while true
		do
        	read -p "please input ip addr:" ipaddr
			echo $ipaddr|grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" >/dev/null 2>&1
			if [ $? -eq 0 ];then
				break
			fi
			echo -e "\033[31minvalid ipaddr\033[0m"
		done 
        read -p "please input netmask:" netmask
        read -p "please input gateway:" gateway
        config_network $mode
        break
    elif [ $mode == "dhcp" ];then
        config_network $mode
        break
    fi
	echo -e "\033[31minvalid mode option\033[0m"
done 
#confirm network config info
echo -e "\033[32m-------confirm network configuration info-------\033[0m"
cat $NETWORK_PATH/ifcfg-$device
while true
do
	read -p "yes to change,no to recovery!please input(yes|no):" option
	if [ $option == "no" ];then 
		mv $NETWORK_PATH/ifcfg-${device}.bak $NETWORK_PATH/ifcfg-${device}
		echo -e "\033[33m----end ip change configuration---\033[0m"
		exit
	elif [ $option == "yes" ];then
		echo -e "\033[33m----start ip change configuration---\033[0m"
		break
	fi
	echo -e "\033[31minvalid option\033[0m"
done
#restart network
systemctl restart network
ping -c 2 www.baidu.com
if [ $? -eq 0 ];then
    echo -e "\033[32mip addr change success!\033[0m"
    rm -rf $NETWORK_PATH/ifcfg-${device}.bak
    exit 0
fi
mv $NETWORK_PATH/ifcfg-${device}.bak $NETWORK_PATH/ifcfg-${device}
systemctl restart network
echo "ip addr change falied,restore configuration!"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个CentOS一键部署OpenStack的Shell脚本,使用该脚本可以方便快速地搭建OpenStack环境: ```bash #!/bin/bash #更新系统 yum update -y #安装epel源 yum install epel-release -y #安装openstack源 yum install centos-release-openstack-ocata -y #安装openstack客户端和python-openstackclient yum install python-openstackclient -y #安装MariaDB数据库 yum install mariadb mariadb-server python2-PyMySQL -y #配置MariaDB数据库 systemctl enable mariadb.service systemctl start mariadb.service mysql_secure_installation #安装rabbitmq消息队列 yum install rabbitmq-server -y #配置rabbitmq消息队列 systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service rabbitmqctl add_user openstack RABBIT_PASS rabbitmqctl set_permissions openstack ".*" ".*" ".*" #安装memcached缓存服务器 yum install memcached python-memcached -y #配置memcached缓存服务器 systemctl enable memcached.service systemctl start memcached.service #安装httpd服务器 yum install httpd mod_wsgi -y #配置httpd服务器 systemctl enable httpd.service systemctl start httpd.service #安装OpenStack Keystone服务 yum install openstack-keystone httpd mod_wsgi -y #配置OpenStack Keystone服务 systemctl enable httpd.service systemctl start httpd.service su -s /bin/sh -c "keystone-manage db_sync" keystone keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone keystone-manage bootstrap --bootstrap-password ADMIN_PASS \ --bootstrap-admin-url http://controller:35357/v3/ \ --bootstrap-internal-url http://controller:5000/v3/ \ --bootstrap-public-url http://controller:5000/v3/ \ --bootstrap-region-id RegionOne #重启httpd服务 systemctl restart httpd.service #安装OpenStack Glance服务 yum install openstack-glance -y #配置OpenStack Glance服务 su -s /bin/sh -c "glance-manage db_sync" glance #安装OpenStack Nova服务 yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler -y #编辑/etc/nova/nova.conf文件 cat > /etc/nova/nova.conf << EOF [DEFAULT] transport_url = rabbit://openstack:RABBIT_PASS@controller auth_strategy = keystone my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver [api] auth_strategy = keystone [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS [vnc] enabled = True vncserver_listen = MANAGEMENT_INTERFACE_IP_ADDRESS vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS [glance] api_servers = http://controller:9292 [oslo_concurrency] lock_path = /var/lib/nova/tmp EOF #配置OpenStack Nova服务 su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage db sync" nova #重启OpenStack Nova服务 systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service #安装OpenStack Neutron服务 yum install openstack-neutron-linuxbridge ebtables ipset -y #编辑/etc/neutron/neutron.conf文件 cat > /etc/neutron/neutron.conf << EOF [DEFAULT] core_plugin = ml2 service_plugins = router allow_overlapping_ips = True transport_url = rabbit://openstack:RABBIT_PASS@controller auth_strategy = keystone notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True [agent] root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS [database] connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron [oslo_concurrency] lock_path = /var/lib/neutron/tmp EOF #编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件 cat > /etc/neutron/plugins/ml2/linuxbridge_agent.ini << EOF [linux_bridge] physical_interface_mappings = provider:PHYSICAL_INTERFACE_NAME [vxlan] enable_vxlan = False [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver EOF #配置OpenStack Neutron服务 su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron #重启OpenStack Neutron服务 systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service #安装OpenStack Horizon服务 yum install openstack-dashboard -y #重启httpd服务 systemctl restart httpd.service ``` 在运行该脚本之前,需要将以下变量修改为您自己的值: - RABBIT_PASS:RabbitMQ的密码 - NOVA_PASS:Nova的密码 - NEUTRON_PASS:Neutron的密码 - NEUTRON_DBPASS:Neutron数据库的密码 - MANAGEMENT_INTERFACE_IP_ADDRESS:管理接口的IP地址 - PHYSICAL_INTERFACE_NAME:物理接口的名称 运行该脚本后,您将得到一个完整的OpenStack环境。但是,在使用OpenStack之前,您还需要进行一些其他的配置和操作,请参考OpenStack官方文档进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值