2014-09-11 13 views
5

Quindi ho visto più post su questo e forse non ho visto quello giusto.Automatizza SCP con più file con lo script previsto

Sto utilizzando uno script previsto per scp più file dalla mia locale a un remoto. Non voglio impostare le chiavi per gli accessi senza password, perché quindi i server non possono essere spazzati via e resistere con più lavoro, sì, potrei automatizzare la creazione della chiave, preferirei non farlo. Quindi voglio essere in grado di usare il * ma ogni volta che uso il * mi dice. La ragione per cui voglio usare * invece di un nome completo è perché il numero di versione continuerà a cambiare e non desidero cambiare manualmente lo script ogni volta.

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

Killed by signal 1. 

Spero che questa sia una soluzione facile o una soluzione alternativa. Tutto quello che vorrei fare è scp questi file in modo da poter automatizzare un processo di installazione con il clic di un pulsante. Grazie in anticipo per qualsiasi aiuto

#!/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 

risposta

12

Ho trovato quello che volevo con molto più googleing. Grazie per il vostro aiuto, spero che questo aiuta gli altri

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

Penso che troverete il comando 'glob' Tcl per essere utile in questo caso. –

1

È possibile utilizzare curl per copiare i file dal tuo host locale al vostro host remoto tramite SFTP (che è lo stesso di copia utilizzando SCP per tutti gli effetti), e specificare il nome utente e password nel comando, in questo modo:

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