#!/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. PHP:POST OR GET 请求

    文章来源:http://www.cnblogs.com/hello-tl/p/7685216.html /** * 模拟提交参数,支持https提交 可用于各类api请求 * @param strin ...

  2. 洛谷 4933 洛谷10月月赛II T2 大师

    [题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...

  3. 3.2.8 sed 的运作

        sed 的工作方式相当直接.命令行上的每个文件会依次打开与读取.如果没有文件,则使用标准输入,文件名“-”(单个破折号)可用于表示标准输入.       [many@avention Desk ...

  4. 数据导出Excel,动态列

    今天碰到一个需求,要求将用户回答的问卷及问题导出Excel表格,问卷对应的问题数量不一致,需要动态添加列表头,简单记录. 要导出Excel需要添加poi.jar包 用户-问卷实体(固定列): pack ...

  5. Python+selenium下拉菜单选项

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

  6. Python接口测试之对MySQL的操作(六)

    本文章主要来说python对mysql数据库的基本操作,当然,前提是已经搭建了python环境和搭建了Mysql 数据库的环境,python操作mysql数据库提供了MySQLdb库,下载的地址为: ...

  7. noip模拟赛 旅行

    分析:一个贪心的想法是每次找到根的点权和最大的点进行操作,关键是怎么维护.每次找最大值,修改后会对这条链上每个点的子树上的点造成影响,可以用线段树来维护.找最大值就是区间求最大值嘛,对子树进行操作利用 ...

  8. 【判断二分图】C. Catch

    https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/C [题意] 给定一个无向图,给定小偷的起始位置 从这个起始位置开始,小偷可以在单 ...

  9. Discuz! X2.5数据库字典【转载】

    DROP TABLE IF EXISTS pre_common_admincp_cmenu; CREATE TABLE pre_common_admincp_cmenu ( `id` SMALLINT ...

  10. CSS font-family 属性

    CSS font-family 属性 实例 为段落设置字体: p { font-family:"Times New Roman",Georgia,Serif; } 亲自试一试 浏览 ...