注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. C#基础:泛型委托

    泛型委托是委托的一种特殊形式,感觉看上去比较怪异,其实在使用的时候跟委托差不多,不过泛型委托更具有类型通用性. 就拿C#里最常见的委托EventHandler打比方.在.NET 2.0以前,也就是泛型 ...

  2. Python 练习 11

    #!/usr/bin/python # -*- coding: UTF-8 -*- import math for i in range(10000): #转化为整型值 x = int(math.sq ...

  3. q和blockquote标签的区别

    q用来分离文本中的引语,定义一个短的引用.该标签会对引用的文本加双引号,一般情况很少用,博客论坛系统会用得多一些: blockquote用于对长文本的引用,用来定义一段引语,标签内的内容会自动有缩进: ...

  4. 《Java程序设计》 实验一 实验报告

    实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.完成 ...

  5. hdu---(3779)Railroad(记忆化搜索/dfs)

    Railroad Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. iOS视频直播初窥:高仿<喵播APP>

    视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...

  7. Tomcat数据库连接池的配置方法总结

    Tomcat数据库连接池的配置方法总结 数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标 ...

  8. Objective-C:Foundation框架-常用类-NSValue

    NSNumber是NSValue的子类,前者只能包装数字,后者可以包装任意值.NSArray.NSDictionary只能存储OC对象,不能存储结构体.因此,如果想要在NSArray.NSDictio ...

  9. win7_oracle11g_64位连接32位PLSQL_Developer

      工具/原料 已经装好的64位Oracle数据库 window7_64位的操作系统 PLSQL_Developer 9.0以上版本(目前只有32位的):下面有下载连接! 官方的 instantcli ...

  10. Java JDK的安装以及环境变量的配置

    安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地 ...