前言:
自己工作之余借助paramiko模块写了一个批量执行命令,上传下载文件的脚本,写的代码烂到哭,但最起码还能凑合着用吧。
使用环境是python2.6-2.7,其中要在当前目录下生成一个ssh_login.txt文件,它是用户保存登陆用户名和密码以及主机名的文件,格式如下:
主机名,端口,用户名,验证方式是公私钥认证还是密码验证,密码, #每行以逗号结尾,不允许有空行,
172.168.19.25,22,root,password,xxxxx, 172.168.19.26,22,root,password,xxxxx,
脚本源码如下,使用方法是:
python 脚本名 [ -c command] -m put/down -l local_file_path -r remote_file_path
-c 的话是批量执行命令,此时上传下载功能将不使用。
-m是指定模式,是下载还是上传
-l 是指定本地文件路径
-r 是远端文件路径,必须是绝对路径,要写出文件名来。
-h 是捕获帮助信息。
比如我现在要批量执行命令 -- python xxx.py -c "uptime; df -hT"
比如我现在要批量上传文件 -- python xxx.py -m put -l /tmp/123.txt -r /tmp/123.txt
比如我现在要批量下载文件 -- python xxx.py -m down -l /tmp/123.txt -r /tmp/123.txt
这里要注意的是,如果是下载模式,那么下载后的文件格式是这样的 文件名_主机ip
如果运行出错了,那么会在当前目录下生成一个error.log,这里记录了如主机登陆不上或者是无法连接等错误信息。
默认启动10个进程,粘贴复制的时候可能把缩进对齐给弄乱了,如果有疑问,可以联系我的email:18500777133@sina.cn
#/usr/bin/env python import paramiko import sys import os import getopt import multiprocessing import time import socket pkey_file='/root/.ssh/id_rsa' if os.path.exists('ssh_login.txt') is not True: print '