2014-09-11 11 views
5

Więc widziałem wiele postów na ten temat i może po prostu nie widziałem tego właściwego.Zautomatyzuj SCP z wieloma plikami z oczekiwanym skryptem

Używam skryptu oczekiwać, aby scp wielu plików z mojego locale do zdalnego. Nie chcę ustawiać kluczy do logowania bez haseł, ponieważ wtedy serwery nie mogą zostać zniszczone i powstały bez większej pracy, tak, mógłbym zautomatyzować tworzenie klucza, wolałbym nie. Więc chcę móc korzystać z *, ale za każdym razem kiedy używam *, to mi to mówi. Powodem, dla którego chcę użyć * zamiast pełnej nazwy jest to, że numer wersji będzie się ciągle zmieniać i nie chcę ręcznie zmieniać skryptu za każdym razem.

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

Killed by signal 1. 

Mam nadzieję, że jest to łatwo naprawić lub obejście. Wszystko, co chciałbym zrobić, to scp te pliki, dzięki czemu mogę zautomatyzować proces instalacji za pomocą kliknięcia przycisku. Dziękuje z góry za wszelką pomoc

#!/usr/bin/expect -f 

spawn scp /path/\{Install.sh,programWithVerionAfter*\} "[email protected]:/tmp/. 
expect { 
    -re ".*es.*o.*" { 
    exp_send "yes\r" 
    exp_continue 
    } 
    -re ".*sword.*" { 
    exp_send "Password\r" 
    } 
} 
interact 

Odpowiedz

12

Znalazłem to, co chciałem, z dużo większym głosem. Dziękuje za pomoc, nadzieję, że to pomaga innym

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

#!/usr/bin/expect -f 

spawn bash -c "scp /path/* [email protected]:/tmp/" 
expect { 
    -re ".*es.*o.*" { 
    exp_send "yes\r" 
    exp_continue 
    } 
    -re ".*sword.*" { 
    exp_send "Password\r" 
    } 
} 
interact 
+0

myślę, że znajdziesz Tcl polecenie 'glob' być przydatne w tej instancji. –

1

Można wykorzystać curl skopiować pliki z lokalnego hosta do zdalnego hosta poprzez SFTP (który jest taki sam jak kopiowanie z użyciem SCP dla wszystkich zamiarów i celów), a także określić nazwę użytkownika i hasło w poleceniu, tak jak:

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