python脚本分发bash升级包案例--参考

#!/usr/bin/env python
#encoding:utf-8
#paramiko

import paramiko
import sys,os
import threading
import multiprocessing
import time

iplist = {‘192.168.1.10‘:‘123456‘,‘192.168.2.10‘:‘321456‘,‘192.168.13.10‘:‘111111‘}
user = ‘root‘
host = ‘‘
password = ‘‘
bit = ‘‘
pakg = ‘‘
s = paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
number = 0

def ssh_install(): 
  cmd = ‘rpm -Uvh /tmp/shell_update.rpm‘
  s.connect(host,22,user,password,timeout=1)
  stdin,stdout,stderr = s.exec_command(cmd)
  cmd_result = stdout.read(),stderr.read()
  print ‘======%s--%sbit======‘ %(host,bit)
  for line in cmd_result:
   print line,
  print ‘‘
  s.close()

def ssh_bit():
  global bit
  cmd = ‘getconf LONG_BIT‘
  s.connect(host,22,user,password,timeout=1)
  stdin,stdout,stderr = s.exec_command(cmd)
  cmd_result = stdout.read(),stderr.read()
  bit = int(str(cmd_result[0]).strip())
  s.close()

def ssh_copy():
  global pakg
  t = paramiko.Transport((host,22))
  t.connect(username=user,password=password)
  sftp = paramiko.SFTPClient.from_transport(t)
  sftp.put(pakg,‘/tmp/shell_update.rpm‘ )
  t.close()

def run(ipinfo):
  global pakg
  global host
  global password
  global bit
  host = ipinfo[0]
  password = ipinfo[1]
  ssh_bit()
  if bit == 64:
    pakg = ‘/tmp/bash-3.2-33.el5_11.4.x86_64.rpm‘
    ssh_copy()
    ssh_install()
  elif bit == 32:
    pakg = ‘/tmp/bash-3.2-33.el5_11.4.i386.rpm‘
    ssh_copy()
    ssh_install()

if len(iplist.items()) < 10:
  process_number = len(iplist.items())
else:
  process_number = 10
pool = multiprocessing.Pool(processes=process_number) 
for info in iplist.items(): 
  pool.apply_async(run,(info,)) 
pool.close() 
pool.join()
时间: 2024-08-26 21:45:15

python脚本分发bash升级包案例--参考的相关文章

python 捕获 shell/bash 脚本的输出结果

#!/usr/bin/python## get subprocess module import subprocess ## call date command ##p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True) ## Talk with date command i.e. read data from stdout and stderr. Store this info in tuple ## Inte

python脚本后台运行

问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python test1.py & 现在脚本正常运行,通过ps能看到进程号,此时直接关闭ssh终端(不是用exit命令,是直接通过putty的关闭按钮执行的), 再次登录后发现进程已经退出了. 通过后台启动的方式该问题已经解决,这里总结下,也方便我以后查阅. linux 下后台运行 通过fork实现 linux环境

使用docopt生成Python脚本参数项

简介 相比较optparse和argparse,docopt更节省程序员的编写脚本参数提示和参数项时间,但更随意和不规范,且代码维护性更差 使用案例: # coding=utf-8 """1 #这儿写标题,-h的时候会被打印出来 Usage: #没有出现在Usage中的不规范用法,将会打印Usage段,并sys.exit(1) 1.py D_IP init_instance [--configSvr] [--replname=<replSetName>] [-P

BASE64编码原理分析脚本实现及逆向案例

BASE64编码原理分析脚本实现及逆向案例 0x01 简单介绍 数据传送时并不支持所有的字符,很多时候只支持可见字符的传送.但是数据传送不可能只传送可见字符为解决这个问题就诞生了base64编码.base64编码将所有待编码字符转换成64个可见字符表中的字符. 0x02 编码原理 被Base64编码之后所得到的所有字符都是在以下这个表当中的. 上表中总共有64个字符,2^6=64所以只需要6个bit位就足够描述所有的表中字符了.计算机中1个字节8个bit,一个ASCII码占1个字节.因此多出来的

inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)

1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tools 2.inotifywait监控目录状态变化 /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /data # 可以把时间去掉 /usr/bin/

自动化瓦力多渠道打包python脚本

自动化瓦力多渠道打包python脚本 目录介绍 1.本库优势亮点 2.使用介绍 3.注意要点 4.效果展示 5.其他介绍 0.首先看看我录制的案例演示 如下所示,这段python代码很简单,工具十分强大,一键多渠道打包工具. 项目的开源地址:https://github.com/yangchong211/YCWalleHelper 1.本库优势亮点 通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快 配置信息十分简单,代码中已经注释十分详细.Keysto

将Python脚本文件包装成可执行文件

将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装. 安装后,执行import py2exe,不报错则表示安装成功! >>> import py2exe >>>

【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 &ndash; 指定文件编码类型

下面的内容来自:http://www.cnblogs.com/blueskylcc/p/5332642.html, 对方也是转的,不过没有找到转载的出处: 1.#!/usr/bin/python 是用来说明脚本语言是 python 的 是要用 /usr/bin下面的程序(工具)python,这个解释器,来解释 python 脚本,来运行 python 脚本的. 2.# -*- coding: utf-8 -*- 是用来指定文件编码为 utf-8 的 详情可以参考:PEP 0263 - Defin

Bat脚本处理ftp超强案例解说

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://369369.blog.51cto.com/319630/842341 Bat脚本处理ftp超强案例解说 前言:    公司有几百台windows服务器,每次程序更新,如果是一台台拷数据,只怕安排十个人,一天都不一定做得完,所以就必须研究个全自动更新方案来,于是就 想到了FTP,做个主FTP站,在几百台客户机上启动BAT脚本,每30秒检测一次,如果主站有更新程序,就自动下载更新,