在web开发中,我们经常需要切换hosts绑定,比较好用工具火狐插件:hostAdmin.
今天突发奇想(最近看了很多shell,也想锻炼一下),仿照hostAdmin写了一个shell脚本,目前运行良好。
#!/bin/bash
##############################
# 切换hosts的工具类 swich hosts
#
# --------hosts 文件格式--------
# ==offline
# ip list...
# ==offline
#
# ==online
# ip list...
# ==online
# --------hosts 文件格式--------
#
# 操作:sh shosts.sh offline 开启offline这组host绑定
#
# diaocow 2012-9-8
#
##############################
# 检测用户是否输入了group tag
if [[ -z $1 ]] ; then
echo "Error: Please input a group tag! eg. offline"
exit 1
fi
HOSTS="testdata" # hosts文件(这里,你需要替换成/etc/hosts)
HOSTS_TEMP="host.tmp" # hosts临时文件
GROUP_TAG="==$1" # 需要打开的组
# 检测group tag有效性
if ! grep -q "$GROUP_TAG" "$HOSTS" ; then
echo "Error: there is no group tag named $GROUP_TAG in $HOSTS"
exit 1
fi
# 函数:判断字符串是否为IP
isIp() {
echo $1 | grep -E -q '([0-9]+\.){3}[0-9]'
ip_result=`echo $?`
}
# clean临时文件
: > $HOSTS_TEMP
# group tag 计数
start_flag=0
# 处理hosts
cat $HOSTS | while read line ; do
if echo $line | grep -q $GROUP_TAG; then
start_flag=$((start_flag + 1))
fi
isIp "$line"
if [[ $start_flag == 1 && $ip_result == 0 ]] ; then
# 去掉开头的注释符
line=${line/#\#/}
elif [[ $ip_result == 0 ]] ; then
# 在行开头添加注释符
if ! echo $line | grep -q '^ *#' ; then
line=\#$line
fi
fi
echo "$line" >> $HOSTS_TEMP
done
# 重新生成hosts
cat $HOSTS_TEMP > $HOSTS
rm -rf $HOSTS_TEMP
现在我们来测试下这个脚本:
我们准备下测试数据(脚本中的HOSTS变量指定hosts文件,目前我们暂定义为testdata):
[diaocow@ubuntu]$ cat testdata
==offline
72.51.30.13 offline.test1.com
72.20.123.321 offline.test2.com
==offline
==online
12.56.92.97 online.test1.com
12.56.38.84 online.test2.com
==online
将host切换到线上环境
[diaocow@ubuntu]$ sh shosts.sh online
[diaocow@ubuntu]$ cat testdata
==offline
#72.51.30.13 offline.test1.com
#72.20.123.321 offline.test2.com
==offline
==online
12.56.92.97 online.test1.com
12.56.38.84 online.test2.com
==online
重复执行 sh shosts.sh online 不会有任何问题
我们在尝试切换成线下环境
[diaocow@ubuntu]$ sh shosts.sh offline
[diaocow@ubuntu]$ cat testdata
==offline
72.51.30.13 offline.test1.com
72.20.123.321 offline.test2.com
==offline
==online
#12.56.92.97 online.test1.com
#12.56.38.84 online.test2.com
==online
一切OK
在脚本的编写过程中,我经常使用这两个命令
sh -n shosts.sh online # 检测脚本语法错误
sh -x shosts.sh online # 详细打出脚本每一步执行过程
分享到:
相关推荐
bat脚本实现自动修改hosts,适合在批量进行作业的时候。
一键备份恢复windows系统hosts文件的脚本工具,可以右键编辑修改内容 hosts目录:C:\Windows\System32\drivers\etc\hosts
#shell脚本完成hadoop的集群安装 #步骤: #1.安装虚拟机,关闭防火墙、selinux #2.ssh免密码,编辑hosts文件 #3.安装JDK #4.安装hadoop #5.修改配置文件 #6.分发hadoop程序到各个节点 #7.启动集群
前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消...
日常开发工作中,我们可能经常需要切换各种 hosts 绑定,比如在本地开发时可能需要一个开发环境的 hosts 绑定方案,发布到测试环境后又有一个测试环境的 hosts 绑定方案,然后可能还有一个预发布环境,最后可能才是...
管理、快速切换Hosts小工具,开源软件,一键切换Hosts配置,非常实用,高效
切换hosts文件的工具,可以很方便地根据不通的需求场景切换hosts文件。
精品软件工具--改Hosts 是一个管理、快速切换Hosts小工具,开源软件,一键切换Hosts配置,非常实用,高效。
linux shell 自动更新hosts , 学习参考使用, shell脚本
mac版本快速管理切换hosts工具switchhosts,最新版本,非常的好用
作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面...
通过该 Chrome 插件,快捷方便的切换、设置 hosts 代理规则,而不用修改系统 hosts 文件,方便web开发人员在 测试/开发/线上 等环境快速切换;同时顺便支持本地端口的代理设置
安装命令: Shell pkg update && pkg install git && cd ~ && git clone https://github.com/FurryRbl/Shell_Hosts_Android.git && cd Shell_Hosts_Android && sh install.sh 安装完成使用该命令启动 rbl-hosts ` ...
用pyhon3写的一键更新hosts脚本。 有默认的hosts数据日更来源,也可自定义hosts来源。 内附使用说明。
hosts快速切换工具 1、使用前需要备份原hosts,试用本软件会导致hosts用其他软件打开时乱码或,排序混乱 2、工具支持url 订阅hosts,可建立多个hosts同时启用
利用shell脚本 对Hadoop环境进行傻瓜式配置 先解压! 环节包括: 1.修改hostname 2.修改hosts 3.配置免密 4.Hadoop配置文件的更改 !!!!!!!!!!!!!!!!!!!! ps 请特别注意以下几个问题: 1....
hosts切换神器SwitchHost shosts切换神器SwitchHosts,一键设置host,方便快捷,你值得拥有...
分享一个更改hosts的php脚本类,配置文件路径,默认为 __FILE__ . '.ini';从 ini 配置文件读取出来的配置数组,配置文件里面需要配置的域名,配置文件获取的 ip 数据
SwitchHosts Host切换工具 SwitchHosts Host切换工具 SwitchHost
hosts=”192.168.56.100″ port=21 user=test pass=testpwd work_path=”/var/www/cms” packname=”publish” #hosts=$1 #port=$2 #user=$3 #pass=$4 #packname=$6 #work_path=$5 cd $work_path /usr/bin/zip -r $...