예상 스크립트에서 두 파일을 복사하는 방법은 무엇입니까?

예상 스크립트에서 두 파일을 복사하는 방법은 무엇입니까?

이유를 말해주세요

spawn  scp  $FILE1   $FILE2  $LOGIN@$IP:/tmp

내 예상 스크립트에서는 FILE2가 아닌 FILE1만 복사합니까?

scp를 통해 두 개의 파일을 전송하려고 합니다.

 scp file1.csv file2.crt 192.8.200.1:/tmp 

놀랍게도 성공적으로 /tmp로 이동했습니다.

그렇다면 VIA는 왜 복사된 파일만 복사될 것으로 예상합니까?파일 1??

내 문법에 문제가 있는 걸까요?

내 예상 스크립트의 예:

 #!/usr/bin/expect -f
 set FILE1  file1.csv
 set FILE2  file2.crt
 set multiPrompt {[#>$]}
 spawn  scp  $FILE1   $FILE2  $LOGIN@$IP:/tmp
           expect {
                     ")?"   { send "yes\r"  ; exp_continue  }

                    word:  {send $PASS\r}
                   }

나는 또한 이것을 시도합니다:

spawn  scp  "$FILE1   $FILE2"   $LOGIN@$IP:/tmp

또는

spawn  scp  '$FILE1   $FILE2'   $LOGIN@$IP:/tmp

하지만 나는 같은 문제에 직면했습니다.

답변1

expect나는 이를 위해 다음 스크립트를 작성했고 (내 가상 머신에서) 작동합니다. 실행 예시:

./scp.exp <first host user> <first host user pass> <first host name> <second host name> <second host user> <second host user pass> <directory path i.e. /tmp>

스크립트:

#!/usr/bin/expect -f
# ./sshlogin.exp uptime
# set Variables

set user [lindex $argv 0];
set password [lindex $argv 1];
set host [lindex $argv 2];
set copy_to_host [lindex $argv 3];
set copy_to_host_user [lindex $argv 4];
set copy_to_host_pass [lindex $argv 5];
set copy_to_host_dir [lindex $argv 6];
set file1 one.txt;
set file2 two.txt;
set timeout 10
# now ssh
spawn ssh $user@$host -o StrictHostKeyChecking=no
match_max 100000 # Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"
# send blank line (\r) to make sure we get back to gui
expect "*$ "
send -- "scp -o StrictHostKeyChecking=no $file1 $file2 $copy_to_host_user@$copy_to_host:$copy_to_host_dir\r"
expect "*?assword:*"
send -- "$copy_to_host_pass\r"
expect "*$ " 
send -- "exit\r"
expect eof

expect참고: 대용량 파일을 처리하는 경우 대기 시간을 추가해야 할 수도 있습니다.

관련 정보