Bash : effacer un fichier après envoi

Parce qu'il en faut pour tout le monde, discutez ici d'ADA, de shell et autres Wolfram...

Modérateur : Francois

Répondre
silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Bash : effacer un fichier après envoi

Message par silver-slider » jeu. 5 mai 2016 19:45

Bonsoir,
Je me permets de poser cette question ici car je n'ai pas vu de sous forum Shell ( dsl s'il existe :P )

Voila donc mon problème,
après avoir galéré avec des permissions sur des CSV générés, j'ai enfin trouvé la solution, néanmoins, je n'arrive pas a effacer le fichier du répertoire une fois qu'il a été transféré au serveur distant, voici le code qui fonctionne:

Code : Tout sélectionner

#!/bin/bash

serveurdistant="xxx.xxx.xx.xx"
pathdestination="httpdocs/test"
Username="admin_xxxxxx"
Password="xxxxxxxx"
Port='21'

ftp -n $serveurdistant <<END_SCRIPT
quote USER $Username
quote PASS $Password
cd $pathdestination
put donnees.csv
quit
END_SCRIPT

exit
je suis en user "pi", le fichier se trouvant au même endroit que le script je pensais tout bêtement faire un rm après "quit" mais ca ne le fait pas, j'ai essayé rm donnees.csv, rm /home/pi/test/donnees.csv, rm /test/donnees.csv ...helas rien y fait :? le script s'exécute sans retour d'erreur, le fichier est bien transféré mais il n'est pas effacé..
La question c'est de savoir si je peux insérer un rm a ce niveau ou est ce que j'ai loupé qq chose ? ( c''est sans doute le cas)
j'ai pas trouvé grand chose la dessus sur le net, pour ne pas dire rien du tout...

si qq'un a une idée je suis preneur
d'avance merci

Avatar du membre
Manfraid
Modérateur
Messages : 1399
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Bash : effacer un fichier après envoi

Message par Manfraid » jeu. 5 mai 2016 22:10

Salut il faut le mettre entre le END_SCRIPT et le exit
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

spourre
Raspinaute
Messages : 725
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Bash : effacer un fichier après envoi

Message par spourre » ven. 6 mai 2016 01:11

Manfraid a écrit :Salut il faut le mettre entre le END_SCRIPT et le exit
Bonsoir,

Je le pense aussi mais peut-être qu'une petite explication ne lui ferait pas de mal et lui permettrait d'éviter la même erreur dans un autre script.
Petite explication:

Je pense que le PO a développé son script par récupération (net) et adaptation de code, sans bien en comprendre le mécanisme.
Il s'agit de la mise en œuvre du mécanisme du "hier document". La syntaxe est : commande << BALISE, lignes, BALISE.
Toutes les lignes comprises entre les 2 BALISE(s) ,qui doivent être identiques, sont passées à commande, comme dans une utilisation interactive (ici la commande ftp ). Cela permet d'automatiser des commandes qui, autrement, nécessiteraient la présence d'un opérateur humain devant le clavier.
Le nom donné à la BALISE, END_SCRIPT, est trompeur car il ne s'agit pas de la fin su script mais de la fin de la commande ftp.
Enfin, pour conclure, il serait bon d'exploiter le code retour de la commande ftp pour ne pas effacer le fichier si son transfert a avorté. Toute commande passée retourne un code d'erreur, accessible par la variable $?. Par exemple voici le code retour de deux commandes ll, passées en utilisateur normal, dont une échoue à lire un répertoire appartenant à root:

Code : Tout sélectionner

ylvain@hpux:~$ ll ; echo $?
total 36
drwxr-xr-x  2 sylvain sylvain 4096 mai    5 17:45 Bureau
drwxr-xr-x 10 sylvain sylvain 4096 mars  23 18:09 Documents
drwxr-xr-x  2 sylvain sylvain 4096 févr.  1 19:17 Images
-rw-r--r--  1 sylvain sylvain   80 avril 29 12:10 minicom.log
drwxr-xr-x  2 sylvain sylvain 4096 févr.  1 19:17 Modèles
drwxr-xr-x  2 sylvain sylvain 4096 févr.  1 19:17 Musique
drwxr-xr-x  2 sylvain sylvain 4096 févr.  1 19:17 Public
drwxr-xr-x 11 sylvain sylvain 4096 mai    1 19:21 Téléchargements
drwxr-xr-x  2 sylvain sylvain 4096 févr.  1 19:17 Vidéos
0
sylvain@hpux:~$ ll /root
/bin/ls: impossible d'ouvrir le répertoire /root: Permission non accordée
sylvain@hpux:~$ ll /root; echo $?
/bin/ls: impossible d'ouvrir le répertoire /root: Permission non accordée
2
Sylvain
.

Dergonic
Messages : 20
Enregistré le : mer. 17 sept. 2014 15:02
Localisation : Belgique (Arlon)

Re: Bash : effacer un fichier après envoi

Message par Dergonic » ven. 6 mai 2016 13:06

Perso, je pense à une tout autre raison

'rm /home/pi/test/donnees.csv' fonctionne, mais requiert une confirmation ("Êtes vous sur de vouloir supprimer le fichier?"), mais le script le le gère pas

donc je propose d'ajouter le contenu suivant entre le END_SCRIPT et le exit :
rm -f /home/pi/test/donnees.csv

le -f (ou --force) permet d'effectuer le RM sans demander la confirmation

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Bash : effacer un fichier après envoi

Message par silver-slider » ven. 6 mai 2016 16:32

Bonjour,

En premier lieu merci au Gentil .Moderateur d'avoir déplacé le sujet sur le bon forum ;)
Et puis surtout merci pour ces réponses et ces explications car en effet j'ai adapté un script et ce n'est pas faute d'avoir cherché, parce que j'aime bien essayer de comprendre ce que je fais, mais je n'ai trouvé nul par un exemple commenté, du coup effectivement pour moi "END_SCRIPT" était la fin du script :?
Et très judicieux de ne pas effacer le fichier en cas d'erreur !! 8-)

Pour le "forcage" j'avais effectivement lu ce cas de figure, merci de me le rappeler car là aussi j'aurai pu tourner en rond un moment en cas d'oubli.
j'ai une autre question je vais donc ouvrir un autre sujet ;)

Merci encore pour vos réponses

spourre
Raspinaute
Messages : 725
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Bash : effacer un fichier après envoi

Message par spourre » ven. 6 mai 2016 18:34

silver-slider a écrit :Bonjour,
...
Merci encore pour vos réponses
Bonjour,

Comme je le dis souvent, on a tous été débutant (et on peut encore l'être dans certains domaines).

Sylvain

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Bash : effacer un fichier après envoi

Message par silver-slider » sam. 7 mai 2016 10:09

Bonjour,

Le sujet ayant été verrouillé pour "doublon" et ne pouvant pas répondre a l'administrateur en privé et bien je vais le faire ici.

1) Je ne pense pas que ce sujet soit un doublon, l'un portant sur un problème de syntaxe d'un fichier Shell concernant la suppression d'un fichier et l'autre sur la "non exécution" de ce même script qui n'est pas en rapport avec le premier problème... je n'ai pas créer un second sujet pour me faire plaisir, mais juste pour permettre aux noobs comme moi de trouver une réponse facilement a un problème précis en se servant du moteur de recherche et sans avoir a éplucher des dizaines de posts !
2) Si vous pensiez vraiment que c'etait identique il fallait peut être simplement fusionner les sujets non ? j'ai fait aussi un peu d'administration de Forum...
3) j'ai passé l'âge de me faire gendarmer de la sorte surtout avec en prime un "rappel aux règles du forum"... Pour le coup elles sont enfreintes maintenant !!
4) je remercie les intervenants de ce forum pour leur gentillesse et leurs réponses instructives.

Voilà, dans votre soucis de ménage vous pourrez aussi virer ce post ou y apporter une réponse que vous verrouillerez afin d'avoir le dernier mot.

Ah oui, même dans un MP on a le droit de dire "Bonjour"...

Bonnes continuation tout de même... et merci de supprimer mon compte .

spourre
Raspinaute
Messages : 725
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Bash : effacer un fichier après envoi

Message par spourre » sam. 7 mai 2016 13:23

silver-slider a écrit :Bonjour,
...
1) Je ne pense pas que ce sujet soit un doublon ...
...
Bonnes continuation tout de même... et merci de supprimer mon compte .
Bonjour,

Je ne le pense pas non plus et j'ai été surpris de trouver le sujet verrouillé.
Sur tous les forums, il est de bon ton d'ouvrir un topic par problème. C'est plus lisible pour tout le monde et ça évite de se disperser.
A la décharge des modos, il faut souligner qu'ils ne prétendent pas à l'infaillibilité et qu'ils font un travail remarquable (mais pas toujours remarqué), au profit de la collectivité. Il faut accepter que ce sont des êtres humains et qu'ils peuvent donc, parfois, se tromper.
Il serait dommage de quitter ce forum sur un coup de tête. C'est un des rares forums en français, avec une forte implication du maître des lieux qui lui donne une tonalité très conviviale..

Sylvain

Avatar du membre
vague nerd
Modérateur
Messages : 1465
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Bash : effacer un fichier après envoi

Message par vague nerd » sam. 7 mai 2016 20:17

Bonsoir.

+1 pour spourre

@silver-slider
Pour aller plus loin, sachez que la lecture de chaque message et leurs modération prennent un temps non négligeable. Vous n'avez vraisemblablement pas été trop importuné par les nombreux spams de ces jours ci.
De plus, Domi assure aussi l'administration du forum en plus de la modération (par exemple, ébauche de mise en place de la pm récemment ou recherche approfondie sur les modules phpbb).

Enfin, les premiers post des deux threads litigieux posent le même contexte (citation du même script par exemple). Si vous avez bien sûr eu raison de donner le contexte dans chacun des threads, reconnaissez que ce qui semble être un erreur est une erreur compréhensible (je me suis moi-même trompé à la première lecture) !
Pour le coup elles sont enfreintes maintenant !!
Effectivement, elles le sont :lol: ! Pour le bon respect de ces règles, vous pouviez créer un thread dans le forum "Votre avis sur le forum". Voulez-vous que j'y remédie ?

En espérant vous revoir sur nos/vos forums...

Cordialement,

Vague Nerd
Modérateur global
Cordialement,

Vague Nerd

domi
Administrateur
Messages : 2212
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Bash : effacer un fichier après envoi

Message par domi » sam. 7 mai 2016 22:02

Bonsoir,

Et désolé si le verrouillage a été mal pris.
Les deux sujets énoncent le même shell script, je n'ai donc pas trouvé opportun que deux sujets différents parlent d'un même script, créé par une seule et unique personne.
Vous souhaitez de l'aide sur ce script, je pense l'ensemble du script peut-être débogué dans un seul sujet.

Cdt,
Domi

Répondre

Retourner vers « Autres langages »