博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量scp脚本——从多台机器拷贝文件
阅读量:6915 次
发布时间:2019-06-27

本文共 1473 字,大约阅读时间需要 4 分钟。

为了方便的从多台服务器获取日志,写了个简易脚本专门用于批量拷贝服务器日志到执行脚本的机器中。该脚本包含2个文件bscp.sh和bscp.exp。

使用方式:

sh bscp.sh <username> <host1,host2> <log_file>

username:你ssh到目标机器的密码。
host1,host2:目标机器的ip或者机器名,多个之间用逗号分割。
log_file:你要批量下载的日志的绝对路径。

运行后,程序提示输入目标机器的密码(这里需要多台机器的ssh用户名密码是相同的,且之前需要建立过ssh连接,就是不需要再进行yes/no交互)

bscp.sh主程序:

 

#!/bin/bashif [ $# != 3 ]    ;then    echo "usage:
" exit 1fistty -echo #隐藏密码输出read -p "Please enter target hosts' passwd of $1:" passwdstty echoechodirpath=`dirname $0`#echo $dirpath$dirpath/bscp.exp $1 $2 $3 $passwd

 

expect脚本:

 

#!/usr/bin/expect -fset user [lindex $argv 0]set hosts [lindex $argv 1]set logfile [lindex $argv 2]set passwd [lindex $argv 3]set timeout 10set hostlist [split $hosts ","]             # 把host字符串分割成列表set slashIdx [expr [string last / $logfile] + 1] set filename [string range $logfile $slashIdx end]  # 获取日志文件名foreach h $hostlist {    set hostfile $filename    spawn scp $user@$h:$logfile ./$filename.$h    expect "*Enter passphrase for key*" {   # 这里可以改成其他可能出现的显示文字,如password:等.或者加多yes/no的交互环节        send  "$passwd\r"        send  "\r"    }    expect "*%*" {set timeout -1 ; puts "\rtrasmitting..."}    expect eof {                            # 下载完成后输出成功信息        puts "\rtransmit successfully!"        set timeout 10    }}

 

 

一个栗子:

执行获取3台机日志:

./bscp.sh ultrani host1,host2,host3 /home/admin/xxx/logs/access.log

结果是把3台机器的日志下载到执行脚本的目录中

日志后缀以机器名结尾:

access.log.host1
access.log.host2
access.log.host3

 

转载地址:http://tixcl.baihongyu.com/

你可能感兴趣的文章
图书管理系统【用户、购买、订单模块、添加权限】
查看>>
JavaScript30秒, 从入门到放弃之Array(六)
查看>>
RabbitMQ的安装和使用
查看>>
WebAssembly起步
查看>>
基于CentOS搭建Hexo博客--设置NexT主题及个性化定制
查看>>
百度移动端首页秒开学习
查看>>
【304天】每日项目总结系列042(2017.12.06)
查看>>
数人云|给还在犹豫选择的你,微服务架构与整体架构的各自优势
查看>>
ES6之数值的扩展
查看>>
算法之路(1) -- two sum
查看>>
JavaScript Event loop 事件循环
查看>>
TensorFlow端到端旋风教程
查看>>
【237天】网易云课堂计算机专业基础课程系列——计算机专业导论(2)
查看>>
读Zepto源码之Fx模块
查看>>
Java究极打基础之ArrayList篇
查看>>
2017-10-06 前端日报
查看>>
即时通信相关技术总结
查看>>
如何编写更好的SQL查询:终极指南-第二部分
查看>>
[React技术内幕] key带来了什么
查看>>
Vue2+VueRouter2+webpack 构建项目实战(四):接通api,渲染列表
查看>>