[résolu]Script automatisation FTP + execution binaire

Script automatisation FTP + execution binaire [résolu] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-09-2008 à 23:33:25    

Bonjour Mes Amis,
 
Voila , j'ai crée un script pour automatiser un clonage de disque et puis envoie vers un ftp.
 
Ci dessous le script ...
 
J'aimerais avec gzip compressé l'image mais lors de la commande , ci dessous , il ignore complétement gzip et n'execute que la premiere occurence : la commande " dd "
J'ai essayé avec un pipe " | " et autre rien ne fonctionne..
***********************************
ftp -nv 192.168.0.1 <<EOF  
user MonLogin MonPassword
bin
put "|dd if=/dev/hda bs=2048 conv=noerror,sync && gzip -9" "MonImage_Disque_vers_le_ftp.gz"
quit
EOF
***********************************
 
Auriez vous une astuce ?
Merci par avance
Cdt


Message édité par admin_windoz le 21-09-2008 à 20:02:40
Reply

Marsh Posté le 18-09-2008 à 23:33:25   

Reply

Marsh Posté le 19-09-2008 à 08:30:57    

Bonjour mon ami,
 
Je pense qu'il te manque l'option -c à gzip pour compresser la sortie standard. Et puis je pense aussi qu'il faut utiliser le pipe plutot que &&.


dd if=/dev/hda bs=2048 conv=noerror,sync | gzip -c > /MonImage_Disque_vers_le_ftp.bz2


vw.


Message édité par Combi_A_Vendre le 19-09-2008 à 08:32:03
Reply

Marsh Posté le 19-09-2008 à 10:41:04    

Merci Copin,
Sa marche ...... mais voila , je retrouve le fichier vide sur le FTP
Car comme je disait il zappe quelque chose dans la commande... j'ai l'impression que FTP ne sait pas géré les PIPES ..
 
Car soit je retrouve l'image direct en local , et puis sur le serveur FTP le fichier est vide  
Soit j'utilise pas GZIP et l'image est bien transféré sur le serveur avec une taille de folie ...(j'ai trop besoin de GZIP..)
 
ci dessous le script  
 
ftp -nv 192.168.0.11 <<EOF  
user MonLogin MonPasswd
bin  
put "|dd if=/dev/hda5 bs=2048 conv=noerror,sync | gzip -c > monimage.gz"  
quit
EOF
 
 
Le but étant de transverser directement vers le réseau et surtout ne pas stocker d'abord sur le local pour ensuite transferer....
Sa serait bien de faire un pipe directement vers le ftp.....
 
UNE IDEE ????
 
ci dessous le log
*******************************
Connected to 192.168.0.11.
220-FileZilla Server version 0.9.12 beta
220-written by Tim Kosse (Tim.Kosse@gmx.de)
220 Please visit http://sourceforge.net/projects/filezilla/
Remote system type is UNIX.
331 Password required for install
230 Logged on
Remote system type is UNIX.
200 Type set to I
local: |dd if=/dev/hda5 bs=2048 conv=noerror,sync | gzip -c > /monimage.gz  
remote: |dd if=/dev/hda5 bs=2048 conv=noerror,sync | gzip -c > /monimage.gz  
200 Port command successful
150 Opening data channel for file transfer.
96256 blocks (188Mb) written.
96374+1 records in
96375+0 records out
226 Transfer OK
221 Goodbye
 
*******************************


Message édité par admin_windoz le 19-09-2008 à 11:05:09
Reply

Marsh Posté le 19-09-2008 à 11:57:10    

ton client est un linux ? ton serveur est un linux ?
 
Si oui sftp ...
 
Et la commande magique, sur ton client :
dd .... | gzip -c | sftp user@serveur:/chemin/de/stockage

Reply

Marsh Posté le 19-09-2008 à 12:54:35    

Et en utilisant plutôt ncftpput?


dd if=/dev/hda5 bs=2048 conv=noerror,sync | gzip -c > monimage.gz |  ncftpput -u login -p password-c 192.168.0.11 ./monimage.gz  


 
remarque là ça doit pas aller, il doit faire le stockage en local. C'est à améliorer.
 
vw

Reply

Marsh Posté le 06-11-2008 à 22:14:08    

Salut,
 
ca tiens en une seule ligne avec le puissant lftp et la puissance des pipes :
 

Code :
  1. dd if=/dev/sda5 bs=2048 conv=noerror,sync | gzip -fc | lftp -u user;passwd domaine.tld -e "put /dev/stdin -o backup.gz; quit"


 
Enjoy ;)

Reply

Marsh Posté le 06-11-2008 à 23:41:30    

Si je peux me permettre une petite remarque:
 
Tu écrase à chaque fois l'image précédente avec une nouvelle...
* Un disque crame orsqu'il travaille beaucoup
* Le disque travaille beaucoup lorsqu'on fait une sauvegarde
=> Le disque crame lorsqu'on fait une sauvegarde
 
C'est vraiment un concept de base. Tu ne peux pas détruire ta sauvegarde précédente AVANT d'avoir terminer la suivante ;)


Message édité par M300A le 06-11-2008 à 23:41:53
Reply

Marsh Posté le 07-11-2008 à 00:20:38    

C'était à titre d'exemple, mais si tu veux, on peux améliorer ça :
( on efface aux bout de 3 semaines )

Code :
  1. #!/bin/bash
  2. # ------------------------------------------------------------------
  3. #
  4. #    Copyright (C) 2007-2008 <gilles DOT quenot AT gmail DOT com>
  5. #
  6. #    This program is free software; you can redistribute it and/or
  7. #    modify it under the terms of version 2 of the GNU General Public
  8. #    License published by the Free Software Foundation.
  9. #
  10. # ------------------------------------------------------------------
  11. ### personnal settings
  12. Device=/dev/sda1
  13. Mymail=me@host.tld
  14. MyFtpHost=FTPhost.tld
  15. MyFtpUserName=me
  16. MyFtpPasswd=passwd
  17. MyFtpFolder=foobar
  18. ###
  19. # script variables
  20. LANG=C
  21. DateNow=$(date +%s)
  22. LogError=${0##*/}_error
  23. Fichier=$(date +backup.%s.%Y%m%d%H%M.gz)
  24. ThreeWeeksAgo=$(date -d '3 weeks ago' +%s)
  25. . /etc/profile
  26. # you can store personnal env in this file
  27. [[ -f ~/.MyEnv ]] && . ~/.MyEnv
  28. trap 'v=$!; echo -e "\nQuitting !"; killall lftp; exit $v' 1 2 3 15
  29. dd if=$Device bs=2048 conv=noerror,sync | \
  30. gzip -fc | \
  31. lftp -u "$MyFtpUserName;$MyFtpPasswd" "$MyFtpHost" -e "put /dev/stdin -o ${Fichier}; quit"
  32. # coded to display messages on stdout is exists
  33. Info()
  34. {
  35. if [[ -t 0 ]]; then
  36.   tput setaf $1
  37.   echo $2
  38.   tput sgr0
  39. fi
  40. }
  41. Info 2 "Hi ${USER}."
  42. TabOfDate=( $(echo $(lftp -c "open -u ${MyFtpUserName:?},${MyFtpPasswd:?} ${MyFtpHost:?}; \
  43.        ls $MyFtpFolder" |
  44.        cut -d'.' -f2))
  45. )
  46. # looking for old archives patterns to delete
  47. c=0
  48. for Match in "${TabOfDate[@]:?}"; do
  49.     if (( Match < ThreeWeeksAgo )); then
  50.         ToDelete[c++]="*$Match*"
  51.     fi
  52. done
  53. # remove old archives with given patterns
  54. (( ${#ToDelete[@]} > 0 )) && {
  55. lftp -c "open -u ${MyFtpUserName:?},${MyFtpPasswd:?} ${MyFtpHost}; \
  56.        cd "$MyFtpFolder"; \
  57.        mrm ${ToDelete[@]}"
  58. }
  59. Info 2 "All done, see ya..."


 
Et les disques, faut bien qu'ils travaillent pour backuper.... Evidement faut pas mettre ça une fois par minutes, mais genre une fois par jour.
On peux creer une purge automatique facilement aussi.


Message édité par sputnick le 07-11-2008 à 03:11:47
Reply

Marsh Posté le 07-11-2008 à 03:30:21    

Le script du dessus n'a pas été testé completement.
 
Il y avait aussi celle là ( testée ) :
 

Code :
  1. dd if=/dev/sda5 bs=2048 conv=noerror,sync | gzip -fc | ssh -l root hote dd of=/tmp/backup.gz

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed