#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import paramiko
import os, stat
import sys
import operator as op
from string import Template def ssh_connect( _host, _username, _password ):
_ssh_fd = paramiko.SSHClient()
_ssh_fd.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
_ssh_fd.connect( _host, username = _username, password = _password, timeout = 5 )
return _ssh_fd def ssh_exec_cmd( _ssh_fd, _cmd ):
return _ssh_fd.exec_command( _cmd ) def ssh_sftp( _ssh_fd, _local_path, _remote_path ):
_sftp = paramiko.SFTPClient.from_transport(_ssh_fd.get_transport())
_sftp = _ssh_fd.open_sftp()
_sftp.put(_local_path, _remote_path)
#_sftp.get(_remote_path, _local_path)
_sftp.close() def ssh_close( _ssh_fd ):
_ssh_fd.close() def main(ip, password, fiperror, cmds, flag):
username = 'root' fip = open(fiperror,'a') cmds = cmds
flag = flag try:
sshd = ssh_connect( ip, username, password ) if flag == '':
local_path=input('local file path: ')
remote_path=input('remote host path: ') local_path = os.path.join(os.getcwd(), local_path)
try:
ssh_sftp(sshd, local_path, remote_path)
except Exception as e:
print('Error: sftp failed') for cmd in cmds:
stdin, stdout, stderr = ssh_exec_cmd( sshd, cmd )
err_list = []
err_list = stderr.readlines() items = []
items = stdout.readlines() for item in items:
print("{} {}".format(ip, item), end='')
s = Template("nova list --${host_name}")
s = s.safe_substitute(host_name=item) ssh_close( sshd )
except Exception as e:
print( 'ssh %s@%s: %s' % (username, ip, e) )
fip.writelines([ip,"\t",password,"\n"])
fip.close() if __name__ == "__main__":
with open('iplist') as f: errfile = "/tmp/err.log"
fd = open(errfile, 'w')
fd.truncate()
fd.close() scp_flag = input('scp regular file? yes(input 1), no(input 0): ')
cmds = []
cmd = input("input the cmd you want to execute(end with 0): ")
while cmd != '':
cmds.append(cmd)
cmd = input('input the cmd you want to execute(end with 0): ')
for line in f:
x = line.split()
ip = x[0]
if len(x) == 1:
password = ''
else:
password = x[1]
print('---------------ip address: %s--------------' % ip)
main(ip=ip, password=password, fiperror=errfile, cmds=cmds, flag=scp_flag)

python3 批量管理Linux服务器 下发命令与传输文件的更多相关文章

  1. linux服务器rz命令上传文件

    1.首先,要是服务器不支持rz命令的话,需要安装执行 yum -y install lrzsz  2.再输入rz -be命令,选择需要上传的本地文件 

  2. 使用ansible批量管理远程服务器

    使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...

  3. 使用OpenSSH远程管理Linux服务器

    一.使用OpenSSH远程管理Linux服务器 sshd是OpenSSH的服务器端守护进程,与之对应的Windows下客户端软件有SecureCRT/Xshell/PuTTY等. OpenSSH一般为 ...

  4. 如何使用图形界面Webmin管理linux服务器

    出处:http://linux.cn/thread/11992/1/1/ 如何使用图形界面Webmin管理linux服务器 一台典型的linux服务器运行命令行环境中,并已经包括了一些用于安装和配置各 ...

  5. [转载]你需要知道的 16 个 Linux 服务器监控命令

    转载自: 你需要知道的 16 个 Linux 服务器监控命令 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 ...

  6. linux 服务器常用命令整理

    linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...

  7. Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关

    Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...

  8. ansible批量修改linux服务器密码的playbook

    从网上找到批量修改Linux服务器root密码的playbook. 使用方法: 1.输入要修改的inventory组 2.按需要,在playbook中输入要修改的IP.新密码,如下: - hosts: ...

  9. 管理Linux服务器的用户和组

    管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...

随机推荐

  1. Codeforces Round #413 B T-shirt buying (STL set)

    链接:http://codeforces.com/contest/799/problem/B 题意: 给定n件衣服,对于第i(1<i<=n)件衣服,分别有价格pi,前颜色ai,后颜色bi三 ...

  2. Directory获取方式

    1) FSDirectory.open FSDirectory.open()会以最合适的方式来获取一个Directory对象. 2) RAMDirectory 可以将磁盘中的索引加载到内存中,访问速度 ...

  3. javamail实现注册激活邮件

    http://www.jb51.net/article/111926.htm https://www.cnblogs.com/ganchuanpu/archive/2016/11/29/6115691 ...

  4. Python+selenium下拉菜单选项

    案例:在我要自学网登录页面选择要保留的时间 具体页面如图所示: 使用前端工具查看部分页面代码: <select class="loinp" name="Cookie ...

  5. BNUOJ 6719 Simpsons’ Hidden Talents

    Simpsons’ Hidden Talents Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU ...

  6. 整体二分--BZOJ1901: Zju2112 Dynamic Rankings

    n<=10000个数有m<=10000个操作,1.询问一个区间的第k小的数:2.单点修改. 带修主席树. 整体二分. 整体二分的必要条件: #include<string.h> ...

  7. Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】

    题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...

  8. PostgreSQL及PostGIS使用

    基础知识 参考文档:http://www.postgis.net/docs/ PostGIS支持的GIS对象是OpenGIS Consortium(OGC)定义的“简单特征”的超集.OpenGIS规范 ...

  9. docker容器-快速部署Jenkins

    1.在本地虚拟机环境.安装CentOS 7,并安装docker容器 2.在docker容器中执行  docker pull jenkinsci/blueocean 3.查看已经下载的Jenkins镜像 ...

  10. UIButton图片文字位置的四种情况

    我们在做项目的过程中经常会遇到各定制UIButton 1.左边图片,右边文字 2.左边文字,右边图片 3.上边图片,下边文字 4.上边文字,下边图片 针对这四种情况 使用UIButton的catego ...