本文系統centos6.0
1.方法1:簡便方法
upload ()
{} "*assword:"
-re .
eof
}eod
}由於expect和bash的關鍵字不一樣,所以使用bash -c進行關鍵字轉換,否則會出現找不到檔案的提示。
2.方法2,用於密碼又特殊字元的情況
tmp_expect_file="/tmp/test_scp$$"
local_ip=`grep "ip" $(cd "$(dirname "$0")";pwd)/temp_ipfile | awk -f"=" ''`
#generate expect
echo '#!/usr/bin/expect
set local_ip [lindex $argv 0]
set remote_ip [lindex $argv 1]
set cp_file [lindex $argv 2]
set remote_dir [lindex $argv 3]
set user [lindex $argv 4]
set passwd [lindex $argv 5]
set timeout 5
set timeout -1 用於無限時間
spawn scp -o bindaddress=$local_ip -o "rsaauthentication no" -o "publickeyauthentication no" $cp_file
$user@$remote_ip:$remote_dir
expect
"*yes/no*"
*assword*" }
expect
"*:~*"
"*denied*"
"*try again*"
"*last login:*" }
expect timeout
expect eof
' > $
chmod u+x $ || return 1
expect -d -f "$" "$local_ip" "$remote_ip" "$cp_file" "$remote_dir" "$user" "$passwd" 2>&1 >> $log
return $?
expect是unix系統中用來進行自動化控制和測試的軟體工具,由don libes製作,作為tcl指令碼語言的乙個擴充套件,應用在互動式軟體中如telnet,ftp,passwd,fsck,rlogin,tip,ssh等等。該工具利用unix偽終端包裝其子程序,允許任意程式通過終端接入進行自動化控制;
1、安裝
1 yum install expect expect-devel -y
2、編寫script
#!/usr/bin/expect
if
set src_file [lindex $argv 0]
set username [lindex $argv 1]
set host_ip [lindex $argv 2]
set dest_file [lindex $argv 3]
set password [lindex $argv 4]
spawn scp -r $src_file $username@$host_ip:$dest_file
expect
} "*assword:" }
expect "100%"
expect eof
3、用法例項:
你也可以使用其他帳號;
上面實現了對單台機器複製;
4、批量伺服器複製
#!/bin/bash
src_file=$1
username=$2
host_list=$3
dest_file=$4
password=$5
cat $host_list | while read line
dohost_ip=`echo $line | awk ''`
./allscp.sh $src_file $username $host_ip $dest_file $password
done
用法例項:
希望大家有更好的介意~
推薦閱讀:
批量scp指令碼——從多台機器拷貝檔案
linux scp 和 ssh 命令
linux系統常用的cpio命令及scp命令
linux cp scp命令使用
linux伺服器 scp 不需要密碼配置
linux 下 scp 的用法
copy 本地的檔案到遠端的機器上 scp etc lilo.conf k net67.ee.oit.edu.tw home k 會將本地的 etc lilo.conf 這個檔案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目錄下。copy遠端機器上的檔案到本地來 scp ...
Linux下scp的用法
scp就是secure copy,乙個在linux下用來進行遠端拷貝檔案的命令。有時我們需要獲得遠端伺服器上的某個檔案,該伺服器既沒有配置ftp伺服器,也沒有做共享,無法通過常規途徑獲得檔案時,只需要通過簡單的scp命令便可達到目的。一 將本機檔案複製到遠端伺服器上 scp home adminis...
linux下scp的應用
scp 命令是 ssh 中最方便有用的命令了,試想,在兩台伺服器之間直接傳送檔案,僅僅用 scp 乙個命令就完全解決了。你可以在一台伺服器 上以 root 身份執行 scp servername home ftp pub file1 這樣就把另一台伺服器上的檔案 home ftp pub file1...