Exécuter attendre de commande à l'intérieur de la boucle while en script shell
J'ai une liste de noms de fichiers dans un fichier texte,besoin de transférer le fichier en utilisant le serveur de commande scp.Je suis à la lecture des noms de fichier de Read.sh et en passant à chaque nom de fichier pour transfer.sh script mais scp n'est pas de l'exécution de la commande dans ce script de transfert.Si je lance transfer.sh seul avec passage args sa fonctionne bien.
List.txt
/home/kittu/file1.txt
/home/kittu/file2.txt
/home/kittu/file3.txt
Read.sh
#!/bin/bash
while read p; do
echo $p
./transfer.sh "$p"
done <List.txt
transfer.sh
#!/usr/bin/expect -f
# get filename from command-line
set f [lindex $argv 0]
spawn scp "$f" user@192.168.4.151:/home/user/Desktop/
expect "password"
send "123\r"
interact
Je viens de courir Read.sh comme
>./Read.sh
De sortie:
/home/user/Desktop/file1.txt
spawn scp /home/mbox140/Desktop/test.sh mbox140@192.168.4.151:/home/mbox140/Desktop/videos/
user@192.168.4.151's password:
Ses pas l'exécution de l'instruction suivante.Merci de me suggérer une solution.
avez-vous essayé de lancer le transfer.sh autonome, est ce que ça marche? et dans le transfer.sh la interagissent commande doit jeter erreur, puisque vous tentez de communiquer au processus fermés ( dans ce cas scp )
oui,le transfert de travailler de manière autonome.
oui,le transfert de travailler de manière autonome.
OriginalL'auteur Ramakrishna | 2014-09-10
Vous devez vous connecter pour publier un commentaire.
Essayer le script ci-dessous , Les modifications sont que le Transfer.sh est enveloppée dans de la bash.sh.
et la raison pour laquelle il attend le mot de passe, peut-être parce que vous attendez un mauvais patron , essayez le "Mot de passe" au lieu de "mot de passe" et après la commande envoyer, attendre pour le terminal de façon à ce que le scp finitions
Le problème est dû à copier coller d'erreur que vous avez pour supprimer les espaces en début de chaque ligne, essayez cette commande "sed-i 's/^ *//g "nom de fichier" sur le script et exécutez à nouveau le script , désolé pour la mauvaise mise en forme
Hey,j'ai juste enlevé echo $p,son travail.Merci pour votre réponse.
Il est possible de supprimer une ligne qui correspond à $p à l'intérieur de la boucle while.Parce que je veux supprimer le nom de fichier à partir de List.txt une fois le fichier obtenu transféré vers le serveur.???
Vous référez-vous à la ligne "spawn scp $p [email protected]:/home/user/Desktop/"?
OriginalL'auteur Ram