从Expect SCP Script捕获输出日志

时间:2016-12-22 10:55:21

标签: linux bash unix expect scp

我想捕获scp自动脚本的所有输出并将所有输出移动到日志文件

我的剧本:

#!/usr/bin/expect -f
spawn bash -c "scp /home/abc/pdf/105784/*.pdf labdb1@10.150.10.104:/home/labdb2/Desktop/l/" 
expect {
  -re ".*sword.*" {
   exp_send "password@\r"
  }
}
interact

输出: -

./exp_test.sh 
spawn bash -c scp /home/abc/pdf/105784/*.pdf labdb1@10.150.10.104:/home/labdb2/Desktop/l/
labdb1@10.150.10.104's password:
104_105856_adhikari.pdf                             100%   10KB   9.8KB/s   00:00
134_105856_adhikari.pdf                             100%   10KB   9.9KB/s   00:00
135_105856_adhikari.pdf                             100%   10KB   9.8KB/s   00:00
193_105856_adhikari.pdf                             100%   10KB   9.8KB/s   00:00

我希望日志文件中的所有输出都说名称scp_log.txt我也不希望在屏幕上显示以下内容

spawn bash -c scp /home/abc/pdf/105784/*.pdf labdb1@10.150.10.104:/home/labdb2/Desktop/l/
labdb1@10.150.10.104's password:

2 个答案:

答案 0 :(得分:0)

IO重定向是您想要使用的东西:

spawn bash -c "scp /home/abc/pdf/105784/*.pdf labdb1@10.150.10.104:/home/labdb2/Desktop/l/ &> scp_log.txt" 

或只是简单地将脚本调用为

./exp_test.sh &> scp_log.txt

答案 1 :(得分:0)

如果您对基于纯Expect的方式感兴趣,那么您应该使用log_user

#!/usr/bin/expect -f
log_user 0; # Disabling logging to user window
log_file -a -noappend scp_log.txt
spawn bash -c "scp /home/abc/pdf/105784/*.pdf labdb1@10.150.10.104:/home/labdb2/Desktop/l/" 
expect {
  -re ".*sword.*" {
   exp_send "password@\r"
  }
}
interact

如果要启用日志记录到用户,则可以使用log_user 1执行相同的操作。