linux 多主机间快速跳转脚本
#!/usr/bin/env python
#coding=utf8
'''
用于多机器间相互跳转,如有新机器加入,需要更新ip_list文件
'''
from prettytable import PrettyTable
from sh import cat
import os
import re
class GO():
def __init__(self):
self.base_path = "/home/xxx/"
self.ip_list = (cat(self.base_path + "ip_list")).split("#")
def servers_ip_list(self):
infos = []
self.ip_list.remove("\n")
for i in self.ip_list:
print i
info = {}
info["lan_ip"] = i.split("|")[2]
info["wan_ip"] = i.split("|")[1]
info["modules"] = i.split("|")[0]
infos.append(info)
print infos
return infos
def go(self):
servers_ip_list = self.servers_ip_list()
infos = PrettyTable(["编号", "模块名称", "内网ip", "外网ip"])
infos.align = "l"
for index,i in enumerate(servers_ip_list, 1):
if i["modules"] != "":
infos.add_row([index, i["modules"], i["lan_ip"], i["wan_ip"]])
print infos
in_ip = raw_input("请输入内网IP或编号,进行连接 :")
# 如果输入的是编号, 需要先查询对应IP
if not re.match(r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", in_ip):
if int(in_ip) <= len(servers_ip_list) and int(in_ip) > 0:
in_ip = servers_ip_list[int(in_ip)-1]["lan_ip"]
else:
print "ip_list文件中没有该主机信息, 请更新"
exit(1)
for i in self.ip_list:
if in_ip == i.split("|")[2]:
try:
port = i.split("|")[3]
except Exception:
print "ip_list文件没有该主机对应的端口, 请更新"
exit(1)
cmd = "ssh -p %s -o 'StrictHostKeyChecking no' %s" % (port, in_ip)
os.system(cmd)
if __name__ == "__main__":
go = GO()
go.go()
- ip_list文件
test-1|12.12.12.12|10.10.10.10|22#test-2|12.12.12.13|10.10.10.11|22#test-3|12.12.12.14|10.10.10.12|22#
Souviens Toi Que Tu Vas Mourir !