我想捕获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:
答案 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
执行相同的操作。