2011-03-09 4 views
0

J'ai écrit un script bash pour mettre à jour une page sur le site Web de mon entreprise. Voici ce que j'ai jusqu'à présent:bash + ftp: Le fichier est vide au téléchargement

#!/bin/bash 

ruby final_07.rb 

HOST=ftp.website.com 
USER=username 
PASSWD=password 

ftp -n -v $HOST <<EOF 
user $USER $PASSWD 
delete warehouse.html.old 
rename warehouse.html warehouse.html.old 
put warehouse.html warehouse.html 

EOF 

Il exécute le script Ruby très bien. Il se connecte au FTP très bien. Il renomme même l'ancien fichier très bien. Cependant, quand il "télécharge", je viens d'obtenir un fichier nommé "warehouse.html" qui est 0 octets - il est totalement vide. J'ai vérifié, et le fichier source est bien. Quand je télécharge manuellement avec FileZilla, ça marche très bien aussi. Alors, qu'est-ce qui donne?

Voici le journal de ma fenêtre de terminal:

[email protected]:~/code/ruby/idealm_db_parser/final$ ./update_script_02.sh 
Connected to www.website.com. 
220 FTP Service 
Remote system type is UNIX. 
Using binary mode to transfer files. 
331 Password required for user. 
230 User user logged in. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
250 DELE command successful 
350 File or directory exists, ready for destination name. 
250 Rename successful 
local: warehouse.html remote: warehouse.html 
200 PORT command successful 
150 Opening BINARY mode data connection for warehouse.html 
226 Transfer complete. 
221 

Merci à l'avance pour toute aide. Je cours Ubuntu 10.10, si cela aide.

+1

Le fichier .old semble-t-il correct? Pouvez-vous afficher les autorisations de fichier ET les autorisations de répertoire sur la machine distante? Assurez-vous qu'ils sont OK. (Le fichier Zéro * est * bizarre ;-)! – shellter

+0

Autorisations Vous pourriez être sur quelque chose. Je ne suis toujours pas familier avec la façon dont * nix gère les permissions, donc je ne serais pas surpris. Je serai au travail dans une heure ou deux - je vais le tester et vous le faire savoir. – eckza

+1

Et sont d'envoyer et de recevoir des machines à la fois Ubuntu. Différents OS auront des clients Ftp différents avec des options et des traitements parfois radicalement différents. – shellter

Répondre

0

Je pense que je l'ai triée. J'ai supprimé les lignes:

delete warehouse.html.old 
rename warehouse.html warehouse.html.old 

et cela semblait faire l'affaire. Pour une raison quelconque, apparemment le script mettait à zéro le fichier warehouse.html sur mon ordinateur, puis le chargeait.

Merci à tous ceux qui ont aidé, cependant.

+1

donc vous ne vous souciez pas de ce qui arrive à html.old existant ou que vous ne conserverez pas une copie de sauvegarde? (Peut-être que c'est OK, mais alors ...) – shellter

+0

Ça devrait aller. Le HTML est généré dynamiquement avec un script que j'ai écrit à partir d'un fichier exporté depuis notre base de données, et je conserve des copies des exports. Si quelque chose ne va pas, il serait plus logique de régénérer le HTML à partir de la base de données. – eckza

+1

Génial de l'entendre trier. Vous pouvez accepter votre propre réponse en cliquant sur la coche vide à côté des flèches haut/bas de cette réponse. –

0

Vous pouvez essayer de

  • passer en mode ASCI avant de mettre votre fichier
  • utilisation du mode FTP passif pour transférer le fichier
Questions connexes