2016-04-27 5 views
0

Я уже опубликовал аналогичный вопрос раньше и получил некоторую помощь, и я поменял его на это, но все же он не работает. Я пытаюсь выполнить scp в удаленное местоположение и получать последние файлы с одного дня назад. Он работает, когда я запускаю команду самостоятельно.SCP, используемый с find anc -ctime в ожидании скрипта, не работает

Это как сценарий выглядит следующим образом:

#!/usr/bin/expect -f 
exp_internal 1 
set host_ip [lindex $argv 0 ] 
set user [lindex $argv 1 ] 
set password [lindex $argv 2] 
set scp_remote_directory [lindex $argv 3 ] 
set local_directory [lindex $argv 4] 

set force_conservative 1 ;# set to 1 to force conservative mode even if 
          ;# script was not run conservatively originally 
if {$force_conservative} { 
     set send_slow {1 .1} 
     proc send {ignore arg} { 
       sleep .1 
       exp_send -s -- $arg 
     } 
} 

set timeout -1 
#spawn scp [email protected]$host_ip:$scp_remote_directory/$scp_remote_filename $local_directory/ 
#spawn rsync -azv [email protected]$host_ip:\´\$(find\ $scp_remote_directory\ -ctime\ -1\)\´ $local_directory/ 
#spawn scp [email protected]$host_ip:\'\$(find\ $scp_remote_directory\ -ctime\ -1)\' $local_directory/ 
spawn scp [email protected]$host_ip:\`\$(find\ $scp_remote_directory\ -ctime\ -1\)\` $local_directory/ 
#spawn scp [email protected]$host_ip:$scp_remote_directory/CscfHealthCheckReport_$TagID_$phase* $local_directory/ 
match_max 100000 
expect { 
    -exact "Are you sure you want to continue connecting (yes/no)? " { 
    send -- "yes\r" 
    exp_continue 
    } 
    -exact "${user}@${host_ip}'s password: " { 
    send -- "$password\r" 
    } 
    -exact "Password: " { 
    send -- "$password\r" 
    } 
} 
expect eof 

Он жалуется на права доступа, но это не проблема с разрешениями. Если я изменю строку SCP `to ', я получаю еще одну проблему.

здесь распечатку:

/td_general_scp.exp 10.33.122.22 root rootroot /cluster/storage/no-backup/coremw/var/log/saflog/FaultManagementLog/alarm/Fm*.log /home/imstest/shared/Generate/ReportingT3/tmp 
spawn scp [email protected]:`$(find /cluster/storage/no-backup/coremw/var/log/saflog/FaultManagementLog/alarm/Fm*.log -ctime -1)` /home/imstest/shared/Generate/ReportingT3/tmp/ 
parent: waiting for sync byte 
parent: telling child to go ahead 
parent: now unsynchronized from child 
spawn: returns {141218} 

expect: does "" (spawn_id exp6) match exact string "Are you sure you want to continue connecting (yes/no)? "? no 
"[email protected]'s password: "? no 
"Password: "? no 
Password: 
expect: does "Password: " (spawn_id exp6) match exact string "Are you sure you want to continue connecting (yes/no)? "? no 
"[email protected]'s password: "? no 
"Password: "? yes 
expect: set expect_out(0,string) "Password: " 
expect: set expect_out(spawn_id) "exp6" 
expect: set expect_out(buffer) "Password: " 
send: sending "rootroot\r" to { exp6 } 

bash: /cluster/storage/no-backup/coremw/var/log/saflog/FaultManagementLog/alarm/FmAlarmLog_20160422_152507_20160426_135452.log: Permission denied 
expect: read eof 
expect: set expect_out(spawn_id) "exp6" 
expect: set expect_out(buffer) "\r\nbash: /cluster/storage/no-backup/coremw/var/log/saflog/FaultManagementLog/alarm/FmAlarmLog_20160422_152507_20160426_135452.log: Permission denied\r\n" 

Имя сценария td_general_scp.exp

Спасибо за помощь.

ответ

0

Удаленная оболочка выполняет $(find ...) и испускает имена файлов. Это находка.

Но вы окружаете это в backticks, так что теперь вы пытаетесь выполнить выполнить результат поиска как скрипт.

Возможно, вы захотите уйти от scp и вместо этого использовать rsync.

+0

Привет, Гленн, спасибо за ввод, но я также попробовал rsync. У меня был аналогичный вопрос относительно этого в этой ссылке. Тот же тип ошибок проверяет это. [link] (http://stackoverflow.com/questions/36785164/using-rsync-in-expect-script-with-find-ctime-give-me-an-error) Я окружил его клещами, потому что получил это предложение по этому вопросу. – MaestroGarcia

 Смежные вопросы

  • Нет связанных вопросов^_^