1.方法1:簡便方法
upload ()
/usr/bin/expect << eod
spawnbash -c "scp -r /tmp/log1/* [email protected]:/tmp/log2"
for {} {}
"*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 $?
scp遠端上傳檔案自動填寫密碼
專案中有這麼個需求 後台通過上傳檔案到遠端伺服器不能手動填寫密碼,同時也要獲取上傳進度。於是就想起了scp這個命令,下面是一組shell語句 shell.sh expect c set timeout 1200 spawn usr bin scp r 1 4 2 3 expect password ...
scp 遠端複製檔案
每次開新伺服器我都傻傻的重灌一次環境,才知道原來可以直接從其他伺服器上把家目錄遠端拷貝過來。本質上,乙個使用者就是乙個資料夾而已,全拷過來就能正常使用了。adduser username 先新增你這個使用者 su username cd 切換過來,並進入家目錄 scp r 172.0.0.0 hom...
scp上傳檔案許可權問題
在mac中利用scp將檔案上傳至linux伺服器時,輸入密碼後,總出現許可權不足的問題,在確定密碼無誤時,要注意ssh的連線是利用密碼登入還是基於配置好的公私鑰進行連線。1 若是密碼登入,要注意上本地上傳檔案與目標目錄的許可權是否足夠 利用chmod 777 進行設定 2 若是利用公私鑰進行連線,在...