La commande suivante envoie une commande à l' sftp
aide d'une seule ligne:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
Comment envoyer plusieurs lignes à l' sftp
aide d'une seule ligne. Existe-t-il un moyen d'insérer des retours chariot ou quelque chose pour y parvenir, par exemple:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
L'idée est de NE PAS utiliser l' sftp -b
option où une commande de liste de fichiers externes est chargée.
<<<
a été introduit en premier par zsh (bien qu'inspiré parrc
) et a ensuite été ajouté à ksh93 puis à bash.zsh
compétences.Utilisez l'
-b/--batchfile
option pour gérer correctement les erreurs:la source
Oui, vous pouvez simplement utiliser
echo -e
la source
echo
est très non standard -echo -e
ne fonctionne pas de la même manière partout, vous devez donc d'abord vérifier. Alternativement, utilisez simplementprintf
ce qui est beaucoup plus portable et devrait fonctionner de la même manière partout.Il n'est pas nécessaire d'éviter l'
-b
option pour éviter d'écrire le fichier de commandes sur le disque. En utilisant la substitution de processus, vous pouvez créer le lot à la volée.la source
Utiliser la commande native sftp
la source
lcd
etcd
faites des choses différentes. Vous venez de combiner les chemins en quelque chose qui n'existera pas.Mybru, vous pouvez diriger vos commandes comme ceci:
la source