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 源路...