Копирование нескольких файлов SCP с удаленного сервера с подстановочным аргументом в UNIX BASH

Этот сценарий Expect является частью моего сценария UNIX Bash.

expect -c " 
spawn scp [email protected]:\"encryptor *.enc\" . 
expect password:  { send \"$PASS\r\"  }
expect 100%
sleep 1
exit
 "

Я пытаюсь скопировать как «шифратор», так и «*.enc» с помощью этой одной команды SCP. Консоль говорит мне, что не может найти ' *.enc' '


person user3390986    schedule 16.09.2015    source источник


Ответы (3)


Синтаксис для нескольких файлов:

$ scp [email protected]:~/\{foo.txt,bar.txt\} .

Я бы предположил в вашем случае (не проверено)

scp [email protected]:\\{encryptor, \*.enc\\} .
person Marc Young    schedule 16.09.2015

Не уверен, что это помогает, но я искал аналогичную цель.

Средства: копирование некоторых выбранных файлов на основе их имен/расширений, но расположенных в разных подпапках (один уровень подпапок).

это работает, например. копирование файлов .csv из Server:/CommonPath/SpecificPath/

scp -r Server:/CommonPath/\*/\*csv YourRecordingLocation

Я даже тестировал более сложные «perl-подобные» регулярные выражения.

Не уверен, что опция -r все еще полезна.

person PierreLecocq    schedule 19.05.2016
comment
Извините, в этом интерфейсе удалены подстановочные знаки с обратной косой чертой. Так что это должно быть scp -r Server:/CommonPath/\*/\*csv YourRecordingLocation - person PierreLecocq; 19.05.2016

#!/bin/bash
expect -c "
set timeout 60; # 1 min 
spawn scp [email protected]:{encryptor *.enc} .
expect \"password: $\"
send \"mypassword\r\"
expect eof
"

Вы можете увеличить timeout, если копирование файла занимает больше времени. Я использовал expect eof, который будет ждать закрытия команды scp. то есть мы ждем конца файла (EOF) scp после отправки пароля.

person Dinesh    schedule 16.09.2015