从 Expect SCP 脚本捕获输出日志

Capture output log from Expect SCP Script

我想捕获 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:

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

如果您对基于纯 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来做同样的事情。