从远程服务器中提取文件,然后删除

时间:2019-04-05 19:49:45

标签: expect

我有一个Expect脚本,该脚本根据模式从远程位置检索文件并将它们放置在当前目录中。传输之后,我想删除从远程位置检索到的文件。我的脚本执行MGET并进行传输。我尝试根据用于执行MGET删除文件的模式使用RM命令,但是除我检索到的文件以外,我还可以删除其他文件。您能帮我删除从远程位置检索到的文件吗?

$ env(SSH_FILE)\ r“是脚本中的模式变量。例如:.835

 sftp> rm *.835*                                             
 Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCOR0.835  
 Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCORS.835 

我不想根据此模式删除

send "CD $env(SSH_CDIR)\r"
expect "No such file or directory"    {quit;exit 1}
send "LCD $env(SSH_LCD)\r"
expect "path name does not exist"     {quit;exit 1}
send "mget $env(SSH_FILE)\r"

send "rm $env(SSH_FILE)\r"

1 个答案:

答案 0 :(得分:1)

您可以做的是:

  • mget完成后,获取本地目录中与模式匹配的文件列表:

    set local_files [glob -directory $env(SSH_LCD) -tails $env(SSH_FILE)
    
  • 并删除任何符合以下条件的远程文件名:

    foreach f $local_files {
        send "rm $f\r"
        expect $prompt
    }