Автоматизация SCP с несколькими файлами с помощью сценария expect

поэтому я видел несколько сообщений об этом, и, возможно, я просто не видел правильный.

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

/path/{Install.sh,programWithVerionAfter*}: No such file or directory

Killed by signal 1. 

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

#!/usr/bin/expect -f

spawn scp /path/{Install.sh,programWithVerionAfter*} "root@IP:/tmp/.
expect {
   -re ".*es.*o.*" {
   exp_send "yesr"
   exp_continue
  }
  -re ".*sword.*" {
    exp_send "Passwordr"
  }
}
interact

2 ответов


Я нашел то, что хотел, с гораздо большим googleing. Спасибо за вашу помощь, надеюсь, это поможет другим

http://www.linuxquestions.org/questions/linux-general-1/scp-with-wildcard-in-expect-834813/

#!/usr/bin/expect -f

spawn bash -c "scp /path/* root@IP:/tmp/"
expect {
  -re ".*es.*o.*" {
    exp_send "yes\r"
    exp_continue
  }
  -re ".*sword.*" {
    exp_send "Password\r"
  }
}
interact

можно использовать curl чтобы скопировать файлы с локального хоста на удаленный хост через sftp (что то же самое, что копирование с помощью scp для всех целей и задач), и укажите имя пользователя и пароль в команде, например:

curl -T /files/to/copy/*  -u username:password ftps://ftpshost.domain.tld/