Enchainement de commande ssh après deconnexion

Bonjour à tous, voila je me tourne vers vous, car je souhaite exécuter plusieurs commandes l’une après l’autre, tout en me déconnectant de la console ssh en toute sécurité.

Je m’explique, je dois faire du déplacement de fichier d’une machine A vers une machine B (en local). Mais le problème, c’est que ce sont des fichiers assez volumineux et cela prend plusieurs heures (quelques fois).

Je cherche une commande du genre
commande 1 ;commande 2;commande 3;commande 4; halt
le “;” est un exemple j’aurai pus prendre aussi “&&”.

Donc je cherche a exécuter plusieurs commandes l’une derrière l’autre, tout en me déconnectant de la console ssh sans risque que le script s’arrete après déconnexion et continue ce que je lui est demandé.

Car à l’heure actuelle ,si je dois faire un transfers et que cela me prenne 5h.
Et ben je suis obligé de laisser une console ssh ouvert (pour effectuer les commandes l’une derrières l’autre) et de plus je suis obligé de laisser mon pc allumé, car ce sont des machines que je contrôle à distance.

Car si je lance les commandes suivantes, ou plutôt les scripts (je vais en parler un peu plus bas)
"./script 1.sh;./script 2.sh;./script 3.sh;./script 4.sh; etc…" si je me déconnecte, il ne fera que la premier commande et pas les autres.

Je souligne aussi que la plupart des commande que je rentre , ce sont des petits script en .sh que j’ai créé et ceux ci ont tous un screen.

J’ai cherché sur le net, et j’entends souvent parler de cette commande “nohup”, mais chez moi c’est sans succés et de plus, j’ai l’impression qu’un “screen” ne fonctionne pas dans un “nohup”

De plus je ne sais pas si c’est possible de (attention :)) un “screen” dans une “screen”

Voila j’espère que c’est assez clair et pas trop brouillon.
Si vous avez des questions, je suis là pour apporté plus de réponse.

Normalement lorsque tu veux liberer le terminal d’une commande lancée, tu mets le signe “&” à la fin de ta commande et ça va la basculer en tâche de fond, suite à quoi tu peux fermer ton terminal, mais je ne sais pas si ça marche aussi avec du ssh, et puis de toute façon tant que ton script n’aura pas terminé sa tache la connexion ssh sera forcément présente…

Heu…

Tu peux lancer screen, ça t’ouvre un screen avec un interpréteur de commande. Tu tapes directement tes commandes dans l’interpréteur et tu tapes “Entrée” pour les exécuter, comme ton interpréteur de commandes normal, quoi.

Tu veux dire qu’il font tous appel à une commande screen ? Il y a un intérêt particulier ?
Parce que ça peut poser un peu problème, tout comme

Oui, pas de problème à lancer un screen dans un screen. C’est juste un peu compliqué d’envoyer les commandes screen dans les sous-screens.
Par exemple, si tu lances screen et que tu lances screen dedans, pour détacher ce sous-screen, tu doit taper “Ctrl+a, a, d” au lieu de “Ctrl+a,d”.
Si tu ne veux pas te compliquer la vie, limite toi, tant que possible, à un seul niveau.

Je comprend pas vraiment ton soucis, tu as toutes les bonne infos pour arrivé a tes fins.
NOHUP te permet de lancer un process qui vas ignorer le signal de fermeture … pourquoi dis tu qu’il ne fonctionne pas chez toi ?
Screen permet justement de se déconnecter d’une session ssh/shell sans interrompre les programmes en cours …
Qu’es qui te fait penser que ça ne fonctionne pas correctement ?

Merci à tous pour vous réponse.
Je rajoute un peu plus d’info, des machines ,script, etc…

_Donc j’ai un script qui me permet de récupérer des données de mon serveur dédié (machine A), vers un PC (machine B)
_Puis un script qui renvoie ses données (de la machine B vers la machine C (qui est un nas)

Donc toutes les commandes se font sur la machine B, auquelle je prend le controle a distance depuis SSH, cela donne ça

“root@DLL:~# ./script_A_vers_B.sh ; ./script_B_vers_C.sh”

_dans le script “script_A_vers_B.sh"
voici la commande
"screen -S SDJD rsync -arvP -e “ssh -p xxx” root@xxx.xxx.xxx.xxx:/home/JD/* /home/JD”

dans le script “script_B_vers_C.sh"
voici la commande
"screen -S JD rsync -arvP /home/JD/* root@xxx.xxx.xxx.xxx:/media/hdd1”

Dite moi si c’est clair, bon je ne peux pas donnée l’IP ;p

Pour GOGI: je vais essayer le signe “&”, à la place de ";"
Pour Almtesh: je vais essayer un "screen dans un screen"
Pour Mimoza: alors j’ai fais un test avec “nohup”

j’ai créer 2 script, qui télécharger 2 fichiers complétement différent (en local).

dans le script 1.sh
"screen -S ww1 wget -c http://xxx.xxx.xxx.xxx/PROG/fichier_1.7z
dans le script 2.sh
"screen -S ww1 wget -c http://xxx.xxx.xxx.xxx/PROG/fichier_2.7z

ensuite j’ai fais un nohup ./1;sh && nohup ./2.sh

j’ai eu le message d’erreur suivant

[quote=""]root@DEBIANVM:~# nohup ./1.sh && nohup ./2.sh
[1] 1997
nohup: nohup: ignoring input and appending output to nohup.out' ignoring input and appending output tonohup.out’
[1]+ Exit 1 nohup ./1.sh
[/quote]

lorsque j’ai fais un nano de “nohup.out”

[quote]Must be connected to a terminal.
Must be connected to a terminal.[/quote]

Pas de fichier télécharger ,par contre si j’enlève les screens de mes 2 fichiers, les scripts fonctionnent parfaitement.
Mais comment on récupère un console d’un "nohup"
Je sais qu’avec “screen” on fait un “screen -r ou l” ?

Bonjour,

Passer les transferts de fichier rsync dans un tunnel SSH ou un rsync avec uneProxyCommand ne serait pas approprié plutôt que de copier temporairement les fichiers en local ?
Voir par exemple : http://superuser.com/questions/964244/rsyncing-directories-through-ssh-tunnel

A+

Alors j’ai essayer le “&” et le “&&” cela ne marche pas.
Merci “jelopo”, mais justement, je ne veux pas faire car les données sont variables. Et puis une fois que le PC B a récupérer les données du PC A .

Je supprime les données du PC A.
Puis une fois les données du PC B transmis au PC C, je dois supprimer les données du PC B.

Ta problématique est donc de faire un move de répertoires du serveur dédié vers un NAS, c’est bien ça ?

un “move” je préfère évité, car lors du transferts s’il y a une coupure réseaux, est ce que le PC va comprendre la coupure ou non.

J’utilise généralement un “copy”, mais tu peux détailler ,je suis curieux :slight_smile:

Utilise rsync avec cette option : --remove-source-files. C’est un peu un move avec la sécurité de rsync.

Ok je vais essayer je vous tient au courant

merci “jelopo”, la commande fonctionne parfaitement, et sinon pour mon cas, enchainement de commande