Как я могу исправить мой ожидаемый скрипт для загрузки scp? - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь использовать функцию «Ожидаю», чтобы обойти процесс аутентификации по паролю для удаленного сервера, который я использую, поэтому я могу загрузить серию файлов оптом, каждый из которых хранится в отдельной папке.

Причиной использования ожидаемого является то, что удаленные файлы хранятся в отдельных папках, а сервер, к которому я обращаюсь, не разрешает мне доступ по ssh-ключу.

В настоящее время я изо всех сил пытаюсь загрузить один файл, используя ожидаемое, не говоря уже о многочисленных одновременно. Ниже приведен мой простой скрипт:

#!/bin/bash 

#connect to the server using scp
expect <<EOF
spawn scp username@server:file.txt ./
expect “*word:*“
send “password\r”
EOF

Я ожидаю, что файл file.txt будет загружен в каталог, в котором я запускаю сценарий. Однако, когда он запускается, я вместо этого получаю текстовый вывод с моего сервера, запрашивающий пароль, с последующей паузой в 4-5 секунд, прежде чем он выходит из командной строки.

Любая помощь в этом с благодарностью!

1 Ответ

0 голосов
/ 16 мая 2019
  1. Я вижу "необычные" цитаты в вашем коде.Ожидать не будет понимать их как кавычки.Убедитесь, что ваш редактор не использует «умные кавычки».
  2. После того, как вы отправите пароль, вы должны дождаться завершения загрузки, прежде чем выйти из сценария:

    #!/bin/bash 
    
    #connect to the server using scp
    expect <<EOF
        set timeout -1
        spawn scp username@server:file.txt ./
        expect "*word:*"
        send "password\r"
        expect eof
    EOF
    
...