国产电脑shell脚本修改hosts文件

您所在的位置:网站首页 如何修改电脑的hosts文件 国产电脑shell脚本修改hosts文件

国产电脑shell脚本修改hosts文件

2024-02-02 05:36| 来源: 网络整理| 查看: 265

因工作需要,需要给部分国产电脑手动配置hosts,觉得每次操作命令去编辑修改hosts文件比较麻烦,所以稍稍研究了一下脚本修改,觉得其他人也可能用的上,在此写篇文章向大家解说一下。

实现效果:

1.自动去除需要删除的hosts的ip解析域名配置的所在行

2.在hosts文件首行插入ip解析域名的配置

3.提供通过API接口方式获取需要修改的内容插入hosts文件的解决思路

一、基础

1.hosts文件所在位置

cd /etc #hosts文件所在目录

2.shell脚本命名

test.sh #以.sh结尾

3.执行shell脚本

sudo bash test.sh #sudo 以root权限执行后续命令 #bash 用以执行shell脚本,后面需跟需要执行的文件名 #需注意执行此命令需要进入test.sh所在的目录 二、脚本详解

1.假设hosts文件原有内容如下:

222.22.33.44 www.baidu.com 111.22.33.44 www.qq.com 172.0.0.1 localhost ...

2.假设我们删除原有的baidu、qq的解析,重新配置baidu、qq的解析,示例:

#!/bin/bash #设置域名解析变量 ip1='245.38.22.11 www.baidu.com' ip2='185.31.27.51 www.qq.com' echo '正在为您配置域名解析...' echo $ip1 echo $ip2 #判断域名是否重复配置并在首行插入解析 #存在已配置过的host,删除所在行,再重新插入 #不存在配置,在首行插入 if grep -q "www.baidu.com" /etc/hosts || grep -q "245.38.22.11" /etc/hosts; then echo "正在重置"$ip1'相关内容...'; sed -i '/www.baidu.com/'d /etc/hosts; sed -i '/245.38.22.11/'d /etc/hosts; sed -i '1i'"$ip1"'' /etc/hosts; else sed -i '1i'"$ip1"'' /etc/hosts fi if grep -q "www.qq.com" /etc/hosts || grep -q "185.31.27.51" /etc/hosts; then echo "正在重置"$ip2'相关内容...'; sed -i '/www.qq.com/'d /etc/hosts; sed -i '/185.31.27.51/'d /etc/hosts; sed -i '1i'"$ip2"'' /etc/hosts; else sed -i '1i'"$ip2"'' /etc/hosts fi echo '-------------------以下是配置完成的内容:---------------------------' cat /etc/hosts echo '已完成配置!'

3.执行脚本后,hosts文件内容:

245.38.22.11 www.baidu.com 185.31.27.51 www.qq.com 172.0.0.1 localhost ...

4.详解

#!/bin/bash -脚本前一般都加上这句话表示此文件为脚本内容 #设置域名解析变量 -以#号开头为注释内容不执行 ip1='245.38.22.11 www.baidu.com' -以aaa='内容',效果等于设置变量,建议有空格或特殊内容使用"" echo $ip1 -执行过程输出一句话,此处为输出变量内容,获取变量值以$开头 cat /etc/hosts -查看文件内容,cat后面跟文件名,可以是从根目录开始的全路径加文件名 echo '已完成配置!' -输出''内的文字内容 if grep -q "www.baidu.com" /etc/hosts || grep -q "245.38.22.11" /etc/hosts; -如果hosts文件包含www.baidu.com或者包含245.38.22.11;包含结果为true,不包含为false then -当结果为true执行下面语句 sed -i '/www.baidu.com/'d /etc/hosts; -删除hosts文件包含www.baidu.com内容的行 sed -i '/245.38.22.11/'d /etc/hosts; -删除hosts文件包含245.38.22.11内容的行 sed -i '1i'"$ip1"'' /etc/hosts; -在hosts文件的首行位置插入一行内容,1i表示第一行位置插入,包含空格和特殊内容请使用"" else -当结果为false执行下面语句 sed -i '1i'"$ip1"'' /etc/hosts fi -if判断结束标识

5.API获取内容解决思路

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3