注1:10.102. 可以替换成其他的,或者手动输入。

注2:minion-可以替换为其他的,或者手动输入。

代码如下(python3):

import re

# list = []
list1 = []
list2 = []
list3 = []
list4 = []
with open('srcIp.txt') as fip,open('desIP','w') as f:
for data in fip.readlines():
# data = re.sub(r'[\s|,]', '\n', data)
data = re.sub(r'[^\d|\.]', '\n', data)
data = re.sub('10.102.', 'minion-', data)
list1.append(data)
for data in list1:
data = data.strip('\n')
if data == '':
continue
data = re.sub(r'\s+', ',', data)
list2.append(data)
for data in list2:
if ',' in data:
data = data.split(',')
for i in range(0,len(data)):
list3.append(data[i])
continue
list3.append(data)
for data in list3:
if not data.startswith('minion'):
data = 'minion-' + data
list4.append(data)
continue
list4.append(data)
print('作用IP数:%s' % len(list4))
i = 0
for data in list4:
if i == len(list4) - 1:
f.write(data)
f.write('\n')
break
data = data + ','
f.write(data)
i += 1

源IP文件内容:

10.102.37.41
10.102.37.61 10.102.38.110
10.102.38.111
10.102.38.71
10.102.38.77
10.102.38.80
10.102.38.81 10.102.32.98
10.102.32.99
10.102.32.100
10.102.32.101 10.102.36.32 10.102.36.33 10.102.36.72 10.102.38.87 10.102.38.88 10.102.38.89 10.102.38.90 10.102.38.91 10.102.36.32,10.102.36.33 10.102.36.72, 10.102.38.87 25.221 38.36
32.21
33.65
,33.65 ,32.21 (25.33,95.66,58.37;55.99;)

执行完脚本后文件内容:

minion-37.41,minion-37.61,minion-38.110,minion-38.111,minion-38.71,minion-38.77,minion-38.80,minion-38.81,minion-32.98,minion-32.99,minion-32.100,minion-32.101,minion-36.32,minion-36.33,minion-36.72,minion-38.87,minion-38.88,minion-38.89,minion-38.90,minion-38.91,minion-36.32,minion-36.33,minion-36.72,minion-38.87,minion-25.221,minion-38.36,minion-32.21,minion-33.65,minion-33.65,minion-32.21,minion-25.33,minion-95.66,minion-58.37,minion-55.99

可见,把各种IP变成了SaltStack可操作的IP。(我们salt minion的名称都是minion-IP后两位的格式)

代码2,此方法直接输入内容,输出内容,省去了读文件写文件:

import re,json

list1 = []
list2 = []
stopword = 'run'
str1 = ''
print('请输入IP:')
for line in iter(input,stopword):
str1 += line + '\n'
with open('sss','w') as f:
f.write(json.dumps(str1))
with open('sss','r') as f1,open('sss1','w') as f2:
for data in f1.readlines():
data = re.sub(r'[^\d|\.]', '\n', data)
data = re.sub(r'\n+', '\n', data)
data = re.sub('10.102.', 'minion-', data)
print(data)
f2.write(data)
with open('sss1') as f3:
for data in f3:
if not data.startswith('minion-') and not data.startswith(' '):
data = 'minion-' + data
list1.append(data)
for data in list1:
data = re.sub(r'\n', ',', data)
list2.append(data)
for data in list2:
print(data,end='')

输入任意IP,将IP转化为minion-IP格式(saltstack)的更多相关文章

  1. WireShark——IP协议包分析(Ping分析IP协议包)

    互联网协议 IP 是 Internet Protocol 的缩写,中文缩写为“网协”.IP 协议是位于 OSI 模型中第三层的协议,其主要目的就是使得网络间能够互联通信.前面介绍了 ARP 协议, 该 ...

  2. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置

    本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...

  3. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  4. 如何知道局域网内哪些ip被占用----工具法Free IP Scanner

    在局域网中,尤其是在工作室和公司中需要修改IP地址才能上网,通常我们在设置完ip地址后会提示[该ip地址已被占用],又得回头去修改ip地址.本篇经验就介绍一款很好用的免费软件——Free IP Sca ...

  5. TCP/IP 笔记 - 用户数据报协议和IP分片

    关于本章中的IP分片部分,参考第五章IP分片头部知识点.需要注意的是,TCP有超时重传,UDP的超时重传则依赖上层应用程序实现. 用户数据报协议(UDP) UDP是一个简单的面向无连接.不可靠的数据报 ...

  6. IP白名单添加了当前IP,获取access_token时依然报出错误码40164的坑

    开发公众号网页时,想要调用微信API接口,令人无奈的是,想要调用各接口都需使用access_token,于是,获取access_token的征途开始了…… 1.开发者基本配置 (1) 公众平台官网登录 ...

  7. Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)

    这篇文章主要介绍了Nginx中禁止使用IP访问网站的配置实例,一般在备案时可能需要这种设置,需要的朋友可以参考下   国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问 ...

  8. PHP获取IP地址的方法,防止伪造IP地址注入攻击

    PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...

  9. IP地址及子网--四种IP广播地址

    国际规定:把所有的IP地址划分为 A,B,C,D,E. 类默认子网掩码:A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0.子网掩码是一个32位地址,用 ...

随机推荐

  1. html5重定义标签

    1.details: 可以同details与figure一同使用,定义包含文本 <details> <dd>无限互联1</dd><dd>无限互联1< ...

  2. Maven基础知识和环境搭建

    基本概念和生命周期 Maven是现在流行的构建自动化工具,提供了软件构建过程中全生命周期的管理. 基础目录结构 基础目录结构如下: 根目录:存放pom.xml 和所有的子目录 ${basedir}/s ...

  3. (24)odoo中模型标识汇总

    * 设置->技术->数据结构->模型                模型    模型描述    类型    瞬态模型account.account    科目    基础对象    ...

  4. hust--------The Minimum Length (最短循环节)(kmp)

    F - The Minimum Length Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %l ...

  5. VI编辑器学习笔记

    VIM的使用 VI是Linux系统中的一种编辑器,它的使用方法和界面与Unix平台十分相似,掌握了VIM的特殊,你可以感觉到它强大的功能与高效.Vim 相对来说较小,无论你使用任何Linux系统,你总 ...

  6. oracle错误码

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  7. 教你如何做好SEO优化中的前端优化

    网站的速度是很多人都面临的问题,其实许多网站,都没有特意的去优化加载速度,对于一个网站来说,加速不但提高了用户体验(如果一个网站在几秒内没 有打开,大多数用户选择的是关闭而非等待),而且对于SEO的流 ...

  8. VS2010连接SQLite数据库

    Visual studio 2010及以上版本,连接SQLite数据库 1.在Sqlite开发站点下载SQLite的.exe安装包 Ctrl+F搜索这条语句:This is the only setu ...

  9. flask剖析

    1.为何只要通过import request,就能拿到对应的request呢?怎么解决区分请求,区分线程的问题? 简而言之,就是通过拿栈顶对象就表示是当前活动的对象 但对于多线程,由于栈的数据结构是 ...

  10. Program E-- CodeForces 18C

    Description Once Bob took a paper stripe of n squares (the height of the stripe is 1 square). In eac ...