通過expect實現scp密碼自動輸入

2021-05-26 19:38:07 字數 1448 閱讀 7166

we first run expect  int shell cmd

if we don't install expect

we can use this to install expect in ubuntu:

sudo apt-get install expect

fiilename:scp.exp

# filename:scp.exp

#!/usr/bin/expect -f

#progame:

#we copy today's wrf_data_*.dat from server

#history:

#2011/07/20 feng first release v1.0

set timeout -1

#we set password here

set passwd password***

#we use [exec date "+%y%m%d"] to run shell cmd ,then the return value ,we put in date

set date [exec date "+%y%m%d"]

#命令需要多個引數時

set lastdate [exec date "-d last-day" "+%y%m%d"]

#where we put the file in local

set localpath /home/feng/..........

#給ssh執行程序加個殼,用來傳遞互動指令

#scp today's wrf_data_*.dat

spawn scp **@ip:~/szmb_forecast/wrf_data_$*.dat $

match_max 100000

#when we need to put password:

expect -exact "password:"

#we send passwd to

send -- "$passwd\r"

expect eof

#scp lastday's 23 's wrf_data_*.dat

spawn scp **@ip:~/szmb_forecast/wrf_data_$23.dat $

match_max 100000

#when we need to put password:

expect -exact "password:"

#we send passwd to

send -- "$passwd\r"

expect eof

#when we finish copying ,exitexit

we run this by type cmd in shell:expect scp.exp

scp遠端拷貝expect實現SHELL

在linux上,我們可以很方便的使用scp命令來遠端拷貝檔案,但是由於scp命令本身無儲存密碼選項,所以在shell裡面無法像samba那樣子儲存密碼,比較麻煩,下面介紹下兩種實現方法。方法一 scp 遠端拷檔案,建議用搭配 ssh 方法 1 在客戶機上生成 ssh 需要的 rsa 金鑰 ssh k...

shell指令碼利用expect實現scp免密傳輸

shell指令碼實現scp傳輸 命令解釋 c 表示可以在命令列下執行except指令碼 spawn 命令啟用乙個unix程式來互動,就是在之後要執行的命令 expect aaa 表示程式在等待這個aaa的字串 send 向程式傳送字串,expect和send經常是成對出現的,比如當expect aa...

expect實現rsync免密碼傳輸

問題背景 生產伺服器a,災備伺服器b,由於生產環境更新頻繁,要保持災備環境和生產環境的資料一致性,所以用指令碼形式定時同步生產a的內容到災備b。實現方式 1 expect指令碼實現單個目錄免密碼傳輸,dataguard expect.exp usr bin expect 定義變數 srcdir 源路...