最近有个需求,想获取部分服务器上运行了那些应用服务,一台台去看,太费劲了,参考牛人写了此脚本,后期再加上一个前端页面做一些简单的运维维护的工作,凑合着先用着,待完善,
注:此脚本依懒于安装fabric ,安装过程参考: http://5973819.blog.51cto.com/5963819/1532334
 #!/usr/bin/env python
#coding:utf8
#####################################################
# Author: wangganyu188 wangganyu188@gmail.com
# Last modified: 2014-09-05
# Filename: sys_ops.py
##################################################### from fabric.api import env,run,put,get
from os import path
from re import findall
from sys import argv
from fabric.context_managers import hide
from time import sleep USER='root'
HOST,IP_LIST=[],[]
PORT=''
timeout = 1
CMD,getSRC,getDST,putSRC,putDST = '','','','','' for i in range(1,len(argv)+1):
#print i
if argv[i-1] == '-h' or len(argv) == 1:
print """
USAGE:
-c [cmd] The command you want the host(s) to run
-f [file] The file content multiple ip address you want to connect
-P [put] The local file that you want to upload to the remote host(s)
-G [get] The remote file that you want to download to the local host
-h [help] Print this help screen
""" if argv[i-1]=='-f':
if path.isfile('%s'%(argv[i])) == True:
file_list = open('%s'%(argv[i]),'r').readlines()
for line in file_list:
#print line
HOSTIP = line.split()[0]
HOSTPW = line.split()[1]
#print HOSTIP,'\n',HOSTPW
IP_LIST.append(HOSTIP)
env.password ='%s'%HOSTPW
#print IP_LIST,'\n',env.password
if argv[i-1] == '-c':
CMD = argv[i] if argv[i-1] == '-P':
p = src = argv[i].split(',')
putSRC = p[0]
putDST = p[1] if argv[i-1] == '-G':
g = src = argv[i].split(',')
getSRC = g[0]
getDST = g[1] else:
IP_PORT = []
if len(IP_LIST) != 0:
for ip in IP_LIST:
IP_PORT.append(ip + ':' + PORT) if CMD !='':
def command():
with hide('running'):
run("%s"%CMD) for ipport in IP_PORT:
env.host_string = ipport
print "Execute Command : \033[1;33;40m %s\033[0m at Host : \033[1;33;40m %s \033[0m" %(CMD,ipport.split(':')[0])
print "***************************************************************"
command()
print '***************************************************************' if putSRC and putDST != '':
def PUTupload():
with hide('running'):
put("%s"%(putSRC),"%s"%(putDST))
for ipport in IP_PORT:
env.host_string = ipport
print "PUT local file:\033[1;33;40m %s \033[0m to remote HOST:\033[1;33;40m %s\033[0m : \033[1;33;40m %s\033[0m" %(putSRC,ipport.split(':')[0],putDST)
print "*****************************************************************"
PUTupload()
print "*****************************************************************" if getSRC and getDST != '':
def GETdown():
with hide('running'):
get("%s"%(getSRC),"%s"%(getDST))
for ipport in IP_PORT:
env.host_string = ipport
print "GET remote file:\033[1;33;40m %s \033[0m from host :\033[1;33;40m %s\033[0m to local \033[1;33;40m %s\033[0m" %(getSRC,ipport.split(':')[0],getDST)
print "*****************************************************************"
GETdown()
print "*****************************************************************"

python 远程执行命令、发布文件的更多相关文章

  1. 远程执行命令和文件分发shell脚本

    deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...

  2. python 远程执行命令

    1.简单版 # coding: utf-8 import paramiko import re from time import sleep def ssh(): ssh = paramiko.SSH ...

  3. python 远程执行命令、上传、下载举例

    使用python中的 paramiko 实现远程操作,需要安装 paramiko 模块. # vi pssh.py #!/usr/bin/python #coding=utf-8 ''' Create ...

  4. python远程执行命令

    def run(): try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ...

  5. Python Paramiko实现sftp文件上传下载以及远程执行命令

    一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install par ...

  6. 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件

    本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...

  7. python之实现批量远程执行命令(堡垒机)

    python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...

  8. 使用paramiko远程执行命令、下发文件

    写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...

  9. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

随机推荐

  1. 代码上传不到github远程仓库的经历和总结

    第二次的作业是分布式版本控制系统Git的安装与使用.一切都好端端地进行,知道最后的上传到给远程仓库时一直都上传失败.舍友也过来调试和助教的指导,依然不成功.我也上网进行了大量的翻查资料也未能成功.这是 ...

  2. 07_Java基础语法_第7天(练习)_讲义

    今日内容介绍 1.循环练习 2.数组方法练习 01奇数求和练习 * A: 奇数求和练习 * a: 题目分析 * 为了记录累加和的值,我们需要定义一个存储累加和的变量 * 我们要获取到1-100范围内的 ...

  3. /etc/tolmcat/Server.xml 实例说明

      # 这是service类 <Service name="Catalina">   # 这是http连接器,响应用户请求 <Connector port=&qu ...

  4. 用node研究axios前后端交互状态码规则

    研究状态码规则围绕我的脑袋有些时间了. 加上最近比较不忙,开始了这方面的研究. 后端用的是直接跑过的node框架,express.可以直接参考express官方网站:http://www.expres ...

  5. Fastqc使用说明

    用FastQC检查二代测序原始数据的质量 2013-01-28 21:28:10|  分类: Bioinformatics |  标签:bioinformatics  deep-seq   |举报 | ...

  6. Implement Trie and find longest prefix string list

    package leetcode; import java.util.ArrayList; import java.util.List; class TrieNode{ Boolean isWord; ...

  7. java static{}块

    java中static{}块只有在类加载是才会被调用. 这说明:static只有可能被调用一次. 原因:首先理解什么是类加载,区分类加载和申明对象的区别. public class StaticTes ...

  8. ClientDataSet字段不能进行编辑时的解决方法

    ClientDataSet字段不能进行编辑时的解决方法: procedure ModifyClientDataSet(const YesOrNot: Boolean;  cs : TClientDat ...

  9. 【Django】用pycharm初学习使用Django

    开发框架流程 M V C(99%的开发都是这种流程.) 1.URL控制器 2.Views 视图 3.models 库   1.首先创建一个Django   2.创建成功后里面几个模块的功能   用它来 ...

  10. Graph And Its Complement CodeForces - 990D(思维构造)

    题意: 图中有n个点,开始有a个连通块,然后连着的边断开,不连的边连上,变为b个连通块,输出原图的邻接矩阵. 解析: 原图中连通块大于1的图,经过上述操作后,一定变成只有1个连通块的图. 若n != ...