Автоматизация 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/