scp 여러 기기의 파일 다운로드

1717 단어 scp
여러 서버에서 파일을 쉽게 가져오고 서버 로그를 로컬로 대량 복사합니다.이 스크립트는 2개의 파일 scp를 포함합니다.sh와 scp.exp.
사용 방법:
sh scp.sh
username: 당신의 ssh가 목표 기계로 가는 비밀번호입니다.host1,host2: 목표 기계의 IP 또는 기계 이름, 쉼표 분할.log_file: 대량으로 다운로드할 로그의 절대 경로입니다.
실행 후, 프로그램은 목표 기계의 비밀번호를 입력하라고 알립니다 (여기 여러 기계의 ssh 사용자 이름 비밀번호가 같고, 이전에 ssh 연결을 설정해야 했습니다. yes/no 상호작용을 할 필요가 없습니다)
scp.sh 주 프로그램:
#!/bin/bash
if [ $# != 3 ]    ;then
    echo "usage:  "
    exit 1
fi
stty -echo               # 
read -p "Please enter target hosts' passwd of $1:" passwd
stty echo
echo

dirpath=`dirname $0`
#echo $dirpath
$dirpath/scp.exp $1 $2 $passwd

expect 스크립트:
#!/usr/bin/expect -f
set user [lindex $argv 0]
set hosts [lindex $argv 1]
set logfile [lindex $argv 2]
set passwd [lindex $argv 3]
set timeout 10
set 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
    }
}

예:
시스템 로그 2대 가져오기 수행:
./scp.sh root host1,host2/data/logs/access.log
스크립트 실행 디렉터리에 기계 로그 2대 다운로드
로그 접미사는 기계 이름으로 끝납니다.
access.log.host1
access.log.host2
access.log.host3

좋은 웹페이지 즐겨찾기