#!/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 多主机间快速跳转脚本的更多相关文章

  1. ctags-vim代码间快速跳转

    ctags-vim代码间快速跳转 1.说明 在Linux环境下使用vim进行驱动程序编写和维护的时候,会经常需要调用Linux内核的函数或宏定义,在驱动程序和kernel代码之间频繁跳转是件很繁琐的事 ...

  2. [转帖]Linux下主机间文件传输命令

    Linux下主机间文件传输命令 https://yq.aliyun.com/articles/53631?spm=a2c4e.11155435.0.0.580ce8ef4Q9uzs   SCP命令: ...

  3. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)

    通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...

  4. Linux make menuconfig查找并快速跳转指定驱动选项

    /********************************************************************** * Linux make menuconfig查找并快速 ...

  5. scp 可以在 2个 linux 主机间复制文件

    Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例: ================== Linu ...

  6. linux下expect环境安装以及简单脚本测试

    expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装 下 ...

  7. apache用户认证、默认主机、301跳转

    我更正论坛一个同学帖子(今天坑我一下午):原文http://www.apelearn.com/bbs/foru ... 3%BB%A7%C8%CF%D6%A4 apache用户认证.默认主机.301跳 ...

  8. 挂载Linux云主机硬盘到本地计算机

      现在移动硬盘已经是每个人的生活必需品了,当然网络也是我们生活的必需品,我们现在就是要用网络存储代替硬盘存储,当然再实际使用过程中需要考虑到以下两个问题: 网络延迟 云主机磁盘IO   以上两个关键 ...

  9. 让你快速学会Shell脚本

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...

随机推荐

  1. 常用cl编译命令参数解释

    紧接前文,第一行cl命令如下: 1>  cl /c /IC:\...\include /ZI /nologo- /W3 /WX- /sdl /Od /Oy- /D WIN32 /D _DEBUG ...

  2. WPF LayoutTransform -改变布局

    LayoutTransform会影响布局,让grid显示分割线时候,可以看出 <Window x:Class="wpf180709.Window1" xmlns=" ...

  3. JS引用路劲为什么在前面加上两个斜杠

    原文:JS引用路劲为什么在前面加上两个斜杠 //表示同协议,一般现在用在https跨域名地址情况下.比如第三方统计代码的引入,用//就不用很麻烦地区分https还是http,也不用担心https下降到 ...

  4. 图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效

    原文:图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效 本文是我收集的一些使用Photoshop来实现Instagram滤镜的一些内容,在这里跟大家分享一下,这些效果是完 ...

  5. 图像滤镜艺术---Oilpaint油画滤镜

    原文:图像滤镜艺术---Oilpaint油画滤镜  Oilpaint油画滤镜     图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间 ...

  6. PySide——Python图形化界面入门教程(六)

    PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tu ...

  7. HTML5离线缓存攻击测试

    本实验采用局域网模拟,通过修改本地HOSTS文件来模拟域名以及DNS欺骗.合法网站使用Linux CentOS7的apache服务器搭建,IP为192.168.1.113,HOSTS文件中加入192. ...

  8. WPF 鼠标在图片Image上悬停时切换更改设置图片源Source

    // 无效的写法,图片不会被切换 <Image Margin="0,0,0,0" Width="50" Height="50" Sou ...

  9. Java中的逆变与协变 专题

    结论先行: PECS总结: 要从泛型类取数据时,用extends: 协变 要往泛型类写数据时,用super: 逆变 既要取又要写,就不用通配符(即extends与super都不用) 不变 List&l ...

  10. ML:机器学习中常用的Octave语句

    coursera上吴恩达的机器学习课程使用Octave/Matlab实现算法,有必要知道Octave简单的语句.最重要的:在遇到不会的语句,使用'''help '''或者'''doc '''查看官方文 ...