J'ai besoin de savoir comment configurer un travail cron qui se connecte automatiquement au serveur distant, modifie le répertoire et récupère tous les fichiers de ce répertoire au niveau local.
je pense que je dois utiliser sftp mais j'ai vu des commandes appelées "spawn" dans certains scripts Shell et je ne comprends pas ce que cela va faire et à quoi ça sert?
spawn sftp user@ipaddress
cd xxx/inbox
mget *
cela fonctionnera-t-il dans le contexte du répertoire de téléchargement distant?
Dans votre cas, spawn
est très probablement une commande de attend langage de script qui permet l’automatisation des opérations de programme interactives. Dans un tel cas, spawn
exécute une commande externe à partir du script prévu. Il manque dans votre exemple de script une séquence Shebang (première ligne commençant par #!
) indiquant l'interprète expect
et en tant que tel ne sera pas interprété par expect lorsqu’il est exécuté directement.
L'authentification par mot de passe avec sftp est limitée au mode interactif. Pour contrôler sftp en mode interactif, vous pouvez utiliser par exemple le script attendu suivant:
#!/usr/bin/env expect
set timeout 20 # max. 20 seconds waiting for the server response
set user username
set pass your-pass
set Host the-Host-address
set dir server-dir
spawn sftp $user@$Host
expect assword:
send "$pass\r"
expect sftp>
send "cd $dir\r"
expect sftp>
send "mget *\r"
expect sftp>
send "exit\r"
expect eof
Une autre possibilité consiste à utiliser l'authentification par clé publique, qui est également plus sécurisée (voir procédure ). Dans ce cas, vous pouvez simplement utiliser sftp directement en mode de traitement par lots:
#!/bin/sh
user=username
Host=the-Host-address
dir=server-dir
sftp -b - "$user@$Host" <<+++EOF+++
cd "$dir"
mget *
exit
+++EOF+++