linux用scp远程传输文件(自动化)

来源:互联网 发布:安卓安装yum 编辑:程序博客网 时间:2024/06/02 04:20

传输功能使用scp,自动回复yes和填写密码使用except脚本;需要自行百度安装,先安装tcl语言环境,再安装except。

我写了一个脚本一键安装如下(需要提前下载两个安装包并放到同一个目录):

# !bin/bash


tar -zxvf tcl8.5.18-src.tar.gz
cd ./tcl8.5.18/unix/
pwd
./configure
make
make install
cp tclUnixPort.h ../generic
cd ..
cd ..


tar -zxvf expect5.45.tar.gz
cd ./expect5.45
pwd
./configure --with-tclinclude=/home/shaohong/tcl8.5.18/generic/ --with-tclconfig=/usr/local/lib/
make
make install

安装成功后命令行键入except可以显示:

except1.1>

接下来写shell脚本,将远程ip地址,账号,密码,传输文件名,远程目录。写入配置文件.ini:

格式如下

192.168.1.168 root 654321 game1000/file1  ./game1001/file1

实现脚本except_scp如下:

#!/usr/local/bin/expect
set timeout -1
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp -r $src_file $username@$host:$dest_file
 expect {
 "(yes/no)?"
  {
  send "yes\n"
  expect "*assword:" { send "$password\n"}
 }
 "*assword:"
{
 send "$password\n"
}
}
expect "100%"
expect eof

执行脚本loop_scp如下:

#! /bin/bash
IFS="
"
for LINE in `cat ./配置文件.ini`
do
var1=`echo $LINE|awk -F ' ' '{print $1}'`
var2=`echo $LINE|awk -F ' ' '{print $2}'`
var3=`echo $LINE|awk -F ' ' '{print $3}'`
var4=`echo $LINE|awk -F ' ' '{print $4}'`
var5=`echo $LINE|awk -F ' ' '{print $5}'`
./expect_scp.sh $var1 $var2 $var3 $var4 $var5
done


保存在文件目录执行: sh loop_scp.sh 即可自动传输文件到配置目录。




0 0
原创粉丝点击