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#
linux 多主机间快速跳转脚本的更多相关文章
- ctags-vim代码间快速跳转
ctags-vim代码间快速跳转 1.说明 在Linux环境下使用vim进行驱动程序编写和维护的时候,会经常需要调用Linux内核的函数或宏定义,在驱动程序和kernel代码之间频繁跳转是件很繁琐的事 ...
- [转帖]Linux下主机间文件传输命令
Linux下主机间文件传输命令 https://yq.aliyun.com/articles/53631?spm=a2c4e.11155435.0.0.580ce8ef4Q9uzs SCP命令: ...
- 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...
- Linux make menuconfig查找并快速跳转指定驱动选项
/********************************************************************** * Linux make menuconfig查找并快速 ...
- scp 可以在 2个 linux 主机间复制文件
Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例: ================== Linu ...
- linux下expect环境安装以及简单脚本测试
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装 下 ...
- apache用户认证、默认主机、301跳转
我更正论坛一个同学帖子(今天坑我一下午):原文http://www.apelearn.com/bbs/foru ... 3%BB%A7%C8%CF%D6%A4 apache用户认证.默认主机.301跳 ...
- 挂载Linux云主机硬盘到本地计算机
现在移动硬盘已经是每个人的生活必需品了,当然网络也是我们生活的必需品,我们现在就是要用网络存储代替硬盘存储,当然再实际使用过程中需要考虑到以下两个问题: 网络延迟 云主机磁盘IO 以上两个关键 ...
- 让你快速学会Shell脚本
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...
随机推荐
- Jmeter 专题
Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户 ...
- JS-LINQ
JS中使用LINQ 详细使用方法可找相关资料 文件在这里 引用: <script type="text/javascript" src="@Url.Content( ...
- WPF ListView的使用
<Window x:Class="XamlTest.Window14" xmlns="http://schemas.microsoft.com/win ...
- WPF关闭应用汇总
原文:WPF关闭应用汇总 就本人而言,C#中关闭应用主要有以下途径: 1.Close():关闭当前窗口,可以在OnClosing和 OnClosed中捕获消息,在OnClosing的时候,可以取消关闭 ...
- c# Ajax后台动态分页
创建WebPager类 public static class WebPager { public static string WebPagerAjax(string Idn, bool IsShor ...
- ELINK编程器典型场景之远程镜像
当不想直接提供Hex/Bin等二进制程序文件给用户时,通过生成远程镜像功能将程序文件加密后,再提供给用户自行脱机下载来达到远程更新的目的. 远程镜像生成的一般步骤为由客户端提供SN码,本地依据SN码加 ...
- Win10《芒果TV》商店内测版更新至v3.7.65.0:跨平台UI新体验,铺路SP
Win10<芒果TV - Preview>是Win10<芒果TV>官方唯一指定内测预览版,最新的改进和功能更新将会在此版本优先体验. 春去夏来,初心犹在,Win10<芒果 ...
- WPF 添加外部ResourceDirectory
如果Resource资源文件在程序集中,可直接如下将资源文件添加当当前运行时 Application.Current.Resources.MergedDictionaries.Add(new Reso ...
- 零元学Expression Blend 4 – Chapter 21 以实作案例学习MouseDragElementBehavior
原文:零元学Expression Blend 4 – Chapter 21 以实作案例学习MouseDragElementBehavior 本章将教大家如何运用Blend 4内建的行为注入元件「Mou ...
- 关于VS编译DevExpress默认产生几个多余的语言包的问题解决
原文 关于VS编译DevExpress默认产生几个多余的语言包的问题解决 VS15开始对于非系统的Dll都会默认复制到本地,即bin\debug下面,复制dll到本地好处在于发布的时候不用再去寻找相关 ...