设置IP地址shell脚本

本文分享了一个简单的Shell脚本,用于手动配置系统的静态IP地址。脚本通过交互方式获取用户输入的IP地址、子网掩码、网关及DNS信息,并将其写入到指定的网络配置文件中。如果系统已启用DHCP,则会提示用户。
#!/bin/bash

A="IPADDR.*"
B="NETMASK.*"
C="GATEWAY.*"
D="DNS1.*"
E="/etc/sysconfig/network-scripts/ifcfg-eth1"
F="cat $E | sed -n '/BOOTP/p'"

if [ ! "$F" = "BOOTPROTO=dhcp" ]
        then
read -t 30 -p "Please enter the IP address:" IP
read -t 30 -p "Please enter mask:" MASK
read -t 30 -p "Please enter gateway:" GW
read -t 30 -p "Please enter DNS address:" DNS
        if [ ! -z "$IP" -a ! -z "$MASK" -a ! -z "$GW" -a ! -z "$DNS" ]
                then
        sed -i "s/$A/IPADDR=$IP/" $E
        sed -i "s/$B/NETMASK=$MASK/" $E
        sed -i "s/$C/GATEWAY=$GW/" $E
        sed -i "s/$D/DNS1=$DNS/" $E
        sed -i 's/ONBOOT.*/ONBOOT=yes/' $E
                        else
                                echo "Error:The input is invalid!!!!"
                                        exit 1
        fi
echo "Please later....."
/etc/init.d/network restart &>/dev/null
                        echo "Network card has been configured successfully"
        else
                echo "You are already enabled for DHCP"
                        exit 2
         fi

这是一个简单的设置静态IP的shell脚本,和大家分享

转载于:https://blog.51cto.com/13929859/2161601

<think>好的,我现在需要帮助用户找到一个适用于Mac系统的Shell脚本,用于设置静态IP和DNS配置。首先,我要回顾用户的问题,确保完全理解需求。用户明确提到macOS,所以需要考虑Mac特有的命令和配置方式,而不是Linux或其他系统。 接下来,我应该思考在macOS中配置网络的方式。通常,在图形界面中可以通过系统偏好设置来修改网络,但用户需要的是Shell脚本,这意味着需要使用命令行工具。macOS提供了`networksetup`命令,可以用来管理网络设置,这可能是一个关键点。 我需要回忆`networksetup`的相关参数。例如,设置IP地址、子网掩码、路由可能需要使用`-setmanual`选项,而设置DNS服务器可能使用`-setdnsservers`。此外,不同的网络接口可能需要指定,比如以太网通常是en0,而Wi-Fi可能是en1,但具体接口名称可能因机器而异,所以脚本可能需要用户输入或者自动检测。 然后,我需要考虑如何构造脚本的结构。首先可能需要检查用户是否有管理员权限,因为修改网络设置需要sudo权限。其次,需要处理不同的网络服务(接口),比如Wi-Fi或以太网。用户可能需要指定接口名称,或者在脚本中自动选择活动的接口。 另外,设置静态IP需要IP地址、子网掩码、路由器(网关)地址。DNS服务器可能需要设置为多个,比如8.8.8.8和8.8.4.4。这些参数可能需要作为脚本的参数输入,或者在脚本中硬编码,但为了灵活性,可能应该让用户通过命令行参数传入。 还需要考虑错误处理,比如如果指定的接口不存在,或者设置失败,脚本应该给出提示。可能需要使用`if`条件判断和错误退出。 然后,我需要验证这些命令是否正确。例如,`networksetup -setmanual "Wi-Fi" 192.168.1.100 255.255.255.0 192.168.1.1`这样的命令是否正确设置静态IP。同样,设置DNS的命令是否正确,比如`networksetup -setdnsservers "Wi-Fi" 8.8.8.8 8.8.4.4`。 可能还需要重启网络服务或者重新连接接口,但`networksetup`可能在设置后自动应用更改,但不确定,可能需要进一步确认。 另外,用户可能希望脚本在运行后测试网络连接,比如ping网关或DNS服务器,以确认配置成功。这部分可以作为可选步骤加入脚本。 现在,我需要将这些思考整合成一个脚本的结构,包括参数处理、错误检查、设置命令等。同时,需要确保脚本在macOS不同版本上兼容,因为不同版本的macOS可能在命令选项上有细微差异。 可能的步骤: 1. 检查是否以root权限运行,或者提示用户使用sudo。 2. 确定网络接口,比如通过参数传入或自动检测。 3. 接收IP、子网掩码、网关、DNS作为参数。 4. 使用networksetup设置静态IP和DNS。 5. 验证设置是否成功,并输出结果。 需要注意的是,用户可能需要知道他们的网络接口名称,比如Wi-Fi或Ethernet,可能需要先列出所有接口,或者让用户指定。比如使用`networksetup -listallnetworkservices`列出所有服务。 此外,设置静态IP后,可能需要禁用再启用接口来应用更改,但不确定是否需要。可能需要通过`networksetup -setnetworkserviceenabled`命令来重启服务。 最后,考虑到用户可能不熟悉命令行参数,脚本应该提供帮助信息或示例用法。 总结,我需要编写一个Shell脚本,使用`networksetup`命令配置静态IP和DNS,处理参数输入,检查权限和接口有效性,并给出适当的提示和错误处理。</think>以下是一个适用于macOS系统的Shell脚本示例,用于配置静态IP和DNS。该脚本基于`networksetup`命令行工具实现,支持手动指定网络接口、IP地址、子网掩码、网关和DNS服务器[^3]。 ```bash #!/bin/bash # 检查管理员权限 if [ "$(id -u)" != "0" ]; then echo "请使用sudo运行此脚本" 1>&2 exit 1 fi # 列出所有网络服务 echo "可用网络接口:" networksetup -listallnetworkservices | grep -v "An asterisk" # 输入参数 read -p "输入网络接口名称 (如 Wi-Fi/Ethernet): " interface read -p "静态IP地址 (如 192.168.1.100): " ip read -p "子网掩码 (如 255.255.255.0): " netmask read -p "网关地址 (如 192.168.1.1): " gateway read -p "DNS服务器 (空格分隔,如 8.8.8.8 1.1.1.1): " dns # 配置静态IP networksetup -setmanual "$interface" $ip $netmask $gateway # 配置DNS networksetup -setdnsservers "$interface" $dns # 验证配置 echo -e "\n当前网络配置:" networksetup -getinfo "$interface" echo -e "\nDNS配置:" networksetup -getdnsservers "$interface" ``` §§使用说明§§ 1. 将脚本保存为`set_static_network.sh` 2. 终端执行`chmod +x set_static_network.sh` 3. 运行`sudo ./set_static_network.sh` 4. 根据提示输入参数,示例输入: ``` 接口: Wi-Fi IP: 192.168.1.100 子网掩码: 255.255.255.0 网关: 192.168.1.1 DNS: 8.8.8.8 8.8.4.4 ``` §§注意事项§§ 1. 使用前需通过`ifconfig`或`networksetup -listallnetworkservices`确认接口名称 2. 设置静态IP可能导致网络中断,建议在物理设备旁操作 3. 恢复DHCP可使用命令:`networksetup -setdhcp "接口名称"`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值