python3 批量管理Linux服务器 下发命令与传输文件
#!/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服务器 下发命令与传输文件的更多相关文章
- linux服务器rz命令上传文件
1.首先,要是服务器不支持rz命令的话,需要安装执行 yum -y install lrzsz 2.再输入rz -be命令,选择需要上传的本地文件
- 使用ansible批量管理远程服务器
使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...
- 使用OpenSSH远程管理Linux服务器
一.使用OpenSSH远程管理Linux服务器 sshd是OpenSSH的服务器端守护进程,与之对应的Windows下客户端软件有SecureCRT/Xshell/PuTTY等. OpenSSH一般为 ...
- 如何使用图形界面Webmin管理linux服务器
出处:http://linux.cn/thread/11992/1/1/ 如何使用图形界面Webmin管理linux服务器 一台典型的linux服务器运行命令行环境中,并已经包括了一些用于安装和配置各 ...
- [转载]你需要知道的 16 个 Linux 服务器监控命令
转载自: 你需要知道的 16 个 Linux 服务器监控命令 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 ...
- linux 服务器常用命令整理
linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...
- Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关
Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...
- ansible批量修改linux服务器密码的playbook
从网上找到批量修改Linux服务器root密码的playbook. 使用方法: 1.输入要修改的inventory组 2.按需要,在playbook中输入要修改的IP.新密码,如下: - hosts: ...
- 管理Linux服务器的用户和组
管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...
随机推荐
- Python之爬虫-中国大学排名
Python之爬虫-中国大学排名 #!/usr/bin/env python # coding: utf-8 import bs4 import requests from bs4 import Be ...
- String字符串类的获取功能
StringDemo.java /* * String类的获取功能: * int length():获取字符串的长度,其实也就是字符个数 * char charAt(int index):获取指定索引 ...
- Windows Server 2012 防火墙如何添加端口例外的方法(转)
Windows Server 2012 防火墙如何添加端口例外的方法 Windows Server 2012 防火墙如何添加端口例外的方法 在Windows Server 2012系统中,如果用户想在 ...
- hihoCoder#1094 Lost in the City
原题地址 限时10s,所以不用考虑什么算法了,暴力吧 分别按照3x3视野的四个方向去地图上匹配,把符合的地点标记出来,最后统一按照从上到下,从左到右的顺序输出. 代码: #include <io ...
- HDU 4803 贪心
尽可能的让当前的平均值接近最后的平均值才能最快达到终点的情况 #include <cstdio> #include <cstring> #include <iostrea ...
- hihocoder #1034 : 毁灭者问题 平衡树(set)+线段树
#1034 : 毁灭者问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁 ...
- android listVIew实现button按钮监听程序
1.重写simpleAdapter 方法@Override public HashMap<String,String> getItem(int position) { // TODO Au ...
- HDU 5876 补图 单源 最短路
---恢复内容开始--- Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (J ...
- Java开发笔记(九十九)定时器与定时任务
前面介绍了线程的几种运行方式,不管哪种方式,一旦调用了线程实例的start方法,都会立即启动线程的事务处理.然而某些业务场景在事务执行时间方面有特殊需求,例如期望延迟若干时间之后才开始事务运行,又如期 ...
- 经常使用的android设计模式
一般来说,经常使用的android设计模式有下面8种:单例.工厂.观察者.代理.命令.适配器.合成.訪问者. 单例模式:目的是为了让系统中仅仅有一个调用对象,缺点是单例使其它程序过分依赖它,并且不 ...