hl-主机列表,一个简单灵活的主机列表模糊搜索/执行工具
hl的Python项目详细描述
H2> HL--一种简单的柔性模糊主机搜索/执行< /H2>
HL(主机列表)提供了Omni-Box风格的查询界面(灵感来源于任何现代浏览器)。 HL使用易于理解的层次化主机列表上的加权模糊匹配全文匹配过程中考虑的内容包括项目名称、env(prod、qa、dev等)、标记、端口和FQDN本身
请注意,定义项目名称或环境等的是您自己的任意约定,它们在hl中的工作方式都是相同的。 实际上,HL接受任何层次分类,每个级别都被视为标签上面的分类标签比下面的任何标签都有更大的权重,这个属性用于消除模糊字符串匹配的歧义。
安装
pip install --user hl
示例
使用API和DBs的简单项目的虚拟配置,有两个环境—在AWS上进行登台,在2个DC中在裸机上进行生产注意,管理员是时髦的,数据库有自己独特和不一致的名称+不同的端口,我们希望用标签正确分类。
# our-project.yml: --- prod: api: us-east-dc: hosts: api-[0-4]-east-prod.our-company.cloud ports: http: 8080 us-west-dc: hosts: api-[0-4]-west-prod.our-company.cloud ports: http: 8080 db: us-east-dc: # list of host patterns is acceptable hosts: - ricky-the-great.our-company.cloud - mikky-the-malicious.our-company.cloud ports: postgres: 5432 us-east-dc: # list of different host entries as well - hosts: east-mcgram-db.our-company.cloud ports: postgres: 5432 - hosts: east-paul-db.our-company.cloud ports: postgres: 6432 qa: aws: api: hosts: api-[0-4]-aws-staging.ec2.cloud ports: http: 8080 db: hosts: db-aws-staging.ec2.cloud ports: postgres: 5432
输入hl
工具:
hl aws
算法
算法很简单(可能会改变)-首先我们遍历主机模式图,并将每个标记视为按深度反向加权的标记(越深,权重越小)。然后我们对hostname应用合理的标记化(由“-”、“_u”和“.”分隔),每个标记的权重最小。结果是合并标记和主机名标记。
查询的标记方式与主机名相同。之后,两个频率字典像稀疏向量一样相乘,以最小化重复单词的尖锐影响,查询中的权重被sigmoid平滑(这在将来可能会改变)。
下一步是使用trigrams或类似的方法修复查询中的拼写错误,并仍然找到最接近的标记来匹配。