前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hostctl · 像PRO一样管理你的hosts文件

hostctl · 像PRO一样管理你的hosts文件

作者头像
公众号: 云原生生态圈
发布于 2020-12-29 03:23:37
发布于 2020-12-29 03:23:37
1K00
代码可运行
举报
文章被收录于专栏:云原生生态圈云原生生态圈
运行总次数:0
代码可运行

使用背景

在日常的工作中,我们经常会通过编辑hosts文件来处理一些自定义域名的解析任务,每次手动的编辑linux或者mac上/etc/hosts和window上的hosts是一项繁琐的任务。但是现在,我们可以通过hostctl[1]来自动化管理本地域名解析文件,这样一来就可以使某些方面自动化,以使其变得更加干净快捷。

在不同的操作系统上hosts文件的路径是不一样:

  • Linux和Mac上的路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/etc/hosts
  • window上的路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:/Windows/System32/Drivers/etc/hosts

下面我们就开启通过hostctl开启hosts文件内容的自动化管理之路

安装hostctl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/guumaster/hostctl/releases/download/v1.0.14/hostctl_1.0.14_macOS_64-bit.tar.gz
tar xf hostctl_1.0.14_macOS_64-bit.tar.gz
mv hostctl /usr/local/bin/

在终端中执行hostctl的时候,Mac上会提示不受信任,因此需要在安全中心允许执行hostctl

Mac安全中心允许使用不受信任的开发工具

hostctl管理你的hosts

hostctl支持对hosts文件基础修改需求,如备份,从文件恢复,增加域名解析、删除域名解析记录、替换以及从Dockerdocker-compose运行的容器中同步解析记录到你的hosts文件,下面就通过几个简单的例子说明hostctl如何管理你的主机解析记录文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Available Commands:
  add         Add content to a profile in your hosts file.
  backup      Creates a backup copy of your hosts file
  disable     Disable a profile from your hosts file.
  enable      Enable a profile on your hosts file.
  help        Help about any command
  list        Shows a detailed list of profiles on your hosts file.
  remove      Remove a profile from your hosts file.
  replace     Replace content to a profile in your hosts file.
  restore     Restore hosts file content from a backup file.
  status      Shows a list of profile names and statuses on your hosts file.
  sync        Sync some system IPs with a profile.
  toggle      Change status of a profile on your hosts file.

Flags:
  -c, --column strings     Column names to show on lists. comma separated
  -h, --help               help for hostctl
      --host-file string   Hosts file path (default "/etc/hosts")
      --no-color           force colorless output
  -o, --out string         Output type (table|raw|markdown|json) (default "table")
  -q, --quiet              Run command without output
      --raw                Output without borders (same as -o raw)
  -v, --version            version for hostctl

Use "hostctl [command] --help" for more information about a command.

list查看hosts内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
☸️  dev? default  ? ? hostctl list
+---------+--------+-----------------+----------------------------+
| PROFILE | STATUS |       IP        |           DOMAIN           |
+---------+--------+-----------------+----------------------------+
| default | on     | 127.0.0.1       | localhost                  |
| default | on     | 255.255.255.255 | broadcasthost              |
| default | on     | ::1             | localhost                  |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 192.168.10.110  | apiserver.cluster.local    |
+---------+--------+-----------------+----------------------------+

# 同时支持多种格式输出,如markdown,json,table等

Add增加解析记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
☸️  dev? default  ? ? sudo hostctl add domains test admin.com admin.cn.com --ip 1.2.2.3
Password:
[] Domains 'admin.com, admin.cn.com' added.

+---------+--------+---------+--------------+
| PROFILE | STATUS |   IP    |    DOMAIN    |
+---------+--------+---------+--------------+
| test    | on     | 1.2.2.3 | admin.com    |
| test    | on     | 1.2.2.3 | admin.cn.com |
+---------+--------+---------+--------------+

☸️  dev? default  ? ? hostctl list
+---------+--------+-----------------+----------------------------+
| PROFILE | STATUS |       IP        |           DOMAIN           |
+---------+--------+-----------------+----------------------------+
| default | on     | 127.0.0.1       | localhost                  |
| default | on     | 255.255.255.255 | broadcasthost              |
| default | on     | ::1             | localhost                  |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 192.168.10.110  | apiserver.cluster.local    |
+---------+--------+-----------------+----------------------------+
| test    | on     | 1.2.2.3         | admin.com                  |
| test    | on     | 1.2.2.3         | admin.cn.com               |
+---------+--------+-----------------+----------------------------+
# 在/etc/hosts中已存在的profile就是default,上面增加的profile的名字为test

启用和关闭本地域名解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
☸️  dev? default  ? ? sudo hostctl enable test
+---------+--------+---------+--------------+
| PROFILE | STATUS |   IP    |    DOMAIN    |
+---------+--------+---------+--------------+
| test    | on     | 1.2.2.3 | admin.com    |
| test    | on     | 1.2.2.3 | admin.cn.com |
+---------+--------+---------+--------------+
☸️  dev? default  ? ? ping admin.com
PING admin.com (1.2.2.3): 56 data bytes
Request timeout for icmp_seq 0
^C
--- admin.com ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
☸️  dev? default  ? ? sudo hostctl disable test
+---------+--------+---------+--------------+
| PROFILE | STATUS |   IP    |    DOMAIN    |
+---------+--------+---------+--------------+
| test    | off    | 1.2.2.3 | admin.com    |
| test    | off    | 1.2.2.3 | admin.cn.com |
+---------+--------+---------+--------------+

☸️  dev? default  ? ? ping admin.com
PING admin.com (13.225.150.119): 56 data bytes
64 bytes from 13.225.150.119: icmp_seq=0 ttl=240 time=237.629 ms
^C
--- admin.com ping statistics ---
2 packets transmitted, 1 packets received, 50.0% packet loss
round-trip min/avg/max/stddev = 237.629/237.629/237.629/0.000 ms

移除解析记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 移除指定域名
☸️  dev? default  ? ? sudo hostctl remove domains test admin.com 
[] Domains 'admin.com' removed.

+---------+--------+---------+--------------+
| PROFILE | STATUS |   IP    |    DOMAIN    |
+---------+--------+---------+--------------+
| test    | on     | 1.2.2.3 | admin.cn.com |
+---------+--------+---------+--------------+
☸️  dev? default  ? ? hostctl list
+---------+--------+-----------------+----------------------------+
| PROFILE | STATUS |       IP        |           DOMAIN           |
+---------+--------+-----------------+----------------------------+
| default | on     | 127.0.0.1       | localhost                  |
| default | on     | 255.255.255.255 | broadcasthost              |
| default | on     | ::1             | localhost                  |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 127.0.0.1       | kubernetes.docker.internal |
| default | on     | 192.168.10.110  | apiserver.cluster.local    |
+---------+--------+-----------------+----------------------------+
| test    | on     | 1.2.2.3         | admin.cn.com               |
+---------+--------+-----------------+----------------------------+
# 移除指定profile的所有域名
☸️  dev? default  ? ? sudo hostctl remove test
[] Profile(s) 'test' removed.


☸️  dev? default  ? ? cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 kubernetes.docker.internal
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
192.168.10.110 apiserver.cluster.local

##################################################################
# Content under this line is handled by hostctl. DO NOT EDIT.
##################################################################

其他命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 备份
hostctl backup -path .
☸️  dev? default  ? ? ls -al
total 8
drwxr-xr-x    3 marionxue  staff    96 Dec 11 22:27 .
drwxr-xr-x+ 131 marionxue  staff  4192 Dec 11 23:27 ..
-rw-r--r--    1 marionxue  staff   609 Dec 11 22:27 hosts.20201211

# 通过文件替换已有的profile
☸️  dev? default  ? ? sudo hostctl replace test -f ./hosts
+---------+--------+---------+---------------+
| PROFILE | STATUS |   IP    |    DOMAIN     |
+---------+--------+---------+---------------+
| test    | on     | 1.1.1.1 | www.baidu.com |
+---------+--------+---------+---------------+

sync

hostsctl支持从docker以及docker-compose运行的容器中同步解析,但是kubernetes上暂时还未支持。

参考资料

[1]

hostctl: https://guumaster.github.io/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Java爬虫下载千张美女图片!
目的 爬取搜狗图片上千张美女图片并下载到本地 准备工作 爬取地址:https://pic.sogou.com/pics?query=%E7%BE%8E%E5%A5%B3 分析 打开上面的地址,按F1
Java团长
2021/03/12
1.2K0
Java爬虫下载千张美女图片!
Java调用第三方接口示范
【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】:
Java廖志伟
2021/01/29
1.4K0
CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行
CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行
oktokeep
2024/10/09
2470
java爬虫带你爬天爬地爬人生,爬新浪
HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。它的主要功能有:
Java知音
2018/09/26
9530
java爬虫带你爬天爬地爬人生,爬新浪
http请求工具类 HttpClient4Util
1、依赖 <!-- httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.6</version> </dependency> 2、HttpClient4Util http请求工具类 点击查看代码 import lombok.extern.slf4j.Slf4j; import org.apach
化羽羽
2022/11/12
5310
HttpClient技术
HttpClient 一、介绍 简介 坐标 二、应用 发送get请求不带参数 发送get请求带参数 发送post请求不带参数 发送post请求带参数 发送post请求带json类型参数 三、HTTPClient工具类的使用 工具类代码 一、介绍 简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、 功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 HTTP 协议可能是现在 Inter
时间静止不是简史
2020/07/25
1.7K0
HTTP 请求工具类
坐标 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.1</version> <classifier>jdk15</classifier> </dependency> 工具类 package com.baomidou.springboot.uti
高大北
2022/06/14
9550
HttpClient使用不当,服务挂了,是时候系统学习一下了
事件一:联调微信支付接口,用到HttpClient,花时间整理了一番。如果有一篇文章,读一读就可以掌握HttpClient 80%的内容,再有可以直接用的Demo,下次再遇到是不是就可以非常容易集成了?这篇便是这篇文章的目标之一。
程序新视界
2021/12/20
1.8K0
Apache httpClient+Jackson学习笔记
HTMLUnit可以用来做爬虫的。Jsoup比他跟简洁。使用python语言进行爬虫.开箱即用。
全栈程序员站长
2022/06/30
2.5K0
Apache httpClient+Jackson学习笔记
java使用httpclient调用第三方接口
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141981.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
9200
日常开发必备神器 HttpUtil 分享(超详细)
最近在工作中需要在后台调用各种上传、下载、以及第三方服务接口,经过研究决定使用 HttpClient,自己封装了一个 HttpClient 工具类,简单轻松的实现get、post、put、delete 以及上传、下载请求,在此分享给大家。
Java极客技术
2022/12/04
3.1K1
HttpClient-Get请求、Post请求
有参数,请求链接为url(http://localhost:8083/getdemo2)
wangmcn
2022/07/25
2.9K0
HttpClient-Get请求、Post请求
银商TMS平台秘钥下载工具
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplication3.utils; import com.alibaba.fastjson.JSON; impo
杨永贞
2020/08/04
7240
HttpClient-Json格式、设置超时
Json格式、设置超时 目录 1、Json格式 2、设置超时 1、Json格式 1、创建Json类。 发送数据将数据类型转为Json格式。 接收数据将数据类型转为Json格式。 脚本代码: package com.test.demo; import java.io.IOException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHtt
wangmcn
2022/07/25
6290
HttpClient-Json格式、设置超时
求助-钉钉开发异步消息失败
源码: 1.AsyncMessage.java package com.ray.dingtalk.model.message.asyncsend; /**@desc : * * 参考文档地
shirayner
2018/08/10
8391
【HttpClientUtil完整的工具类】
package com.test.test.utils; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.NameValuePair; import org.apa
用户5640963
2019/07/25
9.2K0
HttpClient-Header、Cookie
内容格式设定为Json格式("content-type", "application/json")、自定义Header("Self-Header", "MySelfHeader")。
wangmcn
2022/07/25
6590
HttpClient-Header、Cookie
Java发送Http请求(HttpClient)
HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
ha_lydms
2023/08/09
1K0
封装httpClient工具类进行get、post、put、delete的http接口请求,可添加请求头与参数,支持多线程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157763.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/18
2.6K0
Java发送HTTP 请求
请求http的Demo是个人亲测过,目前该方式已经在线上运行着。因为是http请求,所有发送post 和get 请求的demo都有在下方贴出,包括怎么测试,大家可直接 copy到自己的项目中使用。
胖虎
2019/06/26
2.4K0
相关推荐
Java爬虫下载千张美女图片!
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 使用背景
  • 安装hostctl
  • hostctl管理你的hosts
    • list查看hosts内容
    • Add增加解析记录
    • 启用和关闭本地域名解析
    • 移除解析记录
    • 其他命令
    • sync
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档