Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1462 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  Lancer suite de commande automatiquement dans screen

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer suite de commande automatiquement dans screen

n°1071107
esox_ch
Posté le 02-09-2008 à 11:05:13  profilanswer
 

Bonjour,
 
J'essaie d'écrire un script de backup (lancé par cron) qui prenne le contenu de mon ordinateur (à l'exception de quelques folders) et le place sur un HDD externe allumé pour l'occasion.
J'aimerais que le tout s'exécute dans un screen de manière à pouvoir consulter l'avancement des choses.  
 
Cependant, je n'arrive pas à faire en sorte que toutes mes commandes s'executent dans screen. J'ai bien vu comment lancer 1 commande, comment faire pour une suite de commandes?
 
Voilà où j'en suis pour le moment (merci de me corriger sans pitié, c'est le 1er script de plus de 5 lignes que je fais, donc j'imagine que ça doit faire mal aux yeux à plus d'un)
 

Code :
  1. #!/bin/bash
  2.  
  3. screen -S backup_esata -d -R
  4.  
  5. mount /media/esata 2> /dev/null
  6.  
  7. r=$? # Stores the return value
  8. if [ $r -eq 0 ] || [ $r -eq 32 ]; then # Either mount was successful (0) or it returned that /media/esata is already mounted
  9.        echo "--- Rsync started at "`date '+%H:%M:%S'`
  10.        rsync --progress -ac --exclude-from '/media/esata/excluded_rsync_dir.txt' / /media/esata
  11.        echo "--- And ended at "`date '+%H:%M:%S'`
  12.  
  13.        if [ $? -eq 0 ]; then
  14.                umount /media/esata && eject /dev/sdg && hdparm -Y /dev/sdg
  15.                echo "--- HDD umounted at "`date '+%H:%M:%S'`
  16.        else
  17.                echo 'Il y a eu une erreur Rsync!' | mail -s 'Erreur R Sync!' esox
  18.        fi
  19. else
  20.        echo 'Le HDD e-sata n a pas pu être monté !' | mail -s 'Erreur Backup!' esox
  21. fi


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 02-09-2008 à 11:05:13  profilanswer
 

n°1071126
Nis+
Posté le 02-09-2008 à 12:24:02  profilanswer
 

Salut,
 
Je pense qu'il faut sortir la commande screen du script et l'utiliser de cette facon :

Code :
  1. screen -S backup_esata -d -R nom_du_fichier_script


 
quitte à remettre cette commande dans un autre script.
 
 :hello:


---------------
Mes Galeries|Mes Vidéos
n°1071215
esox_ch
Posté le 02-09-2008 à 15:39:47  profilanswer
 

Salut, j'ai ai pensé mais j'aurais préféré ne pas devoir créer un fichier avec juste cette ligne dedans, qui appellerait celui plus "complexe" ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1071236
zeblods
Posté le 02-09-2008 à 16:42:24  profilanswer
 

esox_ch a écrit :

Salut, j'ai ai pensé mais j'aurais préféré ne pas devoir créer un fichier avec juste cette ligne dedans, qui appellerait celui plus "complexe" ..


Dans ce cas, tu fais un script qui :
- écrit dans un fichier l'exacte contenu de ton scripte actuel et qui l'enregistre dans /tmp (une simple redirection de flux avec des echo et le tour est joué)
- donne des droits d'exécution a ce fichier
- exécute ce fichier dans un screen
- supprime ce fichier à la fin de l'exécution.

 

Si tu ne veux pas faire plusieurs scriptes, je ne voie que cette solution.


Message édité par zeblods le 02-09-2008 à 16:42:39
n°1071239
Nis+
Posté le 02-09-2008 à 17:03:08  profilanswer
 

Alors peut être en faisant quelque chose comme ca :
 

Code :
  1. #!/bin/bash
  2.  
  3. screen -S backup_esata -d -R /bin/bash -c "mount /media/esata 2> /dev/null;\
  4. r=$?;\
  5. if [ $r -eq 0 ] || [ $r -eq 32 ]; then \
  6.        echo \"--- Rsync started at \"`date '+%H:%M:%S'`;\
  7.        rsync --progress -ac --exclude-from '/media/esata/excluded_rsync_dir.txt' / /media/esata;\
  8.        echo \"--- And ended at \"`date '+%H:%M:%S'`;\
  9.        if [ $? -eq 0 ]; then \
  10.                umount /media/esata && eject /dev/sdg && hdparm -Y /dev/sdg;\
  11.                echo \"--- HDD umounted at \"`date '+%H:%M:%S'`;\
  12.        else\
  13.                echo 'Il y a eu une erreur Rsync!' | mail -s 'Erreur R Sync!' esox;\
  14.        fi\
  15. else\
  16.        echo 'Le HDD e-sata n a pas pu être monté !' | mail -s 'Erreur Backup!' esox;\
  17. fi"


 
Mais je suis pas sûr que ca fonctionne. Avec 2 ls de suite, ca a l'air de marcher mais bon...
(J'ai peut être pas échappé tout les caractères qui doivent l'être)


Message édité par Nis+ le 02-09-2008 à 17:06:26

---------------
Mes Galeries|Mes Vidéos
n°1071827
esox_ch
Posté le 04-09-2008 à 22:35:59  profilanswer
 

J'ai finalement opté pour une solution plus simple : Coller la ligne du screen directement dans un script init.d qui s'exécute au boot (de toutes façons c'est toujours là que ça va être utilisé).
 
Cependant j'ai un soucis : Aussitôt que le script arrive à la fin, le screen se termine (et donc je ne peux plus m'y connecter). Il y a une manière de le "laisser tourner" ? Histoire que même si je m'y connecte 2h après la fin du script je puisse voir tout le ce qui a été fait?
 
Merci


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1071857
zeblods
Posté le 04-09-2008 à 23:28:00  profilanswer
 

esox_ch a écrit :

J'ai finalement opté pour une solution plus simple : Coller la ligne du screen directement dans un script init.d qui s'exécute au boot (de toutes façons c'est toujours là que ça va être utilisé).
 
Cependant j'ai un soucis : Aussitôt que le script arrive à la fin, le screen se termine (et donc je ne peux plus m'y connecter). Il y a une manière de le "laisser tourner" ? Histoire que même si je m'y connecte 2h après la fin du script je puisse voir tout le ce qui a été fait?
 
Merci


Le plus simple ne serait pas de tout mettre dans un fichier de log ?

n°1071931
esox_ch
Posté le 05-09-2008 à 11:10:04  profilanswer
 

Bêtement, j'y avais pas pensé.  
J'ai fait comme tu as dit,
 
Merci beaucoup


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  Lancer suite de commande automatiquement dans screen

 

Sujets relatifs
Lancer un script shell dans un programme cComment faire une recherche inversée en ligne de commande ?
xev, en ligne de commande ?Téléchargement d'une page web avec ses objets en ligne de commande
Aspire one ne veut plus me lancer msn ...(sous linpus linux )[Unix] commande pour obtenir les propriétés d'un CD ou DVD
Impossible de lancer openarenaExclure un répertoire dans une commande rm
gros soucis mdadm ... (suite ajout d'un disque dur)Configuration d'un Dual Screen avec une nvidia sous Debian
Plus de sujets relatifs à : Lancer suite de commande automatiquement dans screen


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR